史上最全共识算法盘点

转载
2330 天前
264485
巴比特资讯
共识算法是所有区块链/DAG技术的基础,也是区块链/DAG平台最重要的组成部分,本文罗列了主要共识算法,且评估了它们的好处和坏处。

共识算法是所有区块链/DAG技术的基础,他们也是区块链/DAG平台最重要的组成部分。没有它们(共识算法机制),我们就只会有个无法改变的数据库而已。下面是主要共识算法的列表,而且我们可以评估它们的好处和坏处。

1.工作量证明 (PoW)

好处:自从2009年开始,就可以进行了测试,到如今仍然很稳定。

坏处:

速度很慢。

消耗大量的能源,并且对环境不好。

容易受到规模经济的影响。

类型:竞争性共识算法。

解释:这是第一个共识算法机制(中本聪在他的文章中提出)来创建分布式无需信任的共识,并且解决双花问题。工作量证明不是一个新的想法,但是中本聪将这个和其他的概念- 加密签名,默克尔树以及P2P网络结合起来- 从而形成了分布式共识系统,其中数字货币是首个基础应用,这充满创新。

区块链中的参与者(矿工)必须要解决复杂但是无用的计算问题,从而将转账区块加入到区块链上。

基本上,这是来保证矿工花费成本/资源(矿机)来完成这项工作,从而表示他们不会欺骗区块链系统,并且对系统造成伤害,会导致他们损失自己的投资;因此伤害他们自己。

这个问题的难度会随着时间改变,这是为了保证恒定的区块生成时间。有时候会发生一种情况,其中有超过一个矿工在同时解决这个问题。在那种情况下,矿工会选择其中一个链,而且最长的链会是获胜者。所以假设大多数矿工在挖一个链,那么这条链就会发展最快,并且是最值得信任的。因此只要50%的矿工是诚实的,那么比特币就是安全的。

2.权益证明

好处:

能源利用效率高

攻击成本更高

不容易受到经济规模的影响

坏处:

无利害关系攻击

类型:竞争性共识算法。

解释:权益证明是工作量证明的替代方案,为了解决其中的问题。和挖矿不同,你需要在系统中持有权益(代币)。所以,如果你只有10%的代币,那么你挖出下个区块的概率为10%。

挖矿需要很多的算力来解决不同的加密计算,从而解锁这些加密难题。算力意味着,工作量算法需要大量的电力需求。在2015年,1个比特币大约需要1.57个美国家庭每天的耗电量。所以,为了节省能源,权益证明算法诞生了。

在权益证明中,一美金是一美金。例如,假设有10,000个矿工,每个人花费1美金/分钟,就会比矿池花费10,000美金/分钟拥有更少的算力。但是在权益证明中,如果你不能一次使用完全。这里的一美金还是一美金。因此,这不会受到经济规模的影响。

并且,攻击权益证明系统比攻击工作量证明系统更加昂贵。对权益证明进行51%攻击的代价,是要让所有ASIC矿机全部倒下。

这意味着,每次你攻击权益证明系统,都会失去权益抵押,但是在工作量证明,如果你攻击系统,但是你不会失去挖矿设备或者代币;你只不过是让攻击很难实施。

但是权益证明会出现个问题,就是无利害关系攻击问题,其中区块生成者通过向多个区块链进行投票,就不会损失任何东西,从而防止达成共识。

不像工作量证明系统(你需要做大量计算来扩展一个链),同时为挖几个链也只有很少的成本。很多项目尝试通过不同方案来解决这个问题。例如,上面所说,其中一个解决方案就惩罚做坏事的矿工。

3.委托工作量证明(DPOW)

好处:

节能环保

提高安全性

可以通过非直接地给比特币(或者任何其他安全的链)提供安全性,这是通过为最贵

坏处:

只有使用工作量证明或者权益证明

在公证员激活模式下,不同节点的哈希算力必须要标定,不然哈希算力之间的区别会爆炸(以下会有更多的解释)

