EOS的共识机制(一)

EOS的共识机制由传统的DPoS (委托权益共识)升级到BFT-DPoS(拜占庭容错-委托权益共识)

EOS 由21个节点(见证人,出块者)参入。

传统:DPoS 的特点:
         1、每3秒生产一个区块,每个出块者生产一个区块。出块顺序是无序的。
         2、 DPoS的算法中,每一个区块需要21个出块者中的三分之二以上的(大于等于14)的出块者承认,才会永久有效,不可逆。

比如: A 出块后,E如何认同A所出的块呢,那么就是E出块的时候(E在A出的块的基础上自己出了一个块)他认可了A所出的块。  
           如果C要出块了,那就代表着,他认同了之前的所有的块。
           那A所出的块(比如3007),如何被认定不可逆(永久有效)呢?那就是需要后来的至少14个见证人认可他是有效的才行,那时间就是至少15*3=45秒。
           为什么是15不是14,因为是这笔交易产生后,3007这个区块生成也许要3秒,就是说包含此交易的区块,也要算一个区块,所以是15秒。
           虽然出块者出块(比如3007)后,是可以广播,但是其他的出块者,即使收到广播,但是没有轮到自己出块,他也无法对该块(3007)进行认可的。
           认可的手段:是必须轮到自己出块,并且在前一个块的基础上,产生新的块,才认可前面的块。这是认可的机制。
综上:确认的速度慢。

利用BFT 进行改进:
A出块(3007)了后,立马广播,这个时候,A会向所有见证人索要认可(确认) ,不需要等到下一个见证人出块的时候才能认可,直接让其他见证认对该块(3007)的认可。这样就非常快了,如果有超过14个见证认认可,就表明该块(3007)就是不可逆的了,时间估计只要3秒钟(该交易自己的块生成时间)。    


BFT-DPoS(带有拜占庭容错的委托权益共识)的特点:
1、每0.5秒出一个块。每个出块者连续生产6个快(间隔时间是0.5秒)。总共3秒。
2、21个节点顺序出块,自己拟定出块顺序。(随机的话,0.5时间不够,存在需要出块的节点都还没有接收到上一个出块的信息,时间就到了,所以每个出块者出6个块)
3、6个块如果在规定的时间没有被下一个见证者全部收到(比如收到4个块,还有两个2块没有收到),就出现分叉了,接收的见证人就会在接收到的块(比如4块)的最后一个块的基础上生产6个块,并发给其他见证人认可,通过拜占庭算法,最长的链为主链,那么后面的产生的块都会回到主链上来。

扫描二维码关注公众号,回复: 2871185 查看本文章

猜你喜欢

转载自blog.csdn.net/akai9898/article/details/81836983