unitimes.media
全球视角,独到见解
“本文将为大家详解两种区块链BFT算法——dBFT及VBFT”
尽管PBFT具备⾼可⽤性且易于理解,但随着节点⽹络数量的增 加,算法的复杂度将急剧上升。为了解决这⼀缺陷,⼯程师们提出了 众多基于PBFT的优化算法,本节将对应⽤于区块链的两种BFT共识 算法——dBFT、VBFT进⾏介绍。
1.授权BFT(delegated BFT, dBFT)
dBFT是基于PBFT改进的区块链共识算法,其相对PBFT的改进 之处有:
在dBFT中,共识节点受权益所有人的委托参与共识,进行记账。全局账本仅由共识节点维护,系统中的普通节点不参与共识算法,但可以看到完整的共识过程。
假设 = ||表⽰参与共识的节点总数,其中 是共识节点的集合。 我们为每⼀个参与共识的节点分配⼀个编号,从 0 开始,最后⼀个节 点的编号为 − 1。每⼀轮共识都需要有⼀个节点来充当议长,其它 节点则为议员。议长的编号 由如下的算法来决定:假设当前共识的 区块⾼度为ℎ,则 = (ℎ − ) , 其中0 ≤
假设每次产⽣区块的时间间隔为 ,则dBFT算法流程如下:
节点在监听全⽹交易以及在收到提案后,需要对交易进⾏合法性 验证。如果发现⾮法交易,则不能将其写⼊内存池;如果⾮法交易包 含在提案中,则放弃本次共识并⽴即开始视图更换。
交易验证规则如下:
如果议员节点判断议长节点宕机或者作恶,那么系统将进入视图更换流程。在dBFT中,在视图更换达成之前,每一轮视图更换都伴随着更长的等待时间以避免视图更换流程进行得太频繁。
2.基于VRF(可验证随机函数)的BFT(VBFT)
VBFT算法融合PoS、VRF以及BFT的思想。在VBFT算法中,节点需要通过权益抵押来申请参与网络共识。此后,系统通过可验证随机函数来随机从所有备选的共识节点中选择n个节点,并提出、验证备选区块,最终通过对验证结果进行背书投票来完成区块共识。
与dBFT类似, 共识节点构成共识网络,负责对网络中的事务请求进行共识,生成区块;而备选的共识节点构成候选网络,不参与共识,但保持与共识网络同步的状态。此外,候选网络对共识网络进行监控,并对共识区块进行验证。
VBFT算法流程如下:
在VBFT算法中,每一轮区块的VRF值都基于上一轮共识区块的易变信息,并通过计算该信息的哈希值来作为下一轮共识区块的VRF值。由此,每一个区块的VRF值都是可验证的。
在上述的算法流程中,我们还提到了“最高优先级”的概念。根据VBFT文中介绍,依据VRF选定节点的同时,也确定了节点的排序顺序,即节点的优先级顺序。优先级顺序的存在,为节点应对主链分叉提供了参考方案。由于恶意分叉很难一直维持最高优先级,从而达到遏制恶意分叉的目的。
除上述两种共识机制外,2017年,Cosmos在其白皮书中应用了一种全新的部分同步运作的拜占庭容错共识协议Tendermint3,并指出该协议具备简易性、高性能以及分叉责任制。下一节,我们一起谈谈Tendermint,一个融合BFT和DPoS的共识协议。
本文作者:喏呗尔
参考文献
[1] 张铮文.一种用于区块链的拜占庭容错算法[EB/OL]//http://docs.neo.org/zh-cn/
node/consensus/whitepaper.html,2016
[2] HongleiCong.VBFT Introduction[EB/OL]//https://github.com/ontio/
documentation/blob/master/vbft-intro/vbft-intro.md,2018
[3] Jaekwon. Byzantine Consensus Algorithm[EB/OL]//https://github.com/
tendermint/tendermint/wiki/Byzantine-Consensus-Algorithm,2017
国际金融科技新媒体和社区平台
UNITIMES
网址 : unitimes.media
新浪微博:@Unitimes
领取专属 10元无门槛券
私享最新 技术干货