区块链:「技术篇」拜占庭容错共识算法介绍

1.前言

区块链的共识算法中,除了常见的工作量证明和权益证明外,还有拜占庭容错共识算法。

拜占庭容错共识算法是由拜占庭将军问题衍生出来的共识算法。

拜占庭将军问题:

拜占庭将军问题是LeslieLamport在10世纪80年代提出的一个假想问题。拜占庭是东罗马帝国的首都,由于当时拜占庭罗马帝国国土辽阔,每支军队的驻地分隔很远,将军们只能靠信使传递消息。发生战争时将军们必须制订统一的行动计划。然而,这些将军中有叛徒,叛徒希望通过影响统一行动计划的制定与传播,破坏忠诚的将军们一致的行动计划。因此,将军们必须有一个预定的方法协议,使所有忠诚的将军够达成一致。而且少数几个叛徒不能使忠诚的将军做出错误的计划。也就是说,拜占庭将军问题的实质就是要寻找一个方法,使得将军们在一个有版徒的非信任环境中建立对战斗计划的共识。

在分布式系统中,特别是在区块链网络环境中,也和拜占庭将军的环境类似,有运行正常的服务器,还有故障的服务器,有破坏者的服务器,即拜占庭错误节点。共识算法的核心是在正常的节点间形成对网络状态的共识。

2.拜占庭容错共识算法的版本分类

拜占庭容错共识算法有3种版本,每种版本都具有各自的优缺点。这些版本分别是:

1)实用拜占庭容错

2)联邦拜占庭协议

3)授权拜占庭容错算法

3.各种拜占庭容错共识算法版本的优缺点

下面来看看它们的优缺点:

3.1实用拜占庭容错

优点:高速、可扩展。

缺点:通常用于私有网络和许可网络。

采用者:HyperledgerFabric、Ripple

实用拜占庭容错PBFT是首个解决拜占庭将军问题的方案,当前已被HyperledgerFabric采用。PBFT使用了较少的预选定将军数,因此运行非常高效。它的优点是高交易通量和吞吐量,但是不足之处在于是中心化的,并用于许可网络。使用拜占庭容错机制是一种采用“许可投票、少数服从多数”来选举领导者并进行记账的共识机制,该共识机制允许拜占庭容错,允许强监督节点参与,具备权限分级能力,性能更高,耗能更低,而且每轮记账都会由全网节点共同选举领导者,允许33%的节点作恶,容错率为33%。换句话说,PBFT假设区块链上总的节点数是3f+1个,那么网络中可以容忍整个网络中最多f个节点出现拜占庭错误而不影响正确的共识。

这里简单对瑞波Ripple介绍一下:

在Ripple的共识算法中,将军是Ripple基金会预先选定的,即参与投票节点的身份是事先知道的,因此,算法的效率比PoW等匿名共识算法要高效,交易的确认时间只需几秒钟。当然,这点也决定了该共识算法只适合于权限链的场景。Ripple共识算法的拜占庭容错能力为/5,即可以容忍整个网络中20%的节点出现拜占庭错误而不影响正确的共识。

瑞波共识算法使一组节点能够基于特殊节点列表形成共识。初始特殊节点列表就像一个俱乐部,要接纳一个新成员,必须由该俱乐部51%的会员投票通过。共识遵循这些核心成员的“51%权利”,外部人员则没有影响力。由于该俱乐部由中心化开始,它将一直是中心化的,而如果它开始腐化,股东们什么也做不了。与比特币及Peercoin一样,瑞波系统将股东们与其投票权隔开,因此,它比其他系统更中心化。

顺便提一下,EOS公链除了使用DPoS外,也使用了拜占庭容错来加速区块的确认。所以,在区块的确认时间上,EOS比起它的前身比特股要快很多,几秒内就可以完成区块的确认。

3.2联邦拜占庭协议

优点:吞吐量、低交易开销和网络扩展性

采用者:Stellar

另一类拜占庭将军问题的解决方案是FBA,已被Stellar等代币使用。FBA的通用理念是每个拜占庭将军负责自身的链、消息一旦到来,通过排序建立事实。在Stellar中,任何人都可以成为验证者,需要用户选择去相信哪个验证者

