plugin icon indicating copy to clipboard operation
plugin copied to clipboard

联盟链共识中消息流程简化

Open andyYuanFZM opened this issue 5 years ago • 3 comments

联盟链采用了聚合签名的方案,简化共识过程中的消息交互。 流程如下:

  1. peer0发送proposal给peer1~peerN
  2. peer1--peerN进入到prevote阶段,对区块签名,发prevote给peer0.
  3. peer0收集prevote,聚合签名后回响应给peer1--peerN,这些节点验证签名通过后,再进入precommit阶段,发precommit消息给peer0
  4. peer0收集precommit消息,将precommit聚合签名后,发给peer0--peerN。 peer0--peerN收到聚合消息,并验证通过后,进入commit阶段。 目前的实现,简化了消息的流程,但是步骤3和4都要等到打包节点的响应,才能进入下一阶段,在节点数比较少的情况下,性能提升并不明显(曹平做过验证)。

所以讨论,简化prevote阶段的等待如下:

  1. peer0发送proposal给peer1~peerN
  2. peer1--peerN进入到prevote阶段,对区块签名,发prevote给peer0. 同时不等peer0响应,直接进入precommit阶段,构造precommit消息给peer0.
  3. peer0收集prevote,记录prevote的结果(是否满足2/3)。
  4. peer0收集precommit消息,同时判断之前记录的prevote的结果,两者都满足2/3的条件,进入commit, 同时将precommit聚合签名后,发给peer0--peerN。 peer0--peerN验证签名后,进入commit。

andyYuanFZM avatar May 27 '20 10:05 andyYuanFZM

@caopingcp @vipwzw 采用聚合签名的方式,基本也是相信主节点是没问题的。 可以看下中间再省去对prevote的聚合签名,直接由打包节点记录并确认prevote状态, 有没有问题。

andyYuanFZM avatar May 27 '20 10:05 andyYuanFZM

image

vipwzw avatar Jun 05 '20 01:06 vipwzw

了解一下这个:https://zhuanlan.zhihu.com/p/113221544

vipwzw avatar Jun 05 '20 01:06 vipwzw