BFT-DPoS共识算法讲解

引言

BFT-DPoS是在DPoS上改进而来,因为DPoS有如下的缺点:

  • 一个区块的确认时间(不可篡改时间)为45s,从而制约了吞吐量

为什么确认时间这么久?

是因为一个区块由producer生成后,不能立刻被其他producers验证。只有等到轮到其他producers生产区块的时间段,才能对这个区块进行验证;并且需要有2/3的producers验证后才能认为这个区块是不可被篡改的。

那么思考?如何能够让区块生成后即刻被其他producers验证,从而缩短确认时间。


BFT-DPoS共识详解

BFT-DPoS其实是PBFT共识算法与DPoS共识算法的简单结合。

PBFT(实用拜占庭容错,Practical Byzantine fault tolerance)是1999年 由图灵奖得主  Barbara Liskov提出的一种算法,其目的是为了解决异步分布式系统状态机副本一致性问题。现有的联盟链采用的共识算法很多是基于PBFT共识算法改进的。

在PBFT中,负责交叉验证的共识节点认为是相对可信的。在PBFT中需要有一个主节点(primary node)来领导每一次共识。在PBFT中primary node是根据对共识节点编号并进行随机数除模取余得到的。primary node产生区块,之后将区块发送给其他副本节点(replica)进行验证,在经历五个流程后从而使得区块得以验证。

在DPoS中,区块由谁负责产生是通过选举出来的,我们可以认为选举出来的节点是相对可信的。这些通过DPoS选举出来的节点充当PBFT中的共识节点,其中primary node为当前出块的producer,replica为剩余的20个producers。一旦有个区块被生产出来,就立刻广播给其余的replica从而进行交叉验证。

因此通过DPoS和PBFT相结合,使得区块由producer生产出来后可以立刻被其余producers进行验证。一旦区块通过了交叉验证,则被认为是不可篡改的,从而可以缩短区块的确认时间,提升了系统吞吐量。


增强BFT-DPoS吞吐量

为了增强BFT-DPoS的吞吐量,EOS设置producer可以在3s的时间间隔内出6个区块,也就是0.5s一个区块。但是存在问题:

producer1在其2.5s-3s产生的区块由于需要验证以及网络延迟等原因,还没传到下一个出块节点producer2,producer2就已经开始在3s-3.5s的时间段内开始出新的区块。因此可能会导致系统出现分叉。

为了解决这一问题(下面是抄的,觉得写得挺清楚的 https://blog.csdn.net/yuanfangyuan_block/article/details/79872614):

Daniel Larimer 将原先的随机出块顺序改为由见证人商议后确定的出块顺序,这样网络连接延迟较低的见证人之间就可以相邻出块。比如:日本的见证人后面是中国的见证人,再后面是俄罗斯的见证人,再后面是英国的见证人,再后面是美国的见证人。这样可以大大降低见证人之间的网络延迟。使得 0.5 秒的出块速度有了理论上的可能。

再来讨论 BFT-DPoS 的交易确认时间问题:每个区块生产后立即进行全网广播,区块生产者一边等待 0.5 秒生产下一个区块,同时会接收其他见证人对于上一个区块的确认结果。新区块的生产和旧区块确认的接收同时进行。大部分的情况下,交易会在 1 秒之内确认(不可逆)。这其中包括了 0.5 秒的区块生产,和要求其他见证人确认的时间。

EOS 系统规定,一旦区块达到不可逆状态(2/3见证人确认),就无法在此之前进行分叉,保证了交易的永久可信。另外,即使多数见证人想分叉区块链,也只能以相同的速度(0.5秒)与主链竞争,就算主链只剩下一个见证人,分叉链也永远不会追上主链,保证了系统的稳定。


自己的思考

1.PBFT一般用在联盟链中,而DPoS是公有链的产物,那么为什么他们两个可以结合?

PBFT要求参与共识的节点相对可信。在DPoS中,我们认为选举出来的producers也是相对可信。因此两者可以结合

2.通过选举出来的producers产生庄家通吃的情况?

为了让选举出来的producers更加公平性与随机性,可不可以通过混沌理论的方式来进行producers的选举。混沌理论的代表混沌摆链接https://www.bilibili.com/video/BV1BE411T7tB?from=search&seid=4871275766148358672

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值