类型:合作型共识

解释:委托工作量证明是混合型共识方法,可以让一个区块链能够利用第二个区块链通过哈希算力提供的安全性。这是通过很多能够将数据从第一个区块链加到第二个区块链的节点来完成的,这通常会要求两个区块链进行进行妥协,从而削弱第一个区块链的安全性。


基于委托工作量证明算法的区块链可以使用工作量证明或者权益证明方法来实现功能;并且它能够将自身依附于任何工作量证明的区块链。但是,比特币的哈希力现在已经为通过委托工作量证明进行安全保护的区块链,提供了最高级别的安全保护。下面的图例,显示了主要区块链和它所依附的工作量证明区块链之间的关系:


在委托工作量证明系统中,有两类节点:公证人节点和普通节点。64个公证人节点是通过委托工作量证明的区块链权益持有者选出的,然后将确认的区块从委托工作量证明区块链添加到依附的工作量证明区块链。一旦区块完成,它的哈希就会通过33个公证人节点签名,然后添加到比特币转账,从而在比特币区块链上记录下委托工作量证明的区块哈希,这也是被网络中大多数公证人节点所公正的。

为了防止矿工在公证人节点之间,这会降低网络的效率,所以设计了一种以两种模式运行的轮换挖矿方法。“无公证人”模式可以让整个网络节点来进行挖矿,和普通的工作量证明类似;但是,在公证人活跃模式下,网络公证人就会在降低困难度的情况下进行挖矿。在这个框架中,每个公证人都可以目前的困难度去挖矿,但是其他公证人节点必须要按照10倍的难度去挖矿,而且所有的普通节点会按照100倍的困难度去挖矿。


但是这会造成些问题。这会导致公证人矿工和普通矿工哈希算力的巨大差别:

委托工作量证明系统的设计,是让区块链可以继续在没有公证人节点的情况下进行运作。在这种情况下,委托工作量证明区块链可以根据初始的共识方法运行,但是,它就不会拥有依附区块链的安全性。

委托工作量证明,会让任何使用这种共识的区块链获得更高的安全性以及更低的能源消耗。而且,委托工作量证明可以通过间接地为主流提供比特币的安全性,并且还需要支付比特币装置。最后,公证人节点和普通节点的功能,可以确保初始的共识机制继续在这类情况下运行,哪怕公证人节点失去作用。这个相互依靠性,为其他网络提供了激励,来支持比特币网络的维护,而且还不用让整个网络完全依附于直接的功能。

4.委托权益证明(DPOS)

好处:

能源效率高,节能。

速度很快。

坏处:

更加中心化

拥有高代币权益的人,可以投票让他们自己成为验证者。

类型:合作型共识算法

解释:在DPoS算法中,权益持有者可以在系统中选择领导者(见证者),他们可以代替别人进行投票。这就会比一般的权益证明算法要更快。

例如,在EOS中,21个见证者会选举出来,然后一些节点(潜在的见证者)会作为候选人,然后如果某个见证者节点掉线或者有任何欺诈行为,那么就会被立刻替换。见证者生成区块,然后会获得回报。这些费用也是由权益持有者决定的。

通常,所有产生区块的节点是轮换的。这就会防止有节点来发布很多的区块,防止他发出双花攻击。如果见证者没有在时间限制内产生区块,那么这部分时间段就会跳过,然后下个见证者就会生产下个区块。如果有见证者连续错过区块或者发布无效转账,那么权益持有者就可以投票让他出局,然后找更好的见证者来替代他。

在DPoS中,矿工会合作来产生区块,而不是像工作量证明或者权益证明。通过部分中心化来创建区块,DPoS算法可以比其他共识算法的速度快几个数量级。

5.权威证明

好处:

节能省电

速度快

坏处:

比较中心化。可以在公链使用,但是通常在私有链和许可区块链使用。

类型:合作型共识

