You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

以太坊节点同步卡在100%无法完成,寻求技术协助

以太坊节点同步进度100%但无法完成的排查方案

1. 确认Geth真实同步状态

Geth显示synced=100%却仍有ETA,大概率是在执行状态快照生成或后期收尾操作,并非完全同步。执行命令验证:

geth attach http://localhost:8545 --exec 'eth.syncing'

返回false表示执行层同步完成;若返回含currentBlock的对象,说明仍在同步流程中。

2. 修正Prysm执行端点的格式错误

你的Prysm启动命令中--execution-endpoint参数缺少://,会导致共识层无法连接执行层,这是常见的卡同步原因。正确命令:

./prysm.sh beacon-chain --execution-endpoint=http://localhost:8551/ --jwt-secret=/root/prysm/jwt.hex --suggested-fee-recipient=x0MyPK

3. 验证JWT密钥一致性

确保Geth和Prysm使用完全相同的JWT密钥文件:

  • 检查密钥文件存在性:
    ls -l /root/prysm/jwt.hex
    
  • 确认两个客户端指定的密钥路径完全一致,且进程拥有文件读取权限。

4. 切换Geth同步模式

Geth默认快速同步在网络差时易卡住,建议切换为更高效的快照同步(Geth 1.10.0+支持):

geth --http --http.api eth,net,engine,admin --authrpc.jwtsecret /root/prysm/jwt.hex --syncmode snap

5. 检查网络与节点连接

  • 查看Geth节点的peer数量,过少会拖慢同步:
    geth attach http://localhost:8545 --exec 'net.peerCount'
    
    若数量不足,确保TCP 30303端口对外开放,可手动添加官方节点提升连接数。
  • Prysm日志显示activePeers=40,这部分连接正常,重点排查执行层网络。

6. 清理损坏数据后重新同步

若以上步骤无效,可能是本地链数据损坏,清理后重新同步:

# 停止Geth进程
pkill geth
# 清理Geth数据目录(注意备份重要数据)
rm -rf /var/lib/goethereum/geth/chaindata
rm -rf /var/lib/goethereum/geth/triecache
# 用快照同步重启Geth
geth --http --http.api eth,net,engine,admin --authrpc.jwtsecret /root/prysm/jwt.hex --syncmode snap

日志补充说明

  • Geth的synced=100%但ETA未消失,是在处理状态数据,这一步耗时取决于磁盘IO性能,可能需要数小时。
  • Prysm日志显示正常同步区块,但必须等执行层完全同步后,整个节点才能进入正常运行状态。

内容的提问来源于stack exchange,提问作者Julien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 13:54:51