上图显示了_个简化的PBFT的协议通信模式,其中C为客户端,N0~N3为服务节点,NO为主节 点,N3为故障节点。协议的节本过程如下:
在n^3m + 1的情況下一致性是可能解決的,其中,n为总节点数,m为恶意节点总数。我们模 拟一下PBFT:
n = 4, m = 0:
节点 | 得到数据 | 最终结果 |
---|---|---|
A | 1111 | 1 |
B | 1111 | 1 |
C | 1111 | 1 |
D | 1111 | 1 |
n = 4, m = 1:
节点 | 得到数据 | 最终结果 |
---|---|---|
A | 1110 | 1 |
B | 1101 | 1 |
C | 1011 | 1 |
D | 0111 | 1 |
n = 4, m = 2:
节点 | 得到数据 | 最终结果 |
---|---|---|
A | 1100 | NA |
B | 1001 | NA |
C | 0011 | NA |
D | 0110 | NA |
由此可以看出,实用拜占庭容错系统能够容纳将近1/3的拜占庭节点。
实用拜占庭容错系统在很多场景都有应用,在区块链应用中,一般适合于对强一致性有要求的私 有链和联盟链场景。例如,在旧M主导的区块链超级账本项目中,实用拜占庭容错系统是一个可 选的共识协议。
小蚁采用的dBFT机制,是由权益来选出记账人,然后记账人之间通过拜占庭容错算法来达成共 识,此算法在PBFT基础上进行了以下改进:
dBFT的优点是:专业化的记账人,可以容忍任何类型的错误,记账由多人协同完成,每一个区 块都有最终性,不会分叉,算法的可靠性有严格的数学证明。dBFT机制最核心的一点,就是最 大限度地确保系统的最终性,使区块链能够适用于真正的金融应用场景。
E〇S为了改进传统的 DPoS 算法,我们可以借鉴 PBFT (Practical Byzantine Fault Tolerance,拜占庭容错算法)的机制。在传统DPoS共识机制中,我们让每个见证人在出块时向全网广播这 个区块,但即使其他见证人收到了目前的新区块,也无法对新区块进行确认,需要等待轮到自己 出块时,才能通过生产区块来确认之前的区块。
在新的机制下,每个见证人出块时依然全网广播,其他见证人收到新区块后,立即对此区块进行验证,并将验证签名完成的区块立即返回出块见证人,不需等待其他见证人自己出块时再确认。 从当前的出块见证人看来,他生产了一个区块,并全网广播,然后陆续收到了其他见证人对此区 块的确认,在收到2/3见证人确认的瞬间,区块(包括其中的交易)就不可逆了。交易确认时间 大大缩短,从45秒缩短至3秒左右(主要为等待生产区块的时间)。这种机制可以称为初级版的BFT-DPoS共识机制。
为了挖掘EOS系统的性能,Daniel Larimer在以上基础上又进行了修改。首先,他将出块速度由 3秒缩短至0.5秒,理论上这样可以极大提升系统性能,但帯来了网络延迟问题:0.5秒的确认 时间会导致下一个出块者还没有收到上一个出块者的区块,就该生产下一个区块了,那么下一个 出块者会忽略上一个区块,导致区块链分叉(相同区块高度有两个区块)。比如:中国见证人后 面可能就是美国见证人,中美网络延迟有时高达300ms,很有可能到时美国见证人没有收到中国 见证人的区块时,就该出块了,那么中国见证人的区块就会被略过。
为解决这个问题,Daniel Larimer将原先的随机出块顺序改为由见证人商议后确定的出块顺序, 这样网络连接延迟较低的见证人之间就可以相邻出块。比如:日本的见证人后面是中国的见证 人,再后面是俄罗斯的见证人,再后面是英国的见证人,再后面是美国的见证人。这样可以大大 降低见证人之间的网络延迟。使得0.5秒的出块速度有了理论上的可能。
为了保证万无一失,不让任何一个见证人因为网络延迟的意外而被跳过,Daniel Larimer让每个见证人连续生产6个区块,也就是每个见证人还是负责3秒的区块生产,但是由最初的只生产1 个变成生产6个。最恶劣的情况下,6个区块中,最后一个或两个有可能因为网络延迟或其他意 外被下一个见证人略过,但6个区块中的前几个会有足够的时间传递给下一个见证人。
再来讨论BFT-DPoS的交易确认时间问题:每个区块生产后立即进行全网广播,区块生产者一边 等待0.5秒生产下一个区块,同时会接收其他见证人对于上一个区块的确认结果。新区块的生产 和旧区块确认的接收同时进行。大部分的情况下,交易会在1秒之内确认(不可逆)。这其中包 括了 0.5秒的区块生产,和要求其他见证人确认的时间。
EOS系统规定,一旦区块达到不可逆状态(2/3见证人确认),就无法在此之前进行分叉,保证 了交易的永久可信。另外,即使多数见证人想分叉区块链,也只能以相同的速度(0.5秒)与主 链竞争,就算主链只剩下一个见证人,分叉链也永远不会追上主链,保证了系统的稳定。