我当前的版本是:
Geth
Version: 1.8.17-stable
Git Commit: 8bbe72075e4e16442c4e28d999edee12e294329e
Architecture: amd64
Protocol Versions: [63 62]
Network Id: 1
Go Version: go1.10.1
Operating System: linux
GOPATH=
GOROOT=/usr/lib/go-1.10
保持正常签名。
实际行为我当时正在运行一个由6个密封器组成的以太坊专用网络。
每个封口机由以下人员运行:
``` 目录= / home / poa command = / bin / bash -c'geth --datadir sealer4 / --syncmode'full'--port 30393 --rpc --rpcaddr'localhost'--rpcport 8600 --rpcapi ='net,web3,eth'- -networkid 30 --gasprice'1'-解锁'someaddress'--password sealer4 / password.txt --mine'
```
区块链运行了大约1-2个月。
今天,我发现所有节点都出现了问题。每个节点都发出消息“最近签名,必须等待其他人签名”
我检查了日志,每隔1小时就发现此消息,没有更多信息,这些节点未进行挖掘:
重新生成的本地交易日记帐交易= 0个帐户= 0 重新生成的本地交易日记帐交易= 0个帐户= 0 重新生成的本地交易日记帐交易= 0个帐户= 0 重新生成的本地交易日记帐交易= 0个帐户= 0
使用6个封闭器测试相同的问题,我重新启动了每个节点,但现在我陷入了困境
INFO [01-07 | 18:17:30.645] Etherbase自动配置的地址= 0x5Bc69DC4dba04b6955aC94BbdF129C3ce2d20D34 INFO [01-07 | 18:17:30.645]提交新的采矿工作编号= 488677 sealhash = a506ec…8cb403叔叔= 0 txs = 0气体= 0费用= 0过去了= 133.76µs INFO [01-07 | 18:17:30.645]最近签署,必须等待其他人
第一件事很奇怪,就是某些节点卡在488677上,而另一些节点卡在488676上,此问题的报告https://github.com/ethereum/go-ethereum/issues/16406行为与用户@lyhbarry相同
示例: 签名者1
签名者2
请注意,没有任何待处理的投票
所以,现在,我关闭并重新启动每个节点,发现:
INFO [01-07|18:41:56.134] Signed recently, must wait for others
INFO [01-07|19:41:42.125] Regenerated local transaction journal transactions=0 accounts=0
INFO [01-07|18:41:56.134] Signed recently, must wait for others
因此,同步失败,但是我也可以再次开始签名,因为每个节点都在等待其他节点,这意味着网络没有用?
@tudyzhb在该问题上的评论提到:
请参阅v1.8.11的集团密封,我认为当发生转弯/转弯密封失效时,没有有效的机制可以重试密封。因此,我们的开发人员网络毫无用处。
出现此问题后,我看一下日志,每个签名者都有以下错误消息:
Synchronisation failed, dropping peer peer=7875a002affc775b err="retrieved hash chain is invalid"
INFO [01-02|16:42:10.902] Signed recently, must wait for others
WARN [01-02|16:42:11.960] Synchronisation failed, dropping peer peer=7875a002affc775b err="retrieved hash chain is invalid"
INFO [01-02|16:42:12.128] Imported new chain segment blocks=1 txs=0 mgas=0.000 elapsed=540.282µs mgasps=0.000 number=488116 hash=269920…afd3c7 cache=5.99kB
INFO [01-02|16:42:12.129] Commit new mining work number=488117 sealhash=f7b00c…787d5c uncles=2 txs=0 gas=0 fees=0 elapsed=307.314µs
INFO [01-02|16:42:20.929] Successfully sealed new block number=488117 sealhash=f7b00c…787d5c hash=f17438…93ffe3 elapsed=8.800s
INFO [01-02|16:42:20.929] mined potential block number=488117 hash=f17438…93ffe3
INFO [01-02|16:42:20.930] Commit new mining work number=488118 sealhash=b09b33…1526ba uncles=2 txs=0 gas=0 fees=0 elapsed=520.754µs
INFO [01-02|16:42:20.930] Signed recently, must wait for others
INFO [01-02|16:42:31.679] Imported new chain segment blocks=1 txs=0 mgas=0.000 elapsed=2.253ms mgasps=0.000 number=488118 hash=763a32…a579f5 cache=5.99kB
INFO [01-02|16:42:31.680] block reached canonical chain number=488111 hash=3d44dc…df0be5
INFO [01-02|16:42:31.680] Commit new mining work number=488119 sealhash=c8a5e7…db78a1 uncles=2 txs=0 gas=0 fees=0 elapsed=214.155µs
INFO [01-02|16:42:31.680] Signed recently, must wait for others
INFO [01-02|16:42:40.901] Imported new chain segment blocks=1 txs=0 mgas=0.000 elapsed=808.903µs mgasps=0.000 number=488119 hash=accc3f…44bc4c cache=5.99kB
INFO [01-02|16:42:40.901] Commit new mining work number=488120 sealhash=f73978…c03fa7 uncles=2 txs=0 gas=0 fees=0 elapsed=275.72µs
INFO [01-02|16:42:40.901] Signed recently, must wait for others
WARN [01-02|16:42:41.961] Synchronisation failed, dropping peer peer=7875a002affc775b err="retrieved hash chain is invalid"
我还看到了一些:
INFO [01-02|16:58:10.902] block lost number=488205 hash=1fb1c5…a41a42
有关哈希链的错误只是一个警告,因此该节点一直在挖掘,直到1月2日,然后我在6个节点中的每个节点上看到了
我一直在寻找关于此错误的很多问题,最相似的是我在此处发布的问题,但尚未解决。
workarrounds的大多数问题似乎是重新启动,但是在这种情况下,链似乎处于不一致状态,并且节点总是在等待其他节点
所以
这是其他相关问题:
https://github.com/ethereum/go-ethereum/issues/16444(相同的问题,但我的快照中没有待处理的投票)
https://github.com/ethereum/go-ethereum/issues/14381#