DPOS BFT —— 管道化的拜占庭容错机制

普遍的区块链的共识系统分为两种:一种在已定数量的验证人前提下产生毫不含糊的100%最终确认,另一种不产生100%最终确认而是依赖于最终确认的高概率。

第一代区块链共识算法(工作量证明,权益证明,和比特股的委任权益证明)只能保证随着时间而增长的对于最终确认的高概率。从理论上讲,一个人可以通过付足够的钱去另外挖一条更长的比特币区块链一直连回到创世区块。

新一些的共识算法,无论是HashGrah, Casper,Tendermint,还是DPOS BFT,都采用的是历史悠久的Paxos准则和其相关的算法。在这种模式下只要超过2/3的参与者是诚实的就有可能在所有网络情况下达到不含糊的最终确认。

客观的不含糊的100%最终确认对于所有想要支持跨链通信的区块链来说都是至关重要的。如果缺少了100%最终确认,那么在一条链上发生的逆转可以在其它与之交互的链上产生不可调和的连锁反应。

这些新一些的协议的主要内容协议包括:

提交区块

所有参与者承认此区块(预承诺)

所有参与者在收到来自至少2/3的人的预承诺时做出承认(承诺)

当一个节点收到至少2/3的承诺时,此区块为最终确认。

对于最终确认的一致认同是有保障的,除非至少1/3的人是坏的,并且大家都能看到坏的行为。

BFT 生命周期

使各种共识协议不同的是:

决定在何时由谁来提交一个区块

决定如何对承诺进行记录和沟通

如何记录拜占庭行为

对拜占庭行为的惩罚方式

其中有的差异是政治上的,有的则是技术性的。政治上的差异包括:

DPOS根据权益选举出提交人和验证人

Casper依赖于工作量证明来决定何时由谁能够提交,以及靠抵押权益权重来决定谁是验证人

DPOS通过投票出局来惩罚客观和主观的不良行为

Casper通过没收押金的方式惩罚且仅惩罚客观不良行为

在通常情况下,对那些依赖于共识机制去进行和完成交易的用户来说,这些政治上的差异不会对他们的用户体验产生日常影响。进行恶意行为的门槛太高了,对其的惩罚也太狠了,以至于从实际角度上来看恶意行为将不会发生。

而在这些协议中的技术性差异才是对用户体验产生实际影响的根本因素。这包括最终确认之前的交互延迟,最终确认的程度,带宽,和证明的生成以及验证所需的消耗。

最简单的算法是让所有人都在上一个区块上达成共识后才能进行到下一个区块。这需要每位参与者向每位其他参与者为每个区块发两条消息。在一个全球化的网络中,光速将从提交区块到一个节点收到2/3承诺的时间延迟限制在了一秒钟(500ms 往返延迟 X 2次往返)。我观察过的所有网络看上去都在2-3秒的区间。这些协议还拥有一个“定时器”,如果当前提案的有效性无法被达成共识,那么“定时器”就会引入一个新的提案。这个定时一般会比预期的确认时间要长。

类似于Casper这样的协议试图将消耗最小化,通过依赖于短期共识的工作量证明和每第一百个区块(关卡)才达到最终性。这就意味着基于Casper的链达到最终确认的时间为每2030分钟。

DPOS BFT 管道化共识机制

现今在EOSIO里实施的带BFT的委任权益证明用的是一种管道化方式去输送提案、预承诺和承诺。这就是说正常运行情况下,每个区块都使最终确认前进一个区块并且这是通过在每个时间档上只要求一个提案来达到的。换句话说,有BFT的DPOS的最终确认在成本上就签名验证、哈希计算和网络带宽等等而言,是等同于以前依赖于最终前后一致和类似于比特币与以太坊(Casper前)最长链规则的DPOS系统的。