解释:在基于权威证明的网络中,转账和区块都是通过允许的账户来验证的,他们被称为验证者。验证者运行软件,可以让他们将转账放入区块中。这个过程是自动化的,而且不需要验证者去一直盯着电脑。但是,它需要维护计算机(权威的节点)不被攻击。

验证者必须要能够满足的三个主要条件是:

1.身份必须是正式在链上认证,同时也可以在公开的域名中进行信息的交叉检测。

2.这个资格很难获得,并且很难正确地去验证区块。(潜在的验证者需要获得公开认证)

3.在检车过程中,必须要有完整的统一性,从而建立权威。

通过权威验证的个人,可以有权来成为验证者,所以对于验证者来说,系统会有激励。通过将名誉和身份连接,验证者就会被激励去处理转账流程,因为他们不希望获得负面的影响,因为这会失去很难获得的验证者身份。

6.权重证明

好处:

节能省电。

很高的定制化和扩容性

坏处:

激励制度很困难

类型:竞争类共识

解释:权重证明的主要想法是。因为在权益证明系统中,你持有代币的比例代表你发现下个区块的概率,但是在权重证明系统中,其他相关的权重也会使用。有些应用是声望证明和空间证明。

7.声望证明

好处

对于私有和限制性区块链网络很好

坏处:

只能在私有链和许可区块链系统中使用。

类型:合作类型共识

解释:声望证明算法模型取决于参与者的声望,来保持网络的安全。参与者(区块签署者)必须要有足够重要的声望,如果他们想要欺骗系统,就会获得非常严重的财务和品牌后果。这是个相对的概念,因为大多数企业如果在被抓到欺骗后,都会觉得很难过,但是更大的企业会失去更多,因此会比小公司更可能获选。

一旦公司证明了自己的声望,并且通过了验证,他们或许会通过网络的选举,成为合格的节点,就像权威证明中那样,只有认证过的节点才有资格去签署和验证区块。

8.消逝时间证明

好处:

参与者成本低。因此更多人可以很容易地参与,从而去中心化。

对于参与者来说,很容易去验证领导者是合法选出的。

控制领导者选举流程是和获得的利益成正比的。

坏处:

尽管很便宜,你需要使用特定的硬件。因此不能大规模采用。

不适合公链。

类型:竞争性共识

解释:消逝时间证明算法通常使用在许可区块链网络,从而可以决定挖矿权或者区块获胜者。许可区块链网络是需要特定参与者认证,才能加入的区块链。基于这种系统的原则,每单个节点就会成为胜者,消逝时间证明机制是基于在最大可能的网络参与者中,传播分享公平获胜的机会。

消逝时间证明算法的流程如下。网络中每个参与节点都要求等到随机的时间段,并且第一个完成指定等待时间的人就会赢得新区块。每个节点都会有随机的等待时间,然后进行休眠。第一个苏醒的,也就是有最短的等待时间,就可以产生新的区块,并且在整个网络中广播必要的信息。同样的过程会重复为发现下个区块。

消逝时间证明网络公示机制需要确保两个重要的因素。首先,参与的节点选择的时间是随机的,不会因为想赢,节点就可以选择更短的时间,其次是获胜者必须要完成等待时间。

消逝时间证明的概念是在2016年早期由英特尔提出,我们都知道它是著名的芯片生产制造巨头。它提供了高科技工具来解决了计算问题“随机领导者选择。”

这个机制可以让参与者在受到保护的环境下,执行可信的代码,而且可以保证下面两个需求,对于所有参与节点来说,随机选择等待时间,获胜的参与者会完成等待时间。

在安全的环境下运行可信节点的机制,也会考虑到网络中很多其他的需求。它保证了可信代码确实是在可信的环境下运行,而且不会被任何外部人员修改。它也保证了,结果是可被外部参与者和个体所验证的,因此强调了网络共识的透明度。

消逝时间证明控制了共识过程的成本,并且保证灵活,从而在整个过程中,价值和成本成正比,这是数字货币经济能够持续下去的关键需求。

