一文详解区块链共识算法
区块链可以做到去中心化,在没有中央权利机构的情况下实现参与者之间的互相信任,都要归功于所运用的共识算法。借这篇文章,我们来讨论一下目前主流的共识算法。
什么是共识算法
区块链是一个去中心化,采用分布式数据存储技术的系统。系统内的节点广泛分布于互联网的各个角落,并且所有节点存储的数据都是互相同步的。在没有达成多数节点共识的情况下,几乎不可能对数据作出修改。正因为如此,即使一个节点受到攻击且其数据被篡改时,篡改过的数据不会被其他节点认同,从而整个系统的完整性不会受到影响。如此一来,区块链就做到了以全球规模部署系统却不需要一个中心机构来维持各方之间的信任。为了达到这样一个效果,每个区块链都有自己的共识算法。
共识算法是系统内为分布式节点之间达成数据一致的协议。其设计可以保证即使系统内有多个不可靠节点的情况下,仍能确保系统的可靠性。共识算法有很多种,每种算法各有优缺。在这篇文章中,我们会介绍几个目前较流行的共识算法,并对它们之间的差异作出对比。
工作量证明 (PoW)
优点:最为去中心化的算法
缺点:出块时间长,可扩展性差,电力成本高
工作量证明是区块链技术中的第一代共识算法。比特币用的正是这种算法,其可靠性和去中心化的性能也在近10年的运行中得到了验证。工作量证明算法需要系统中的矿工互相竞争来计算下一个区块的哈希值。第一个算出正确哈希值的矿工将得到比特币奖励并将区块加入到区块链中。
工作量证明最突出的问题是其居高不下的电力成本和相对较长的出块时间。按设计,下一区块的哈希值无法通过数学分析获得,只能通过运用大量的计算机算力来暴力破解。并且,哈希值的计算难度会不断调整。这样的设计保证了比特币需要10分钟才能出一个区块,极大降低了恶意节点篡改区块链数据的可能行。然而,多方同时竞争计算哈希值意味着工作量证明需要耗费大量的算力,随之而来的是高额的电力成本。目前,根据地域的不同,挖一个比特币大约需要消耗$2,000到$10,000美元的电力。在消耗大量电力的同时,比特币每秒仅能处理3-6笔交易,严重影响了系统的可扩展性。这些缺点正是PoW在设计时就考虑到了的,其初衷就是要以时间和成本来换取去中心化的特质。
一般来说,PoW是最为去中心化的共识算法。网络内的所有矿工一起来验证交易,这意味着要攻击这样一个网络需要攻击者拥有超过全网半数的哈希算力。对PoW发起这样的攻击不仅十分昂贵而且很难以实现。只要超过50%的矿工保持诚实,那么系统就是安全和稳定的。但是,PoW社区内较为担心现在哈希算力越来越集中在少数矿池手中。如果这些矿池联手,那么他们将拥有超过50%的算力来对像比特币这样的PoW区块链发起攻击。因为PoW参与共识不需要拥有其加密货币,对拥有能力的攻击者来说,攻击成功后的财务损失较小。
权益证明 (PoS)
优点: 节能,出块时间短
缺点: 不及PoW算法去中心化, 权益大户影响力较大
PoS是一种新的,根据PoW的高能耗缺点改进而来的一种算法。PoS不需要持有昂贵矿机的矿工来维持运行,而是运用验证人。验证人需要在网络内抵押一定量的加密货币来得到维护网络的权利。验证人想要保持其身份,抵押的货币就不可取出用于交易。
在现在的区块链发展阶段,PoS是一种广泛接受的用来替代PoW的共识算法。PoS的出块时间短,每秒可以处理更多的交易量。在PoS区块链上,验证人需要展示他们拥有一定量的加密货币并抵押才可以参与共识机制。每一轮出块的验证人将从符合资格的参与者中随机挑选。抵押的货币越多,被选中的几率也就越大。因为PoS不需要矿工来计算对设备有高要求的哈希值,其系统在消耗的能源要远低于PoW的同时可以处理更大的交易量。此外,不需要高端设备,没有大额电费单,也鼓励了更多的货币持有人参与到出块的过程中来。这样的系统也就类似于现实世界的直接民主。
PoS和PoW一样有可能受到“51%攻击”,但是这就要求攻击者拥有超过50%的流通加密货币。取得多数货币需要大量的财力,而这样的攻击本身会造成货币的贬值从而严重伤害攻击者的利益。因此,PoS遭受“51%攻击”的可能性较小。
委托权益证明 (DPoS)
优点: 低廉的交易费用, 可扩展性, 节能
缺点: 较PoS更为中心化
委托权益证明是由PoS变化而来的,其目的是为了进一步的提高PoS的效率。该算法赋予利益相关人给代表投票的权利。 当选代表将行使PoS系统中验证人的权利。DPoS是下一代区块链中最为受欢迎的共识算法。
和模拟直接民主的PoS比对,DPoS的机制和民主代表制类似。 DPoS系统内所有持有加密货币的账户都有权利为合格的代表投票。当选代表将成为验证人并为区块链锻造区块。通常来说,DPoS中当选代表的人数比PoS系统中验证人的数量要少。因此,DPoS的处理速度比PoS更快。
但是,权衡之下,为了达到更高的处理量, DPoS系统需要限制代表的数量。这样一来,保证区块链平稳运行的责任就落到了少数人的手上,因此DPoS更为中心化。投票给值得信任并合格的代表对保证DPoS区块链的运行尤为重要。不诚实的代表会被社区投票取缔并选举新的代表来维持区块链。通常,作为对代表的奖励,区块链上产生的费用和出块奖励将发放给当选代表。
权威证明 (PoA)
优点: 可扩展性, 节能,高吞吐量
缺点: 较为中心化
权威证明算法也是在PoS基础上做出的改进而来。PoA系统中验证人所抵押的是其在社区中的权威而不是加密货币的金钱价值。 也就是说,只有受信任的节点才能作为系统的验证人来锻造区块。PoA背后的理论是信任是需要时间来建立,且不是任意一方可以在市场中买来的。而DPoS, PoS系统中可以通过购买加密货币,PoW系统中可以通过购买设备来参与共识。一旦信任被打破,任意一方将很难重新取得社区的信任。因此,验证人更倾向于保持已取得的信任,维持自己的身份。权力的集中牺牲了去中心化的初衷,但也给PoA带来了较高的吞吐量。因为PoA中心化和节点非匿名的特质,PoA也被称为许可网络,并通常是为私有链所优化的。
拜占庭容错 (BFT)
优点: 可扩展性强, 高吞吐量, 低成本
缺点: 较为中心化
拜占庭容错指代的是一类在系统内有拜占庭错误的情况下能达成共识的共识算法。BFT的名字来源于著名的拜占庭将军问题。在这个问题中,数位拜占庭将军尝试一起进攻敌军城池,然而彼此无法直接沟通,只能通过信使传递信息来达成共识。所有将军必须同进同退军事行动才能成功。拜占庭错误所说的就是众将军中出现叛徒,或者信使被抓从而信息不全的情况。在区块链上,这样的错误可能是断线的服务器,验证人有延迟,网络状况不理想,甚至系统遭到了恶意攻击等等情况。
一个潜在的解决方案是实用拜占庭容错(PBFT)。在这个算法里,每个节点(将军)都会保存一份自己内部状态的记录,当收到一条新信息的时候,节点将会用新信息和内部状态信息结合起来来作出计算(不同于PoW哈希计算)。计算的结果就是该节点针对新信息所作出的决定。每个节点都将把所得结果发送给系统内的其他节点作出比对。当有超过2/3的节点所作出的决定一致时,就算达成了共识,这条新的信息就是有效的并被永久记录下来。因为PBFT不要求节点拥有高哈希算力,运用该算法的区块链一般有着较高的交易量处理能力,可扩展能力强,并且维护成本相对较低。但是,因为系统内要求节点不可匿名(很难信任一名完全不认识的“将军”),PBFT一般只有许可网络使用。
另一个BFT演变而来的算法是VBFT。VBFT结合了PoS, 可验证随机数方程(Verifiable Random Function),以及BFT。在VBFT算法中,节点首先通过抵押加密货币(PoS)来申请参与共识,然后VRF将产生随机数来选择出块的节点,同时随机选择验证节点来验证新出区块的真伪,最后将由同样是随机选出的确认节点来向整个系统广播经过验证的区块。VBFT现在处于开发阶段,其性能还需要市场验证,但是理论上来说,结合了VRF后的共识算法能支持更多的节点,因此VRF将大大提高使用VBFT算法的区块链的可扩展性。同时,结合PoS,其随机性可以进一步的提高系统的安全性能。最后,BFT的应用确保了系统内可以快速的达到确定态,到达确定态的交易为最终状态,无法改变。
结论
在区块链行业中还有很多种共识算法我们没有在这篇文章中讨论。通过这篇文章,我们希望为读者提供一个简介从而使读者对区块链项目做尽职调查时,能快速了解其共识算法的一些基本信息。如果要为读者画出一个重点,那就是所有算法都需要在速度,可扩展性,和去中心化程度上作出取舍。对这些性能的调整没有绝对的好坏,还需要考虑到区块链在实际情况中的应用。随着区块链的发展,我们将拭目以待一个最受欢迎的算法,又或许我们会看到越来越多的算法来应对不同的地区和行业的需求。
关注我们
Twitter: https://twitter.com/infstones
Telegram: https://t.me/infstones
Facebook: https://facebook.com/infinity.stones.12327
Medium: https://medium.com/infinity-stones
币乎: https://bihu.com/people/561062
微信扫描关注公众号,及时掌握新动向
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场