Geth Clique私有链交易滞留在pending状态未广播问题问询
Geth Clique私有链交易广播与区块同步异常问题
部署架构
- 三台独立虚拟机通过Docker部署基于Clique共识的Geth私有链,包含三类节点:
- 矿工节点:负责区块生成
- RPC节点:对外接收RPC请求,与矿工节点无直接网络连接
- 引导节点:作为中转节点,实现矿工节点与RPC节点的网络连通
问题现象
- 提交的交易随机进入pending状态且无法在链内广播,重启Geth节点无法解决;gas与nonce配置均无异常
- 手动执行
admin.addPeer()命令让RPC节点与矿工节点直连后,交易可正常广播并被矿工处理,问题立即消失 - 区块可在链内完成同步,但RPC节点偶尔出现同步滞后(例如矿工已出块至高度100,RPC节点仅同步至80且
eth.syncing返回false),滞后的区块最终能自动追上 - 节点txpool状态:RPC节点存在pending交易,矿工节点与引导节点txpool为空
系统信息
- Geth版本:Geth/v1.11.6
- 操作系统:Ubuntu 22.04
节点启动命令
矿工节点
--nodekey=miner.key --bootnodes="enode://${BOOTNODE_KEY}@${BOOTNODE_IP}:${BOOTNODE_PORT}" --syncmode=full --gcmode=archive --miner.etherbase=${ADDR} --mine --miner.threads=1 --networkid=${NETWORK_ID} --unlock=${ADDR} --password=password --allow-insecure-unlock --verbosity=5
RPC节点
--nodekey=rpc.key --bootnodes="enode://${BOOTNODE_KEY}@${BOOTNODE_IP}:${BOOTNODE_PORT}" --syncmode=full --gcmode=archive --networkid=${NETWORK_ID} --http --http.vhosts="" --http.addr="0.0.0.0" --http.port=8545 --http.corsdomain=""
问题关联情况
该问题已在Geth官方代码仓库提交相关issue,且与另一已有issue的评论描述的问题场景高度相似
期望目标
实现交易在链内正常广播,并被矿工节点成功处理
内容的提问来源于stack exchange,提问作者abcuse1111
相关产品推荐
相关产品推荐

