原创 PlatON
分组共识方案在现有Giskard共识基础上,将验证节点集合随机分组,每个分组中的节点只需要在组内达成消息共识并生成该消息的BLS聚合签名,各分组再进行组间签名交换,将所有分组的签名重新聚合成完整的签名结果,从而实现该消息在整个网络的最终一致性。
该方案可提升现有Giskard共识的可扩展性,降低网络通信复杂度、消息复杂度。
| 消息复杂度分析
分组原则
Giskard在具有n个节点的网络中的传输开销为O(n2),也就是说每个节点产生的消息都需要广播给所有共识节点。
以PrepareVote阶段共识为例,分析分组前后的消息复杂度:假设共识节点总数为n,平均分成x组,每组成员数为n/x。
分组前,PrepareVote消息总量为。
分组后,第一步,PrepareVote消息只在分组内扩散,所以消息总量为(n/x)²*x;第二步,RGBlockQuorumCert消息只由每组的协调节点产生并发送,以分组人数上限25为例,每组的初始协调节点数为5个,假设这5个协调节点产生的分组聚合签名各不相同,在不考虑普通节点升级为协调节点的情况下,RGBlockQuorumCert消息总量为5x*n。
容错性对比
假设验证节点总数为N,可以平均分成X组,每组成员数为N/X。分组之前,整个网络容错为(N-1)/3,分组之后,每组容错为(N/X-1)/3,整个网络的容错为(N-X)/3,因为X大于1,所以分组后,整个网络的容错性会有所下降但差值不大。
举例:200个节点分成8组,每组25个节点,分组前后整个网络的容错数分别为66和64。
各项指标数据的采集
需要通过大量不同场景的测试,采集以下指标数据
共识效率指标
- view出块率
- view缺失数
- view的平均时长
- 平均出块速率(块/秒)
网络指标
- 节点连接数
- 通信复杂度
- 一轮共识的消息总量(metrics统计)
- 网络出入流量
性能指标
- TPS
- 交易延迟TTF
扩展性指标
- 共识节点的增加对其余指标数据的影响
可靠性指标
- 安全性证明
- 活跃性证明
本文转载自https://mp.weixin.qq.com/s/k0jqvVk4yKhEWV4hjb9mmg