建议和反馈

请填写你的反馈内容

问答 > 链客Talk > 问答详情
已解决

共识成功后,并不像其他共识算法一样在commit阶段会将commit信息广播到全网,这样会不会影响到节点的同步?10LK

共识成功后,并不像其他共识算法一样在commit阶段会将commit信息广播到全网,这样会不会影响到节点的同步?

2020-04-09
0
请先登陆或注册

YOUChain有链2020-05-27

首先,验证者在commit阶段将commit信息广播到全网的目的是为了通知其他验证者,它认可了某个区块。而我们的共识中没有这个环节主要是因为验证者只有同时收集到某个区块超过2/3的Prevote投票及Precommit投票,才会认可该区块。所以再进行一轮commit投票显得多余,因为若其它验证者也收集到了该区块超过2/3的Prevote投票及Precommit投票,自然也会认可这个区块。

 

在我们技术白皮书的安全性证明章节,可以得知在同一轮共识中,不可能出现两个区块会同时拥有超过2/3的Prevote及Precommit投票。所以,若其它验证者没有收集到足够多的投票,而收集到了足够多投票的验证者将commit信息广播出去,有两种可能。一、commit信息中包含了它所收集到的所有投票信息,其它验证者自然可以凭借这些投票信息,对该区块达成共识。但是,那会极大的增加整个网络的通信消耗。二、commit信息中不包含所收集到的Prevote及Precommit投票信息,则其它收到commit信息的验证者也无法根据该信息来做出认可这个区块的决定。因此,在commit阶段广播commit信息显得多余。

 

我们实际测试过程中发现,单个投票消息包大小不超过300B,大部分节点是能收集到足够多票数的,只有少数网络环境不好或严重落后的节点才会出现无法收集到足够多票数的情况。对于这些节点,我们在共识模块外有额外的区块同步机制,来保证节点能快速同步。


投一票
评论(0)
赞赏(0)

求助中

解决了这个问题,预计可以帮助到

  • 0
  • 3
  • 0
  • 9
  • 0
邀请

感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励