9.能力证明,即空间证明


好处:

类似工作量证明,但是使用空间而不是算力。因此更加环保。

可以删除恶意软件,通过决定是否处理器的L1内存是否是空的(例如,有足够的空间来评估,不会错过任何的内存)或者包含一个可以防止被驱逐。

可以用作防止欺诈的手段,并且防止服务器攻击。

坏处:

激励制度是个问题。

类型:合作共识

解释:空间证明,也被称为能力证明,是展示有人对于某个服务有合法的兴趣(例如发送邮件),这是通过部署一定量的记忆存储或者磁盘空间,来解决服务提供者给出的问题。

空间证明和工作量证明很类似,除了前者不是用算力,而是存储能力。空间证明和记忆容量和可恢复性证明相关,但是其中也有不同。

空间证明是证明者发给验证者的一部分数据,来证明这个验证者收到了部分空间。

空间证明看起来更加公平,由于存储的目标和更低的能源损耗,看起来是更好的解决方案。

10.历史证明

解释:这个共识的想法是,和相信转账时间戳不同,你可以证明转账会在这个事件的前后某个时间发生。

当你在纽约时间记录下的时候,你可以给出证明你的照片是在这个报纸发布之后才记录,或者你有些方式来影响纽约时报发布信息。通过历史证明,你可以创建历史记录,从而证明这件事发生在每个特定的时刻。


历史证明会有高频的验证延迟功能。验证性延迟功能需要特定的步骤来评估,然后产品特别的输出,这个可以被有效和公开的验证。

这个特定的方式使用了连续的预图像抗性哈希,可以和之前的输出作为下个输入,然后连续运行。周期性地,计数和目前的输出是被记录的。

对于SHA256哈希的功能,这个过程是不可能和使用2¹²⁸强制攻击同时进行的。

然后我们可以确认,在生成过程中,真正的时间已经流失了。并且这个记录顺序和真实时间相同。

11.权益流通证明

解释:权益流通证明可以作为工作量证明和权益证明的替代解决方案,来让P2P网络得到安全保证。权益流通证明的设计是用来鼓励拥有权和行为。

12. 重要性证明

好处,在评估权益的时候,比权益证明好

解释:这个共识算法不只取决于代币的数量,还有生产系统行为应得到报酬的可能性。抵押区块的机会是由多个因素组成的,包括恶名(由不同的框架来控制),余额,还有转账数量。这个被称为重要性计算。这提供了一个更全面的“有用”系统成员的图像。

13.燃烧证明

解释:通过燃烧证明,而不是将钱投入昂贵的计算设备,你可以通过将代币发入不可逆的地址,从而燃烧它们。通过将代币发送到从未出现过的土地,你可以在一个基于随机选择过程的系统上获得终身的特权。

取决于燃烧证明如何实施,矿工也许会然后原生代币或者替代链的代币,例如比特币。你燃烧的代币越多,那么你就有更高的可能性,去挖出下个区块。

随着时间的发展,你在系统中的权益就会延迟,所以最终你会想要燃烧更多代币去增加你中奖的概念。(这里是指比特币挖矿的过程,你必须要连续地去投入设备来维持哈希力。)

虽然燃烧证明是个很有趣的解决方案,但是这个协议仍然浪费了很多资源。还有个问题就是,挖矿算力会很容易地偏向于那些想要燃烧更多代币的人。

14.身份证明

解释:身份证明(PoI)是一个加密证据(一部分数据),它会说明任何知道私钥的用户,就会和一个认证的身份相比较,然后和特定的转账连接。同个群体的每个人可以创建PoF(只有一个区块的数据),然后将它展示给任何人,例如处理节点。

15.行动证明

解释:为了避免恶性通货膨胀,比特币只有2100个。这也就意味着,在某些时刻,比特币区块奖励会结束,而且比特币矿工只会收到转账费。