只有DPOS BFT可以有效率的扩展到无限数量的验证人(以延迟为代价)。其他协议达到最终确认所需要的资源会随着参与人数的增加而增长,因为每个人都必须和其他每个人为每个区块或关卡交流两次。有了更多方的参与,就需要更多的签名和网络消耗以及存储空间,交互延迟也就更长了。

假设DPOS BFT有两秒钟的区块间隔和21个区块生产者,最终确认要在一分钟后达到,但是每两秒钟就会有一个区块达到最终确认。这是通过将BFT确认管道化达到的。像EOSIO这样的平台每500ms产生一个区块,但每12个区块才轮换一次提案者。这就是说基于纯BFT DPOS区块确认的话BFT最终确认需要三分钟来达到。最后的结果是十倍于Casper在单个区块上达到最终确认的速度,但是每两秒钟就有一个新的区块达到最终确认,而 Casper则需要30分钟。

拥有低延迟确认选择的DPOS BFT

DPOS 管道/实时混合BFT

对于很多应用来说,需要三分钟才能达到最终确认是不符合需要的,并且针对一个区块的DPOS证明对于轻客户端来说比理想的要大。在这种情况下,区块链可以选择设计在每个待定的区块上做一个BFT预承诺和承诺的信息。这样就给了DPOS-BFT链最终确认一个1-2秒的交互延迟,代价为额外的网络消耗、存储需求和CPU用量。不同于像Tendermin或Cosmos这样的协议的是,“在管道里”可以同时排有多个提案。甚至有一些区块可能因为网络分隔而永远不会接收到“实时”的承诺,但无论怎样他们都将最终被间接地确认。

有了这个混合的方式,轻客户端可以用15个签名来进行验证和(或)用更高级的密码学技术将多个承诺签名合并成一个签名。就算没有承诺签名,轻客户端仍可以用一系列连续的区块头来达到BFT最终确认。

安全程度

人们早已了解,对于很多例如博客文章和社交网络投票的应用来说,在一秒之内就可以达到99.999%最终确认的情况下等待100%的最终确认就没那么必要了。像Casper这样的协议给了用户们一个选择权,在没必要等下一个关卡时依赖于工作量证明去达到确认。

一些全节点也许需要的只是区块链的状态而不在乎处不处理所有的BFT预承诺和承诺信息。只要知道区块生产者达到了实时共识以及他们的区块头最终会在几分钟后证实BFT共识就已经足够了。

每个共识算法都为用户们做出了一些选择,通过不同的方式牺牲一些安全性。Tendermint、Cosmos和Ripple就没有给用户们一个运行于低于完全最终确认的选择。以太坊给了用户们一个工作量证明的后路,DPOS-BFT的后路则是原始的DPOS保证。

甚至于可行的是将带罚没条例的Casper关卡算法建立在DPOS BFT区块提案系统之上。这种方式会创造出多个独立的验证人集合,并同时包含了政治上和经济性的激励措施来激励好的行为。

用户体验

带BFT的委任权益证明机制优化了标称情况并在最坏的情况下不会更糟。在通常情况下,被选出的区块生产者都是被信任的公众人物,都承担法律责任和拥有可靠地节点。一个被生产出的区块达到最终确认的可能性本来就已经是99.999%了,也就是说一般的用户在一秒之内就能得到几乎肯定的最终确认。这基本上对于所有日常财务交易来说已经是足够可靠了。大一点的财务交易,例如买车,只不过是需要用户等几秒钟而已来达到绝对的最终确认。

每个用户都可以自己决定想要产生多少消耗和延迟,以及生成多大的证明来用在跨链通信上,这是其它协议没有留给用户的选择。

总结

所有当今的遵循由八十年代问世的BFT共识原则的共识算法都可以在有1/3参与者为拜占庭的网络分裂状态这种最坏情况下达到一个安全且最终的状态。只有DPOS BFT和EOSIO被优化为在没有网络分裂的情况下节点99.999%实诚时的。DPOS BFT在不牺牲那些其他协议所能提供的安全保证下就实现了此项优化的性能。​​​​

发表评论