使用BLS聚合签名的分组共识方案(二)

 原创 PlatON

使用BLS聚合签名的分组共识方案(二)

分组共识方案在现有Giskard共识基础上,将验证节点集合随机分组,每个分组中的节点只需要在组内达成消息共识并生成该消息的BLS聚合签名,各分组再进行组间签名交换,将所有分组的签名重新聚合成完整的签名结果,从而实现该消息在整个网络的最终一致性。 

该方案可提升现有Giskard共识的可扩展性,降低网络通信复杂度、消息复杂度。

| 随机分组说明

分组原则

  • 分组人数的设定通过参数治理流程修改 
  • 分组人数的设定不能少于4名,且不超过25名 
  • 最后一个组的人数≤每组人数的一半时,取消该组,将该组人数分配到其他组(G1->G2->G3>G4->…依次分配)

分组算法

在每个共识轮的选举区块,选举出下一个共识轮的验证人集合,同时根据分组原则,将所有验证人洗牌分组。 

分组算法需要具有不可预测、抗碰撞性和可验证等特性。

基于VRF随机数或者选举区块时间戳分组

1. 以选举区块的VRF随机数或者选举区块时间戳做为随机算法的种子,对验证人集合进行随机排序

2. 根据分组原则,将随机排序的集合进行切割分组

3. 各分组排位第一的节点即为该组协调节点

基于节点距离分组

1. 将所有验证节点分别与index-0的节点计算节点距离(基于nodeID,通过异或的二进制运算得到,模块logdist函数),根据节点距离由小到大排序,如果距离相同,index越小排越前(index-0肯定是排在最前面)

2. 根据分组原则,将重新排序的集合进行切割分组

3. 各分组排位第一的节点即为该组协调节点

| 分组共识说明

分组共识主要涉及对区块投票(PrepareVote)和视图切换(ViewChange)这两类消息的处理

  • 针对两种消息本身的发送和转发规则的修改 
  • 针对两种消息衍生出的分组聚合签名消息 RGBlockQuorumCert、RGViewChangeQuorumCert的处理

连接机制

  • 分组内的普通节点建立连接的优先级:本组的协调节点->本组的普通节点->其他分组的协调节点->其他分组的普通节点 
  • 分组内的协调节点建立连接的优先级:其他分组的协调节点->本组的普通节点->其他分组的普通节点

如果某个节点的连接数不够,根据该优先级,主动断开优先级最低的连接。

广播规则

上述消息,使用gossip协议传播:

  • Gossip协议是可扩展的,只需要O(logN(base k)) 个周期就能把消息传递给所有节点。某个节点在往固定数量节点传播消息过程中,并不需要等待确认(ack)。并且,即使某条消息传播过程中丢失,它也不需要做任何补偿措施。例如:某个节点本来需要将消息传播给4个节点,但是由于网络或者其他原因,只有3个消息接收到消息,即使这样,这对最终所有节点接收到消息是没有任何影响的。

假定fanout=4,在节点数分别为:20/40/80/160/320时,消息传播需要的周期数:

使用BLS聚合签名的分组共识方案(二)

注:从表中得知,当节点数成倍增加时,周期循环次数并没有增加很多,即:Gossip 具备很好的可扩展性。

消息类型-转发规则

( 注:「部分」的定义:假设分组节点总数为n,部分节点即为Sqrt(n);k=fanout)

PrepareBlock

消息说明:提议区块消息

发送规则:所有共识节点+k个非共识节点

转发规则:所有共识节点+k个非共识节点(去除已接收该msgHash的节点)

说明:全网所有节点都需要接收

备注:和现有处理保持一致

PrepareVote

消息说明:区块的投票签名消息

发送规则:本组所有节点

转发规则:

  • 普通节点:转发给本组所有节点 
  • 协调节点:转发给本组所有节点

说明:本分组内所有节点都需要接收

备注:消息只在本组内进行扩散

RGBlockQuorumCert

消息说明:分组内对区块投票的聚合签名消息

发送规则:

  • 协调节点:已连接的所有共识节点+k个非共识节点
  • 普通节点:等待coordinatorWaitTimeout时间自动升级为协调节点

转发规则:

  • 普通节点:转发给已连接的所有共识节点+k个非共识节点
  • 协调节点:转发给已连接的所有共识节点+k个非共识节点
  • 非共识节点:转发给已连接的所有共识节点+k个非共识节点

说明:全网所有节点都需要接收

备注:新增消息类型,消息尽可能扩散所有节点

BlockQuorumCert

消息说明:对区块投票的完整聚合签名消息

发送规则:发送给所有连接的节点

转发规则:BlockQuorumCert归类为同步消息,该消息不做转发

说明:全网所有节点都需要接收

备注:消息尽可能扩散所有节点

ViewChange

消息说明:视图切换的签名消息

发送规则:本组所有节点

转发规则:

  • 普通节点:转发给本组所有节点
  • 协调节点:转发给本组所有节点

说明:本分组内所有节点都需要接收

备注:消息只在本组内进行扩散

RGViewChangeQuorumCert

消息说明:分组内对视图切换的聚合签名消息

发送规则:

  • 协调节点:已连接的所有共识节点+k个非共识节点
  • 普通节点:等待coordinatorWaitTimeout时间自动升级为协调节点

转发规则:

  • 普通节点:转发给已连接的所有共识节点+k个非共识节点
  • 协调节点:转发给已连接的所有共识节点+k个非共识节点
  • 非共识节点:转发给已连接的所有共识节点+k个非共识节点

说明:全网所有节点都需要接收

备注:新增消息类型, 消息尽可能扩散所有节点

ViewChangeQuorumCert

消息说明:对视图切换的完整聚合签名信息

发送规则:发送给所有连接的节点

转发规则:ViewChangeQuorumCert归类为同步消息,该消息不做转发

说明:全网所有节点都需要接收

备注:消息尽可能扩散所有节点

本文转载自https://mp.weixin.qq.com/s/PelrZjG0bnmL_sVQxn4FUw

(0)
上一篇 9月 9, 2021 10:40
下一篇 9月 10, 2021 10:12

相关推荐

发表评论

登录后才能评论