Docker-compsoe部署prysm-beacon-chain + geth服务(geth版本v1.14.0)
1、创建目录结构
~ # mkdir -p /data/docker-compose/eth
~ # cd /data/docker-compose/eth
/data/docker-compose/eth# mkdir beacondata eth ethdata prysm
2、编写prysm-beacon-chain Dockerfile和启动脚本文件
/data/docker-compose/eth# vim Dockerfile
/data/docker-compose/eth# vim beacon-start.sh
#!/bin/bash/usr/local/bin/beacon-chain generate-auth-secret/usr/local/bin/beacon-chain \--accept-terms-of-use \--execution-endpoint=http://eth:8545 \--jwt-secret=/data/prysm/jwt.hex \--checkpoint-sync-url=https://beaconstate.info \--genesis-beacon-api-url=https://beaconstate.info \--datadir /data/beacondata
# 使用 Ubuntu 20.04 作为基础镜像
FROM ubuntu:20.04# 安装必要的系统库和工具
RUN apt-get update && \apt-get install -y curl && \apt-get clean# 创建存储数据的目录
RUN mkdir -p /data/prysm
WORKDIR /data/prysm# 下载 Prysm beacon chain 二进制文件并将其复制到 /usr/local/bin/beacon-chain
RUN curl -Lo /usr/local/bin/beacon-chain https://github.com/prysmaticlabs/prysm/releases/download/v5.0.3/beacon-chain-v5.0.3-linux-amd64 && \chmod +x /usr/local/bin/beacon-chain && \ls -l /usr/local/bin/beacon-chain#拷贝启动脚本并赋予执行权限
COPY beacon-start.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/beacon-start.sh# 设定容器启动时运行的命令
ENTRYPOINT ["/usr/local/bin/beacon-start.sh"]
3、编写eth对应的Dockerfile
/data/docker-compose/eth#vim eth/Dockerfile
打eth镜像Dockerfile文件
# 使用 Ubuntu 20.04 作为基础镜像
FROM ubuntu:20.04# 安装必要的系统库和工具
RUN apt-get update && \apt-get install -y curl && \apt-get clean# 创建存储数据的目录
RUN mkdir -p /data/ethdata
WORKDIR /data/ethdata# 下载 eth 二进制文件并将其解压到 /usr/local/bin/geth
RUN curl -Lo /tmp/geth.tar.gz https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.14.0-87246f3c.tar.gz && \tar -xzf /tmp/geth.tar.gz -C /tmp/ && \mv /tmp/geth-linux-amd64-1.14.0-87246f3c/geth /usr/local/bin/ && \chmod +x /usr/local/bin/geth && \rm /tmp/geth.tar.gz# 设定容器启动时运行的命令
ENTRYPOINT ["/usr/local/bin/geth"]
4、编写docker-compose.yaml文件
version: '3.8'services:prysm-beacon-chain:build: context: .dockerfile: Dockerfilecontainer_name: prysm-beacon-chainvolumes:- ./prysm:/data/prysm- ./beacondata:/data/beacondataports:- "4000:4000"networks:- eth_networkcommand: >sh -c "/usr/local/bin/beacon-start.sh"eth:build: context: ./ethdockerfile: Dockerfilecontainer_name: ethvolumes:- ./prysm/:/data/prysm/:ro- ./ethdata:/data/ethdataports:- "3545:3545"- "8545:8545" networks:- eth_networkcommand: --cache 4096 --http --http.api web3,eth,net,personal,txpool,engine,admin --http.addr 0.0.0.0 --http.port 3545 --datadir /data/ethdata --allow-insecure-unlock --rpc.allow-unprotected-txs --authrpc.addr 0.0.0.0 --authrpc.port 8545 --authrpc.vhosts localhost --maxpeers=300 --authrpc.jwtsecret /data/prysm/jwt.hex
networks:eth_network:driver: bridge
5、启动容器
/data/docker-compose/eth# docker-compose up -d
[+] Building 1.1s (12/12) FINISHED => [internal] load build definition from Dockerfile 0.0s=> => transferring dockerfile: 1.13kB 0.0s=> [internal] load metadata for docker.io/library/ubuntu:20.04 0.9s=> [internal] load .dockerignore 0.0s=> => transferring context: 2B 0.0s=> [1/7] FROM docker.io/library/ubuntu:20.04@sha256:874aca52f79ae5f8258faff03e10ce99ae836f6e7d2df6ecd3da5c1cad3a912b 0.0s=> [internal] load build context 0.0s=> => transferring context: 388B 0.0s=> CACHED [2/7] RUN apt-get update && apt-get install -y curl && apt-get clean 0.0s=> CACHED [3/7] RUN mkdir -p /data/prysm 0.0s=> CACHED [4/7] WORKDIR /data/prysm 0.0s=> CACHED [5/7] RUN curl -Lo /usr/local/bin/beacon-chain https://github.com/prysmaticlabs/prysm/releases/download/v5.0.3/beacon-chain-v5.0.3-linux-amd64 && chmod +x /usr/local/bin/beacon-chain && ls -l /usr/local/bin/beaco 0.0s=> [6/7] COPY beacon-start.sh /usr/local/bin/ 0.0s=> [7/7] RUN chmod +x /usr/local/bin/beacon-start.sh 0.2s=> exporting to image 0.0s=> => exporting layers 0.0s=> => writing image sha256:55bbc4ebf584ed73c90d2e57dc5eaff32f3152f238e6c566af48fcc14463797d 0.0s=> => naming to docker.io/library/eth_prysm-beacon-chain 0.0s
[+] Running 3/3⠿ Network eth_eth_network Created 0.1s⠿ Container eth Started 0.3s⠿ Container prysm-beacon-chain Started
6、验证
1)查询容器运行情况
/data/docker-compose/eth# docker-compose ps
NAME COMMAND SERVICE STATUS PORTS
eth "/usr/local/bin/geth…" eth running 0.0.0.0:3545->3545/tcp, 0.0.0.0:8545->8545/tcp, :::3545->3545/tcp, :::8545->8545/tcp
prysm-beacon-chain "/usr/local/bin/beac…" prysm-beacon-chain running 0.0.0.0:4000->4000/tcp, :::4000->4000/tcp
2)查询目录结构图
/data/docker-compose/eth# tree -L 2
.
├── beacondata
│ ├── beaconchaindata
│ ├── blobs
│ ├── metaData
│ └── tosaccepted
├── beacon-start.sh
├── docker-compose.yaml
├── Dockerfile
├── eth
│ └── Dockerfile
├── ethdata
│ ├── geth
│ ├── geth.ipc
│ └── keystore
└── prysm└── jwt.hex8 directories, 8 files
4)进入eth控制台查询同步情况
/data/docker-compose/eth# docker exec -it eth /bin/bash
root@44f580801f7c:/data/ethdata# geth attach /data/ethdata/geth.ipc
Welcome to the Geth JavaScript console!instance: Geth/v1.14.0-stable-87246f3c/linux-amd64/go1.22.2
at block: 0 (Thu Jan 01 1970 00:00:00 GMT+0000 (UTC))datadir: /data/ethdatamodules: admin:1.0 debug:1.0 engine:1.0 eth:1.0 miner:1.0 net:1.0 rpc:1.0 txpool:1.0 web3:1.0To exit, press ctrl-d or type exit
> eth.blockNumber
0
> eth.syncing
{currentBlock: 0,healedBytecodeBytes: 0,healedBytecodes: 0,healedTrienodeBytes: 0,healedTrienodes: 0,healingBytecode: 0,healingTrienodes: 0,highestBlock: 0,startingBlock: 0,syncedAccountBytes: 0,syncedAccounts: 0,syncedBytecodeBytes: 0,syncedBytecodes: 0,syncedStorage: 0,syncedStorageBytes: 0,txIndexFinishedBlocks: 0,txIndexRemainingBlocks: 1
}
5)日志查询
eth容器的日志查询
root@iZt4ndiwb4prb26wx84bsuZ:/data/docker-compose/eth# docker logs -f --tail 10 eth
INFO [05-07|07:08:58.617] Looking for peers peercount=0 tried=111 static=0
INFO [05-07|07:09:08.638] Looking for peers peercount=0 tried=155 static=0
WARN [05-07|07:09:13.459] Post-merge network, but no beacon client seen. Please launch one to follow the chain!
INFO [05-07|07:09:18.754] Looking for peers peercount=1 tried=217 static=0
INFO [05-07|07:09:28.754] Looking for peers peercount=2 tried=86 static=0
INFO [05-07|07:09:38.757] Looking for peers peercount=2 tried=181 static=0
INFO [05-07|07:09:48.764] Looking for peers peercount=1 tried=192 static=0
INFO [05-07|07:09:58.801] Looking for peers peercount=1 tried=138 static=0
INFO [05-07|07:10:08.878] Looking for peers peercount=1 tried=171 static=0
INFO [05-07|07:10:18.956] Looking for peers peercount=2 tried=55 static=0
INFO [05-07|07:10:39.090] Looking for peers peercount=2 tried=124 static=0
INFO [05-07|07:10:49.112] Looking for peers peercount=2 tried=234 static=0
INFO [05-07|07:10:59.149] Looking for peers peercount=2 tried=204 static=0
beacon-chain日志查询
/data/docker-compose/eth# docker logs -f --tail 10 prysm-beacon-chain
time="2024-05-07 07:11:09" level=error msg="Could not connect to execution client endpoint" error="403 Forbidden: invalid host specified
: 403 Forbidden: invalid host specified
" prefix=execution
time="2024-05-07 07:11:14" level=info msg="Processing blocks" batchSize=63 blocksPerSecond=3.1 estimatedTimeRemaining=1m39s latestProcessedSlot/currentSlot="9019841/9020154" peers=57 prefix=initial-sync startingFrom=0xbacdf551...
time="2024-05-07 07:11:23" level=warning msg="Skip processing batched blocks" error="could not process block in batch: got an unexpected error in JSON-RPC response: 403 Forbidden: invalid host specified
: received an undefined execution engine error" prefix=initial-sync
time="2024-05-07 07:11:23" level=warning msg="Skip processing batched blocks" error="beacon node doesn't have a parent in db with root: 0x7b382457f4227a872fd1cd583cb3e676cf606c4f0fa661f2b7f3c968f6543810 (in processBatchedBlocks, slot=9019905)" prefix=initial-sync
time="2024-05-07 07:11:23" level=warning msg="Skip processing batched blocks" error="beacon node doesn't have a parent in db with root: 0xcbd1a46c0325b4cb82b2f76f4cb5c4772de1d2769fd1a5fbc41c3571bb9b991e (in processBatchedBlocks, slot=9019969)" prefix=initial-sync
time="2024-05-07 07:11:23" level=warning msg="Skip processing batched blocks" error="beacon node doesn't have a parent in db with root: 0x08eff305d908b90e38b4f4ef82d77b2c23ceadf6a5b2546da144a0701e54f60b (in processBatchedBlocks, slot=9020033)" prefix=initial-sync
time="2024-05-07 07:11:40" level=info msg="Peer summary" activePeers=49 inbound=0 outbound=49 prefix=p2p
相关文章:
Docker-compsoe部署prysm-beacon-chain + geth服务(geth版本v1.14.0)
1、创建目录结构 ~ # mkdir -p /data/docker-compose/eth ~ # cd /data/docker-compose/eth /data/docker-compose/eth# mkdir beacondata eth ethdata prysm2、编写prysm-beacon-chain Dockerfile和启动脚本文件 /data/docker-compose/eth# vim Dockerfile /data/docker-…...
前端人员如何理解进程和线程
进程和线程的概念: 进程和线程本质都是cpu工作过程的时间片。 进程可以理解为cpu在运行指令即加载保存上下文所要用的时间。也可以理解为一个应用程序运行的实例。 线程是进程中更小的单位,描述一段指令所需要的时间。 进程是资源分配的最小单位…...
Linux下网络命令
目录 需求1-查看本机是否存在22端口解法1解法2解法3 需求2-查看其他主机是否存在22端口解法1解法2解法3 需求3-查看TCP连接解法1/2 需求4-统计80端口tcp连接次数解法 需求5-查看总体网络速度解法 需求6-查看进程流量解法 需求7-dns解法 需求8-traceroute到baidu解法 需求9-查看…...
Php swoole和mqtt
在 PHP 中使用 Swoole 处理 MQTT 订阅消息是一种高效的方式,可以充分利用 Swoole 协程的非阻塞特性和高性能 I/O 处理能力。下面是一个示例代码,演示了如何使用 Swoole 的 MQTT 客户端来订阅消息,并加以详细说明。 1. 安装 Swoole 首先&…...
Spring STOMP-连接到消息代理
STOMP 代理中继维护一个与消息代理的“系统”TCP 连接。这个连接仅用于来自服务器端应用程序的消息,不用于接收消息。您可以为此连接配置STOMP凭据(即STOMP帧的login和passcode头部)。这在XML命名空间和Java配置中都以systemLogin和systemPas…...
Excel中的`MMULT`函数
Excel中的MMULT函数是一个用于执行矩阵乘法运算的函数。矩阵乘法是线性代数中的一个基本运算,它允许我们计算两个矩阵的乘积,得到一个新的矩阵。与普通的标量乘法不同,矩阵乘法涉及到行与列的对应元素相乘然后求和的过程。MMULT函数在进行数据…...
孩子多大可以接触python?学习python的好处
孩子接触Python的年龄并没有明确的界限,一般来说,6岁以上的孩子可以开始学习Python编程。虽然Python是一门高级编程语言,但它的语法简单易懂,适合初学者入门。通过学习Python编程,孩子可以培养逻辑思维、创造力和解决问…...
四川汇昌联信:拼多多网点怎么开?大概需要多少钱?
想要开一家拼多多网点,你肯定很关心需要准备多少资金。下面,我们就来详细解答这个问题,并从多个角度分析开设网点的要点。 一、 开设拼多多网点,首要任务是确定启动资金。根据不同的经营模式和地区差异,成本会有所不同…...
ROS 2边学边练(43)-- 利用GTest写一个基本测试(C++)
前言 在ROS(Robot Operating System)中,gtest(Google Test)是一个广泛使用的C测试框架,用于编写和执行单元测试。这些测试可以验证ROS节点、服务和消息等的正确性和性能。 如果我们需要在写的包中添加测试&…...
3.整数运算
系列文章目录 信息的表示和处理 : Information Storage(信息存储)Integer Representation(整数表示)Integer Arithmetic(整数运算)Floating Point(浮点数) 文章目录 系列文章目录前…...
uri.getQueryParameters(name)返回一个列表(List)
uri.getQueryParameters(name)返回一个列表(List)而不是单个值的原因在于URI(统一资源标识符)中查询参数(query parameters)的设计允许同一个名称(name)对应多个值。这意味着一个查询…...
鸿蒙ArkUI开发:常用布局【主轴】
ArkUI中常用布局容器 线性布局(Row/Column) 线性布局的子元素在线性方向上(水平方向和垂直方向)依次排列线性布局容器包括[Row]和[Column]。Column容器内子元素按照垂直方向排列,Row容器内子元素按照水平方向排列开发…...
Spring Security 入门 2
1.项目实战 就以RuoYi-Vue 为例吧,主要以下几点原因: 基于 Spring Security 实现。 基于 RBAC 权限模型,并且支持动态的权限配置。 基于 Redis 服务,实现登录用户的信息缓存。 前后端分离。同时前端采用 Vue ,相对来…...
C++初阶学习第七弹——探索STL奥秘(二)——string的模拟实现
标准库中的string:C初阶学习第六弹——string(1)——标准库中的string类-CSDN博客 前言: 在前面我们已经学习了如何使用标准库中的string类,但作为一个合格的程序员,我们不仅要会用,还要知道如…...
5.nginx常用命令和日志定时切割
一. nginx常用的相关命令介绍 1.强制关闭nginx: ./nginx -s stop 2.优雅的关闭nginx: ./nginx -s quit 3.检查配置文件是否正确: ./nginx -t 4.查看nginx版本: ./nginx -v 5.查看nginx版本相关的配置环境信息:./nginx -V 6.nginx帮助信…...
Redis-详解(基础)
文章目录 什么是Redis?用Redis的特点?用Redis可以实现哪些功能?Redis的常用数据类型有哪些?Redis的常用框架有哪些?本篇小结 更多相关内容可查看 什么是Redis? Redis(Remote DictionaryServer)是一个开源…...
记录minio的bug(Object name contains unsupported characters.)
场景是我将后端服务从121.xxx.xxx.xxx服务器上转移到了另一台服务器10.xxx.xxx.xxx 但图片都还在121.xxx.xxx.xxx服务器上,同样我10.xxx.xxx.xxx也安装了minio并且我的后端服务配置的minio地址也是10.xxx.xxx.xxx 此时有一个业务通过minio客户端获取图片…...
【嵌入式开发 Linux 常用命令系列 7.6 -- sed 替换指定字符串】
请阅读【嵌入式开发学习必备专栏】 文章目录 sed 替换指定字符串 sed 替换指定字符串 背景: 找到当前目录下所有的.h 和 .c 文件 将他们中的字符 print_log替换为 demo_log 可以使用find命令结合sed命令在Linux环境下完成这项任务。下面是一个命令行示例ÿ…...
C++语言的字符数组
存放字符数据的数组是字符数组,字符数组中的一个元素存放一个字符。字符数组具有数组的共同属性。 1. 声明一个字符数组 char c[5]; 2. 字符数组赋值方式 (1)为数组元素逐一赋值 c[0]H c[1]E c[2]L c[3]L c[4]O (2&…...
24届电信红队实习生面经
sql注入的一些:原理、打的靶场的常见绕过、问了一些函数 (load_file、 outfile这些)、后利用 (mysql的udf提权的原理、条件、利用、其他像mssql这些数据库的提权手段、这些就没细问了, 就问有哪些方式; 问了有没有实战遇到mysql的…...
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...
协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...
