新的验证程序未同步块

问题描述

添加一个新的验证器,但同步块的过程效果不佳。新的验证器节点不会同步所有块,而只会同步第一个。查看日志,我看到此可疑日志:

[2020-10-13 14:00:22.158 DEBUG completer] Request missing predecessor: e867dffff247c79ccb919de3802fca1afa25b6e1886b55794ea33ffb44f02a7448cc8884bc2f907e429d9f62ecdc12e846075c416614ce2e5f7eeaea4b701a32

[2020-10-13 14:00:22.174 DEBUG completer] Drop duplicate block: c88c57c5984015e60c5a54b898f8d4b25a65f7c29a444822820c780c8a8aa04155df3fa664a38f4b7a2fb5d5a94ceb7c6ec26a9c6c4f4483221f455198814385 (block_num:1,state:26cf5049bdc3a25a85f8f8f1db69e141e5881b812be86babdbf35b2263bf56e3,prevIoUs_block_id:e867dffff247c79ccb919de3802fca1afa25b6e1886b55794ea33ffb44f02a7448cc8884bc2f907e429d9f62ecdc12e846075c416614ce2e5f7eeaea4b701a32)
[

似乎该区块已被删除。有人对为什么新的验证程序不同步所有块有任何想法吗?

PS:新验证器位于使用docker-compose的远程计算机上,但是即使新验证器与docker-compose设置在同一台计算机上,我也遇到相同的问题

解决方法

就我而言,我删除了该验证程序,并尝试启动一个新的验证程序(docker-compose down,然后再次docker-compose up)。它起作用了,但是得到了分叉分辨率(在验证器日志中,有记录说“正在为链头建立分叉分辨率...”。)

一旦在链设置的pbft.members中添加了新的验证者公钥,这个fork解析问题就解决了(我使用的是PBFT共识机制)。

由于某种原因,在具有PBFT共识机制的锯齿1.2.5中,如果添加一个新节点而不在pbft.members设置中添加它,则新节点可能会派生并同步除最后一个节点之外的所有块。