这里简单对恒星Stellar介绍一下:

恒星Stellar项目是使用恒星共识来实现的。恒星共识是基于联邦拜占庭共识。恒星共识协议提供了一种不依赖闭合系统实现准确记录金融交易而达成共识的方法。

恒星共识协议具有一组可验证的安全属性,这些属性根据如何安全地保持活力而做了优化。一旦出现分区或不当行为节点,它将会终止网络过程,直至达成共识。SCP同时具备四种属性:去中心控制、低延迟、灵活信任机制和渐进安全。

目前比较火的免费手机挖矿项目PiNetwork是基于恒星共识协议和联邦拜占庭协议的算法进行开发(官网minepi.com,邀请码powervip)。关于PiNetwork更多的资料可以私聊我

网上相关的资料不是很详实,根据网上查到的资料和我个人的理解,实用拜占庭容错和联邦拜占庭协议这2种共识算法的区别在于:

PBFT是单邦制,FBA是联邦制。

另外,PBFT的节点是预先选定或通过授权的,适用于私链和联盟链。FBA是一个完全可以自由加入成为节点或退出节点的共识方式,每个邦内的白名单中节点通过投票选举产生。因此,FBA比PBFT的去中心化程度更高,但是牺牲了一定的性能,适用于公链。

如果要进一步验证上面的观点,最好的方法还是去查阅官方的文档甚至是代码。

3.3授权拜占庭容错算法

优点:快速,可扩展。

缺点:每个人都争相成为根链。其中可能存在多个根链。

采用者:Neo

授权拜占庭容错算法,简称dBFT,是一种支持通过代理投票实现大规模参与共识的拜占庭容错共识算法。在国产第一条公链小蚁Neo中,令牌持有者可以通过投票选取其支持的bookkeeper。之后,选定的bookkeeper组采用BFT算法达成共识,并生成新区块。Neo网络中的投票是实时的,而非因人而异的。

dBFT可为具有个共识节点的共识系统提供f=n?13容错。这种容错也涵盖了安全性和可用性、不受将军和拜占庭错误影响,并且适合任何网络环境。dBFT具有很好的最终性,这意味着一旦最终确认,区块将不可分叉,交易将不可再撤销或是回滚。

Neo的dBFT机制生成一个区块需15到20秒钟。交易吞吐量测定约为1000TPS。这对于公共区块链而言,这是很好的性能。通过一定优化,dBFT具有达到一万TPSS的潜力,这样就可支持大规模的商业应用。

dBFT中加入了数字身份技术,这意味着bookkeeper可以是真实的个人,也可以是某些机构。因此,dBFT根据存在于其本身之中的司法判决,可以冻结、撤销、继承、检索和拥有代币兑换权。它有利于实现合规金融资产在Neo网络中的注册。Neo网络从设计上,就是在必要时为此提供支持。

同样是为了解决拜占庭将军问题,授权拜占庭容错机制,是一种在Neo区块链内部实现的保证容错的共识算法。

在这个机制当中,存在两个参与者,一个是专业记账的“记账节点”,一个是系统当中的普通用户。

普通用户基于持有权益的比例来投票决定记账节点,当需要通过一项共识时,在这些记账节点中随机推选出一名发言人拟定方案,然后由其他记账节点根据拜占庭容错算法,即少数服从多数的原则进行表态,如果超过66%的节点表示同意发言人方案,则共识达成;否则,重新推选发言人,重复投票过程。

所以说,dBFT机制实际使用了一种迭代共识的方法来保证系统达成一致决定。

这种机制的缺点在于,当系统中有超过三分之一的记账节点停止工作时,整个区块链网络将无法提供正常的服务;当超过三分之一的节点联合作恶时,区块链将有可能发生分叉。

----------------------------------------------------------------------------------

我是powervip,区块链程序员,公众号:区块链战斗机

原创作品,版权所有,侵权必究!商业转载请联系作者获得授权;非商业转载需保留作者署名信息,注明出处并保留原文链接。

如果你觉得这篇文章写得还可以,请帮忙点个赞,谢谢!

你的鼓励,我的动力!

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:46ms0-4:378ms