前言
ETH在升级后需要同时同步两个层。一个是执行层一个是信标层。
在尝试了很多rpc,包含试了rpc负载均衡之后,最终还是决定自己起一条本地的来避免限速的情况。
配置
配置采用的是虚拟化的一台ubuntu服务器大致如下:
- cpu 13490F
- 内存 22G
- 硬盘 4T
- 宽带 中国移动 200M下行 30M上行
注意 这台虚拟机上还运行了一个bsc的fast node,属于是极低成本了。这也侧面证实了evm对资源的需求极低。
配置信标链
这里使用了prysm
cd / #进入根目录
mkdir eth #创建eth文件夹
cd eth
mkdir consensus
mkdir execution
cd consensus
mkdir prysm && cd prysm
curl https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh --output prysm.sh && chmod +x prysm.sh
./prysm.sh beacon-chain generate-auth-secret #这里生成的是jwt.hex加密文件,用来充当和执行层 之间的密钥
启动信标链客户端
screen -S prysm #创建prysm启动窗口
./prysm.sh beacon-chain --execution-endpoint=http://localhost:8551 --jwt-secret=/eth/consensus/prysm/jwt.hex
加速信标链同步的方法,prysm支持从最近的checkpoint进行同步,这也的话就不验证你的节点之前的内容,我们不质押只是为了使用rpc,采用最快的方式就行。参考
./prysm.sh beacon-chain --execution-endpoint=http://localhost:8551 --jwt-secret=/eth/consensus/prysm/jwt.hex --checkpoint-sync-url=<checkpoint url> --genesis-beacon-api-url=<checkpoint url>
社区维护的checkpoint url 可以在这里找到-->check point
必须使用加速的方法,不然国内的网络同步太慢了,如果你的checkpoint都配置正确的话,同步到checkpoint大概只需要5min左右。
可以多尝试几个url,如果10min还没有反应的话,可以删除当前目录下的dist文件夹,重新启动prysm脚本测试下。
配置geth
执行层还是使用传统的geth
去这里下载对应你的版本的geth-->download
启动命令
./geth --cache 10240 --datadir ./node \
--http --http.addr 0.0.0.0 --http.port 8547 --http.corsdomain "*" --http.api "eth,net,web3,txpool" \
--ws --ws.port 8548 --ws.addr 0.0.0.0 --ws.origins '*' \
--authrpc.addr localhost --authrpc.port 8551 --authrpc.vhosts localhost \
--maxpeers=300 \
--syncmode=snap\
--authrpc.jwtsecret ../consensus/prysm/jwt.hex \
--state.scheme=path
注意这里使用的http.port我做了修改,因为和bsc启动的冲突了。同时--authrpc.port 8551就代表了和信标链通信的端口,--authrpc.jwtsecret则需要和信标链使用同一个jwt.hex文件。
节点同步
如果你全部配置完成,那么你可以看到geth的输出日志正在追块了
国内的对等节点并不多,只有10个左右,但是同步速度并不慢,下载节点的速度可以达到23MB/s,这基本是我的带宽的极限了。
在同步完成后,再启动信标链可以去掉checkpoint参数了,直接执行
./prysm.sh beacon-chain --execution-endpoint=http://localhost:8551 --jwt-secret=./jwt.hex
补充
经过大约1天的时间,完成了追块,消耗硬盘资源大约1.1T,消耗内存大约10G。这样看来还能扣扣硬盘到2T。