EOS的共识机制

1、EOS的共识
这里写图片描述
BFT:Byzantine Fault Tolerance(拜占庭容错)

DPOS:Delegated Proof of Stake(委托股权)

2、传统的DPOS图
这里写图片描述

见证人A产生了一个新的区块之后需要向全网所有节点广播这个区块,以EOS为例总共有21个超级节点,需要同步14(超过2/3)个以上超级节点才能确认该区块为不可逆。

3、传统DPOS每3秒一个区块,每个出块者生产一个区块
这里写图片描述
见证人E生成了新的区块则表示认可了A的区块,如果一个交易包含到了3007号区块里面,当后面又有14个见证人生产了区块(2/3的数量)则表示3007号区块的数据被完全确立为不可逆的数据。
但是这种方法的速度特别慢大约需要3*14=42S,所以新的DPOS借鉴了BFT。

4、借鉴了FBFT的DPOS
这里写图片描述

见证人A产生了一个新的区块之后在向全网所有节点广播这个区块的同时,不等到其他见证人出块而是主动向其他所有见证人索要这个共识和见证。只要有14个见证者确认这个区块之后,这个区块的数据则是不可逆的数据了。大约时间需要3S左右。

5、BFT - DPOS
这里写图片描述

0.5S出块能否实现呢?加入见证人A0.5S出块之后跟见证人F进行同步的过程由于两者地理位置的巨大差距造成网络延迟超过0.5S,这就出现见证人F已经出块但是见证人A的出块信息还未传达到,所 以造成A和F出现了分叉,所以在原来的基础上实现不了0.5秒出块。
但是EOS的21个超级节点让每个超级节点自己来拟定出块顺序,让网速较快的节点相邻出块,但是0.5S的时间内还是担心有可能不够,所以DPOS最终决定让每个出块者生产6个区块
这里写图片描述

这样的好处就是如果下一个见证人的见证出现网络问题则最多只会影响一个或者两个区块的数据,这样可以保证不会有某个见证人被系统跳过,每个见证人都能出一部分的区块这样可以保证不会再分叉链上出块。这样可以边生产区块边等待确认可以将交易确认时间或者叫做不可逆时间缩短到1S。

阅读更多

更多精彩内容