有人会说,这可能会因为公地悲剧导致安全问题,人们会总是按照自己的兴趣来做事,从而孤立了整个系统。所以,行动证明创建了可以代替比特币的另一个激励方案。行动证明是一个混合解决方案,这是由工作量证明和权益证明结合起来的。

在行动证明中,挖矿会按照工作量证明的形式开始,同时矿工也在赛跑去解决难题。取决于实施情况,区块挖矿不会包含任何转账,所以获胜的区块只会包含区块头部,并且矿工的奖励地址。

在这个时候,系统会转移到权益证明。基于区块头部的信息,随机的验证者会签名新的区块。拥有更多的代币,他就能被选择为区块生成者。一旦所有验证者签名,模板就成为一个完整的块。

如果选择的验证者不能去完成区块,那么下个获胜的区块就会被选择,新的验证者会被选择,以此类推,直到区块获得了正确数量的签名。费用会在矿工和签署区块的验证者之间分离。

行动证明的关键是和工作量证明(挖区块需要很多的能源)和权益证明(没有什么可以阻止验证者进行双重签名一样的。

16.存在证明

解释:存在证明是在线服务,能够通过比特币时间戳转账,从而验证计算机文件的存在。

案例:

不用揭露真实内容,就可以获得数字签名协议。不用揭露真实数据,就可以展示数据所有权

文件时间戳

证明所有权

检测文件的完整性

17.可回收证明

解释:可回收证明(POR)是一个通过文件系统到客户端的证明形式,目标文件F是完整的,在这种情况下,客户端能够完全覆盖它。因为可回收证明(POR)会比F本身的传输更加低的通信难度,对于高信任的远程存储系统,他们是更具吸引的创建区块。它可以真正作为共识算法,为云计算系统有用。

18. 拜占庭容错算法


好处:快速,扩容性好

坏处:通常是为私有链,以及许可类区块链使用

解释:拜占庭将军问题是现在分布式计算,都面临的问题。这个问题是几个拜占庭将军,他们在包围一个城市,但是他们必须决定是否要攻击城市。如果有的将军在没有和别人一起进攻,那么他们的策略就是失败。这些将军通常是各自分开的,并且需要传递信息来进行沟通。

实用型拜占庭容错(PBFT):这个问题的首个解决方案,就是实用型拜占庭容错(PBFT)。目前被用在超级账本,会有小于20个提取选择的PBFT有效运行。好处:很高的吞吐量。坏处:中心化

联邦拜占庭协议:FBA是拜占庭将军的另一种经典的解决方案。主要的方法,是让每个拜占庭将近都负责他们自己的链,从而完成信任。它有难以置信的吞吐量,很低的转账费用以及网络稳定性。

19.委托拜占庭协议(dBFT)

好处:快速且扩容性好。

坏处:每个人都在为成为根链而竞争。可以会有几个根链出现。

解释:dBFT被称为委托拜占庭协议,这种拜占庭容错的共识机制能够让通过代理投票来让大规模的人参与到共识。持有代币的人可以通过投票,选择他们想支持的人。这个选择的群体会通过拜占庭算法,达成共识并且挖出新的区块。

委托拜占庭协议(dBFT)提供拜占庭容错f = [(n-1) / 3],这个系统由n个共识节点组成。委托拜占庭协议(dBFT)有很好的最终结果,意味着一旦确认了,区块就不能分叉,并且转账也不可以回滚。

20. DAG(有向无环图)

好处:

由于非线性结构,所以有高度扩容性

快速

节能省电

即时获得最终结果

坏处:

智能合约的部署只可以通过预言机获得

解释:DAG或者叫有向无环图,是区块链更加宽泛的形式。他们由于特殊的造型,从而获得很高的扩容性而出名。

基本上来说,任何的区块链系统中,都是线性结构,一个个区块组成了链。这会让区块链速度很慢,因为区块们不能和链平行添加。但是在DAG区块/转账的案例中,这些是可以平行添加的,每个区块/转账都会确认之前区块的数量。这就让DAG可以无限地扩容。