一致性算法是所有区块链/DAG的基础,它们构成了区块链/DAG平台最重要的部分。
如果没有共识算法,我们得到的只是一个无法写入的虚拟数据库。
在这篇文章中,我将尽力列出所有主要的共识算法,并评价它们的优缺点。如果读者发现有遗漏或者错误的地方,希望可以通过评论指出来。另外,我个人正在一步步研究共识算法及其对经济的影响,所以这篇文章会定期更新。
此外,本文假设读者了解共识算法及其在区块链的重要性。
以下是30种共识算法。
1.工作证明(PoW)优势:
自2009年以来,它已经过广泛测试,目前仍在广泛使用。
不足:
速度慢。
能源消耗巨大,对环境不利。
容易受到“规模经济”的影响。
用户:比特币、以太坊、莱特币、Dogecoin等。
类型:竞争性共识。
说明:PoW是第一个共识算法。它是中本聪在他的论文中提出的,用于建立分布式不信任共识和识别“重复花费”问题。Pow并不是一个新概念,但中本聪将PoW与加密签名、Merkle链和P2P网络等现有概念相结合,形成了一个可用的分布式共识系统。加密货币是这样一个系统的第一个基础和应用,所以它是独特的和创新的。
按照PoW的工作方式,区块链参与者(称为“矿工”)必须解决某种“复杂但无用”的计算问题,以便向区块链添加交易。
本质上,这种做法可以确保矿工花费一些金钱或资源(采矿机器)来完成他们的工作,这意味着他们不会损害区块链系统,因为对系统的损害也会导致投资的损失,从而损害他们自己。
为了保持运行阻塞时间不变,问题的复杂程度会发生变化。有时候,有几个矿工同时解决问题。在这种情况下,每个矿工从他们中间选择一个区块链,获胜者是链条最长的那个。所以,如果假设大部分矿工在同一个链条上工作,那么增长最快的链条就会变成最长最值得信赖的链条。这样,只要矿工提交的工作有一半以上是可信的,比特币就是安全的。
阅读:工作证明
2.股权证明(PoS)的优势:
节能。
攻击者更贵。
不易受“规模经济”的影响。
不足:
“无利害关系”攻击问题。
用户:以太坊(即将推出)、Peercoin、Nxt。
类型:有竞争共识。
说明:PoS是作为PoW替代技术提出的,旨在解决Pow的一些内部问题。PoS不使用挖掘方法,但是用户必须在系统中拥有一些权限(币)。所以,如果用户拥有10%的股权(token),那么用户挖掘下一块的概率就是10%。
为了解决计算挑战,挖掘需要运行各种加密计算,这需要大量的计算能力。计算将力转化为功率所需的大量电能。据估计,在2015年,一个比特币交易所需的电力可以达到1.57个美国家庭一天所需的电力。提出PoS是为了节省功耗。
在PoS中,一美元就是一美元。例如,假设有10000名矿工每分钟花费1美元(一年8760万美元),他们比一名有能力以每分钟10000美元挖一个矿池的矿工拥有更少的哈希力量。但是,在PoS中,不支持一次性用完所有计算能力。一块钱就是一块钱。因此,PoS不容易受到“规模经济”的影响。
另外,攻击PoS系统比攻击PoW系统代价更大。引用弗拉德赞菲尔的话:
在PoS中,重复51%攻击的成本可与每多一轮操作“烧毁您的ASIC农场”相提并论。
这意味着每次PoS系统被攻击,攻击者都会失去自己的权益。在战斗中,攻击者不会失去采矿设备或代币。对PoW系统的攻击只会让攻击本身难以执行。
但是PoS会有“关系不错”的问题。这种对多个块的历史(分叉)进行投票的方式不会使块生成器丢失任何东西,从而阻碍达成共识。
在PoS中,您可以对区块链两边的资产下注(“无显著关系”问题)。而且在PoW中,你不能同时从链的两个方向挖矿,因为很难实现。
不像PoW系统(用户要做大量的计算来延长链条),PoS在多个链条上工作的成本非常小。一些项目试图用多种方法解决这个问题(见“延伸阅读”)。例如,上面描述了一种解决方案,它惩罚坏的验证者。
扩张:股权证明
3.延迟工作证明(dPoW)的优势:
节能。
增强安全性。
你可以通过间接提供比特币(或任何其他安全链)来增加其他区块链的价值,而无需支付比特币(或任何其他安全链)交易的价格。
不足:
*只有使用PoW或PoS的区块链可以采用这种一致算法。
*在“公证人活动”模式下,必须校准不同节点(公证人或普通节点)的散列率,否则散列率之间的差异将会爆炸(下面将给出详细说明)。
收养人:科莫多
类型:协作共识
说明:dPoW是一种混合共识方法,允许一个区块链利用第二个区块链的散列能力提供的安全性。该机制由一组公证节点实现。公证节点将第一个区块链的数据添加到第二个区块链中。此外,第二个区块链要求在两个区块链之间达成妥协,削弱了第一个区块链的安全。科莫多是第一个使用这种共识方法的区块链,这种方法附属于比特币区块链。
使用dPoW的区块链也可以使用PoW或PoS共识方法工作,并可以附加到任何使用PoW的区块链。但对于dPoW提供的区块链,比特币目前给出的是最高安全级别的哈希速率。下图显示了主区块链及其附属的战俘区块链的单个记录。
dPoW系统中有两种类型的节点:公证节点和普通节点。64个公证节点由dPoW区块链的利益主体选举产生,他们可以将dPoW区块链的公证区块添加到附属的PoW区块链。一旦添加一个块,该块的哈希值将被添加到由33个公证节点签名的比特币交易中,并将创建一个哈希到比特币区块链的dPow块记录。该记录已经由网络中的大多数公证节点进行了公证。
为了避免挖掘中公证节点之间的战争,从而降低网络的效率,Komodo设计了一种使用轮询机制的挖掘方法。该方法有两种运行模式。在“无公证”模式下,支持所有网络节点参与挖掘,类似于传统的PoW共识机制。在“公证人活跃”模式中,网络公证人使用显著降低的网络难度率来挖掘。在“公证人激活”模式下,允许每个公证人以其当前难度挖掘一个区块,其他公证人节点必须以10倍难度挖掘,所有正常节点使用100倍公证人节点难度。
但是这样会导致一些问题。我在和科莫多创始人的一次对话中提到,这会导致公证矿工和正常矿工的哈希率差异很大:
本文作者与科莫多创始人关于不一致的沟通截图。
DPoW系统旨在支持区块链在没有公证节点的情况下继续运行。在这种情况下,dPoW区块链可以继续基于初始共识方法运行,但它将不再具有附属区块链的额外安全性。
所有使用dPoW的区块链可以提高安全性,同时降低能耗。比如Komodo,用Equihash哈希算法,防止用ASIC挖矿。它的公证节点依赖于一种轮询挖掘方法,奖励机制考虑了减少节点间竞争的可能性。这些节点会造成过多的能量消耗或计算。
此外,通过间接提供比特币安全性,Komodo等dPoW区块链可以为其他区块链增加价值,而无需支付任何比特币交易的价格。科莫多从此与比特币结缘,而第三个使用dPoW的区块链可以将自己与科莫多结缘。通过这种方式,dPoW区块链不必直接连接到比特币区块链,就可以从比特币的高散列率中受益。
最后,公证节点与正常节点分离的功能保证了初始共识机制在公证节点失效时继续运行。这种相互独立建立了一种奖励机制,使得其他网络可以支持比特币网络的持续维护,而不依赖于比特币网络的直接功能。
阅读:授权-工作证明
4.授权PoS的优势(dpo、授权利益证明):
节能。
很快。高流量博客网站Steemit就用过。EOS的阻断时间为0.5秒。
不足:
略集权。
兴趣高的参与者可以投票成为验证者。这是最近EOS出现的问题。
采用者:BitShares,Steemit,EOS,LBTC。
类型:协作共识
说明:在DPoS系统中,权利人可以选举领导人(或见证人)。经权利持有人授权,这些领导人可以投票。这种机制使得dpo比普通的PoS更快。
例如,在EOS中选择21个证人,有一堆节点(潜在证人)作为候选人。一旦见证节点死亡或实施恶意行为,新节点将立即取代见证节点。见证人将收到生成积木的费用。费用由股权持有人设定。
通常,所有节点使用轮询方法一次生成一个块。该机制防止一个节点发布连续的块,然后进行“双重支付”攻击。如果一个见证人没有在其分配的时隙中生成块,则该时隙将被跳过,下一个见证人将生成下一个块。如果证人不断丢失他的区块或发布错误的交易,那么权利持有人将投票撤回,并用更好的证人替换他。
在dpo中,矿工可以合作生成区块,而不是像在PoW和PoS中那样竞争生成区块。通过块生成的部分集中化,DPoS可以比其他一致性算法运行得更快。LBTC用了DPoS,只用了3秒钟就造出了一个积木!
这非常快!
阅读:授权-利害关系证明
5.授权证明(PoA)的优势:
节能。
很快。
不足:
略集权。虽然它可用于公共区块链,但通常用于私人区块链和特许区块链。
用户:POA。以太坊测试网。
类型:协作共识。
解释:基于PoA的网络、交易和区块都是通过一些被认可的账户进行认证的,这些账户被称为“验证器”。验证者运行的软件,支持验证者以块的形式放置交易。这个过程是自动的,不需要验证者持续监控计算机,但是需要保持计算机(权威节点)不被破坏。
验证者必须满足以下三个条件:
1.它的身份必须在链中进行正式验证,并且信息可以在公开可用的域中进行交叉验证。
2.它的资格肯定是很难获得的,这样获得的验证块的权利才是珍贵的(比如潜在的验证者需要获得公证书)。
3.建立权威的检查和程序必须完全统一。
在PoA中,每个人都有成为验证者的权利,因此一旦获得验证者的职位,就有保持该职位的动机。通过将信誉附加到身份,可以鼓励验证者维护交易过程。因为验证者不希望获得负面的名声,这会让他失去来之不易的验证者身份。
阅读:权威的证明
6.重量(重量证明)优势:
节能。
高度可定制和可扩展
不足:
可能很难实现激励。
收养人:阿尔格兰德。
类型:有竞争共识。
说明:权重证明是一个非常广泛的一致性算法,它基于Algorand一致性模型。基本思想是,在PoS中,用户拥有的网络中令牌的百分比表示用户“发现”下一个块的概率。其他的相对权重值也用于PoWeight系统,包括信誉证明(PoR)和空间证明(空间证明)。
阅读:重量证明
7.信誉证明的优势(PoR):
非常适合私人区块链和特许区块链。
不足:
只能用于私人区块链和特许区块链。
领养者:GoChain。
类型:协作共识。
说明:PoR类似于早熟禾。GoChain文档中给出了以下描述:
PoR共识模型依靠参与者的声誉来维护网络安全。参与者(团体签名者)必须有足够重要的声誉。一旦他们试图欺骗系统,他们将面临严重的财务和声誉后果。这是一个相对的概念。如果他们被发现试图作弊,几乎所有的企业都会受到严重影响。企业越大,通常亏损越多。这样,与使用较少的企业(即规模较小的企业)相比,较大的企业更容易被选中。
企业一旦证明了自己的信誉,通过了验证,就必须通过投票的方式参与权威节点网络。此时,PoR的操作与PoA网络相同,即只有权威节点才能对该块进行签名验证。
更多细节在“延伸阅读”中提供。
阅读:声誉的证明
8.耗时证明(PoET)优点:
参与成本低。更多的人可以轻松加入,从而实现去中心化。
所有参与者更容易核实领导人是合法选举产生的。
控制领导人选举过程的成本与从中获得的价值成正比。
不足:
PoET虽然成本低,但是必须使用特定的硬件。所以不会大规模采用。
不适用于公共区块链。
采用者:HyperLedger锯齿
类型:有竞争共识。
说明:PoET共识机制算法通常用于许可区块链网络,它可以确定谁获得网络中区块的开采权。获得许可的区块链网络要求任何潜在的参与者在加入之前核实其身份。根据公平抽签系统的原则,每个节点都有相同的概率成为赢家。诗人机制给了大量可能的网络参与者平等的获胜机会。
PoET的工作机制如下:网络中的每个参与节点都必须等待一个随机选择的时间段,第一个完成设定等待时间的节点将获得一个新的块。区块链网络中的每个节点都会产生一个随机的等待时间,并在设定的时间内休眠。最先醒来的节点,即等待时间最短的节点,醒来后向区块链提交一个新的块,然后向整个对等网络广播必要的信息。将重复相同的过程来寻找下一个块。
在诗人网络的共识机制中,需要保证两个重要因素。第一,参与的节点自然会选择一个随机的时间,而不是某个参与者故意选择一个短时间获胜。第二,获胜者确实完成了等待时间。
PoET概念是由著名的芯片制造巨头英特尔在2016年初提出的。英特尔实现了一个可用的高科技工具来解决“随机领袖选举”的计算问题。
这种内部机制允许应用程序在受保护的环境中执行可信代码,保证了满足上述两个要求,即随机选择所有参与节点的等待时间,获胜的参与者真正完成等待时间。
这种在安全环境中运行可信代码的机制还考虑了其他网络的需求。它确保可信代码在安全的环境中运行,并且不能被其他外部参与者更改。它还确保外部参与者和实体可以验证结果,从而提高网络共识的透明度。
PoET是通过控制成本来实现共识过程的,成本还是和从过程中获得的价值成正比。这是保证加密货币经济持续繁荣的关键要求。
阅读:经过时间的证明
9.容量证明(PoC),也称为空间证明(PoSpace)优势:
它类似于power,除了使用空间而不是计算。所以更环保。
可用于恶意软件检测。确定处理器的L1缓存是否为空(例如,是否有足够的空间来计算PoSpace进程而不丢失缓存),或者是否包含拒绝被逐出的例程。
可用于反垃圾邮件措施,以及防止拒绝服务(DoS)攻击。
不足:
激励机制可能有问题。
用户:Burstcoin,Chia,SpaceMint。
类型:协作共识。
解释:PoSpace,也称为PoC,通过分配一定数量的内存或磁盘空间来解决服务提供商提供的挑战,表明某人对某项服务(例如发送邮件)有合法的兴趣。Dziembowski等人在2015年正式定义了这一概念。虽然Ateniese等人的论文标题也是“空间证明”,但它实际上是一个使用MHF(Memory Hard Function,一种计算成本取决于内存的哈希算法)的PoW协议。
PoSpace与power非常相似,只是在power中使用存储而不是计算。PO与MHF和可检索性证明(PoR)有关,但在很大程度上存在差异。
PO是由证明者发送给验证者的一小段数据,它确认证明者已经预留了一定量的PO空间。出于实际原因,验证过程需要尽可能高效,即消耗尽可能少的空间和时间。为了公平起见,如果验证者不预留申报量的空间,应该很难通过验证。实现PoSpace的一种方法是使用难以实现卵石化的图。验证者请求证明者为“无卵石图”构造一个标记。证明者提交标签,然后验证者请求证明者在提交中打开多个随机位置。
由于储存的普遍性和储存所需的低能耗,PoSpace被认为是一种更公平、更环保的替代方法。
阅读:空间的证明
10.历史的证明:索拉纳
解释:它的基本思想是不相信交易中的时间戳,而是证明交易发生在某个事件之前或之后的某个时间。
如果我们拍了一期《纽约时报》的封面照片,那么我们就创造了一个证明,证明我们是在报纸出版后拍的照片,或者也许我们有某种方法影响了《纽约时报》的正常出版。我们可以使用PoHistory创建一个历史记录来证明某个事件发生在特定时间之后。
PoHistory是一种高频可验证延迟函数(VDF)。VDF评估需要完成一定数量的顺序步骤,然后生成唯一的输出。这种输出可以被有效和公开地验证。
VDF的特定实施使用连续运行的顺序抗映像前哈希,其中前一个周期生成的输出将用于下一个周期的输入。且计数器和当前输出形成周期性记录。
如果使用SHA256哈希函数,在没有2128内核的强力攻击的情况下,不可能并行化进程。
因此,我们可以确认每个计数器在生成过程中确实经历了一定的时间。此外,每个计数器的记录顺序与实时情况一致。
更多细节在“延伸阅读”中提供。
阅读:历史的证明
11.Reddcoin采用股权流通证书(PoSV,股权流通速度证明)。
说明:PoSV是作为PoW和PoS替代方法提出的。其目的是提高P2P网络的安全性,然后用于确认Reddcoin交易。Reddcoin是一种加密货币,是为了加速数字时代的社交而特别提出的。PoSV旨在鼓励所有者(股权)和活动(流通),直接对应了Reddcoin作为真实货币的两个主要功能,即存储价值和交换中介。Reddcoin也可以作为异质社交场景下的计量单位。
更多细节在“延伸阅读”中提供。
膨胀:桩速度的证明
12.重要性证明的优点(重要性,重要性证明):
在权益计算上优于PoS。
用户:NEM
说明:NEM共识网络不仅依赖于令牌的数量,还依赖于产生要奖励的系统动作的可能性。一个区块的盈利概率是多种因素中的一种,包括不良信誉(受不同框架设计目的控制)、差异以及从中进行和获得的交易数量。它也被称为“重要性计算”,因为它可以为“有用的”系统成员提供更全面的图像。
要有资格执行重要性计算,用户的帐户余额至少应为10,000 XEM。考虑到流通中的XEM不到90亿,实现这个目标并不太昂贵。在未来,10,000 xem的阈值可能会发生变化,但目前来看,它保持不变。重要性计算是使用特定的算法来完成的,而不仅仅是考虑用户分享的概率和规模。
应该指出的是,NEM的重要性是抗拒任何操纵的。这个共识的底层机制可以缓解Sybil攻击和循环攻击的问题。请记住“重要性不在位置上”,尽管这两者很容易被同等对待。
阅读:重要性的证明
13.采用PoBurn的证明:Slimcoin和TGCoin(第三代代币)。
说明:PoBurn并没有在昂贵的计算设备上花很多钱,而是通过向不可恢复的地址发送令牌来“燃烧”。将令牌发送到一个不存在的地址,用户将根据随机选择过程获得终生挖掘系统的权限。
实现PoBurn的方法有很多种。矿工可以烧掉本币或其他一些区块链货币,比如比特币。燃烧的代币越多,用户被选中挖掘下一个区块的机会就越大。
久而久之,用户在系统中的权益会被削弱。因此,为了增加在这个游戏中被选中的机会,最终用户会考虑燃烧更多的代币(这可以比喻为比特币的挖矿过程,用户必须不断投资更现代的计算设备来维持哈希能力)。
尽管PoBurn是PoW一个有趣的替代方案,但是这个协议仍然会不必要地浪费资源。还有一种批评是,挖矿能力只会青睐那些愿意多烧钱的人。
14.身份证明(PoI)解释:PoI是一段表示加密事实的数据。它允许用户指定一个私钥,该私钥对应于一个经过验证的身份,并且加密将被附加到指定的交易中。某些组中的每个人都可以创建PoF(因为它只是一段数据),并将数据展示给处理该节点的任何其他人。
阅读:身份证明
15.活动证明的使用者:已颁布
解释:为了避免恶性通货膨胀(当大量货币充满系统时就会发生),只会产生2100万个比特币。这意味着在某个时候,比特币区块奖励补贴将被终止,比特币矿工将只能收取交易费用。
有人推测,这可能导致“公地悲剧”引发的安全问题。人们为了自己的利益而行动,破坏制度。因此,人们提出了PoActivity作为替代比特币的激励结构。PoActivity是一种结合了PoW和PoS混合方法。
在PoActivity中,在挖掘之初使用传统的PoW,矿工们争先恐后地解决加密问题。根据实现,挖掘的块不包含任何事务,它们更像模板。因此,获胜块将只包含标题信息,以及矿工的奖励地址。
此时,系统将切换到PoS。PoActivity根据头部信息选择一组随机验证者对新块进行签名。如果一个验证者在系统中拥有越多的令牌,该验证者就越有可能被选中。一旦所有的验证者都签署了,模板将成为一个完整的块。
如果当该块完成时一些选定的验证者不可用,则选择下一个获胜的块,并且选择新的一组验证者,等等,直到该块接收到正确数量的签名。费用由签署区块的矿工和验证者共同承担。
对PoActivity的批评包括采矿块消耗太多能量(像power)并且不能阻止验证者进行双重签名(像PoS)。
16.PoTime用户的证明:年代学
说明:PoTime是由Chronologic提出的共识算法。Chronologic设计建造了独立的区块链,其首席开发者提出:
我们的问题是,可以存储在Solidity中的变量的最大数量是1076。这使得我们很难处理时间生成和令牌生成。
阅读:时间的证明
17.Poe存在的证明:Poex.io,HeroNode,DragonChain。
解释:PoExistence是一项在线服务,它通过比特币区块链为交易打上时间戳,并在特定时间验证计算机文件的存在。
PoExistence于2013年作为开源项目提出,由Manuel Araoz和Esteban Ordano开发。
使用案例:
不透露实际内容的数字签名协议。
不要透露实际数据,显示数据的所有者。
记录时间戳。
所有权证明。
检查文档完整性。
阅读:存在的证明
18.大毒蛇用户:卡尔达诺
说明:大毒蛇是卡尔达诺使用的共识算法。它是PoS的变种,有严格的安全保障。
延伸阅读:大毒蛇
19.微软采用的可检索性证书证明(PoR)
解释:PoR是一个紧凑证明,这意味着文件系统(证明者)中的目标文件F对于客户端(验证者)来说是完整的。因为使用PoR的通信复杂度低于传输文件F本身的通信复杂度,所以PoR是构建高度可靠的远程存储系统的有吸引力的构建块。作为一种共识算法,PoR对于云计算系统非常有用。
更多细节在“延伸阅读”中提供。
扩展:可检索性的证明
20.拜占庭容错优势:
高速。
可扩展。
不足:
通常用于私有网络和许可网络。
采用者:Hyperledger Fabric、Stellar、Ripple、Dispatch
说明:拜占庭将军问题是分布式计算中的经典问题。问题被描述为,几个拜占庭将军带领军队包围了一座城市。他们必须一致决定是否发动围攻。如果一些将军决定在没有其他将军参与的情况下发动围攻,那么他们的行动将以失败告终。将领之间相隔一定距离,必须依靠信息传递进行交流。一些加密货币协议在达成共识时使用特定版本的BFT,每个版本都有自己的优缺点:
实用拜占庭容错(PBFT):第一个针对这个问题提出的解决方案叫做“实用拜占庭容错”(PBFT),已经被Hyperledger Fabric采用。PBFT使用少量预选的将军(不到20人,稍后会略有增加),因此它的运行效率很高。它的优点是事务流量和吞吐量高,缺点是它是集中式的,用于授权网络。
FBA(联邦拜占庭协议):另一个拜占庭通用问题的解决方案是FBA,已经被Stellar、Ripple等令牌使用。FBA的大致思路是,每个拜占庭将军负责自己的链条,消息一到,就通过排序确立事实。在Ripple中,将军(验证者)是由Ripple Foundation预先选定的。在Stellar中,任何人都可以成为验证者,用户需要选择信任哪个验证者。
由于FBA可以提供令人难以置信的吞吐量、低事务开销和网络可扩展性,我相信FBA公式算法是目前提出的最好的分布式一致性发现算法。
21.授权拜占庭容错算法(dBFT,delegated Byzantine fault tolerance)优点:
很快。
可扩展。
不足:
大家都在争着做根链。可能有多个根链。
收养人:尼奥。
说明:授权拜占庭容错算法,简称dBFT,是一种拜占庭容错共识算法,通过代理投票支持大规模参与共识。在Neo中,代币持有者可以通过投票选择自己支持的记账人。之后,被选中的簿记员群体通过BFT算法达成共识,生成新的区块。Neo网络中的投票是实时的,而不是个人的。
对于具有共识节点的共识系统,DBFT可以给出f=N13。
容错。这种容错还涵盖了安全性和可用性,不受一般和拜占庭错误的影响,适用于任何网络环境。DBFT具有良好的终结性,这意味着一旦它被最终确认,块将不会分叉,并且事务不会被撤销或回滚。
Neo的dBFT机制需要15到20秒才能生成一个块。事务吞吐量大约为1000 TPS。这对区块链来说是一次很好的表演。通过一定的优化,dBFT有潜力达到10000 TPSS,可以支持大规模的商业应用。
dBFT中加入了数字身份技术,这意味着记账人可以是真实的个人,也可以是某个组织。因此,dBFT可以根据自己的司法判决冻结、撤销、继承、取回和拥有兑换代币的权利。有利于合规金融资产在Neo网络中的登记。近地天体网络旨在必要时为此提供支持。
阅读:dBFT
22.大量
优势:
该模型比Paxos简单,但它提供了同等的安全性。
可以用多种语言实现。
不足:
通常用于私有网络和许可网络。
采纳者:IPFS私人集群和法定组织。
说明:Raft是一种共识算法,旨在取代Paxos。它的初衷是实现逻辑分离,比Paxos更容易理解。但是它也可以被正式证明是安全的,并且提供了一些额外的特性。Raft提供了一种在计算系统集群中实现分布式状态机的通用方法,它确保集群中的每个节点都同意同一组状态转换。它有一系列开源参考实现,包括Go、C、Java、Scala等语言的全声明实现。
Raft通过选择领导者来达成共识。在Raft集群中,一个服务器可以是领导者,追随者,或者在某些特定的选举情况下(比如缺乏领导者)是候选人。领导者负责将日志副本发送给追随者。领导者定期通过发送心跳消息来通知追随者他们自己的生存情况。每个跟随者都有一个超时时间(通常在150到300毫秒之间),在这个时间内通常会收到领导者的心跳。一旦接收到心跳,超时将被重置。如果没有收到心跳,追随者会将其状态更改为候选人,并开始领袖选举。
为了理解RAFT,我强烈推荐这张信息图。
延伸阅读:木筏。
23.恒星共识的优势:
分散控制。
低延迟。
灵活的信任机制。
渐近安全。
采用者:恒星
说明:星际共识是基于上面介绍的联邦拜占庭共识(FBA)。
SCP (Stellar Consensus Protocol)提供了一种不依赖封闭系统准确记录金融交易而达成共识的方式。SCP具有一组可验证的安全属性,这些属性根据如何安全地保持活动而被优化。一旦出现分区或行为不当的节点,它将终止网络进程,直到达成共识。SCP有四个属性:分散控制、低延迟、灵活的信任机制和渐进安全。
延伸阅读:恒星共识
24.信念证明的优点(PoB):
通过使用被称为“服务”的概念,PoB比传统的参与组织更加分散(详情见下文)。
与传统的PoS相比,它具有更快的终结性。
收养人:IOST
解释:传统PoS共识机制的主要挑战是它倾向于集中化。为了降低这种风险,IOST引入了“服务”的概念。Servi不仅衡量用户对社区的贡献,还鼓励会员为IOSChain的可持续发展做出贡献。Servi具有以下属性:
不可交易:Servi不能以任何方式交易或交换,因为它不是作为交换媒介而设计的。
自毁:验证完block后,系统会自动清空验证者拥有的Servi余额。这样,可信度分数高的节点可以轮流验证块,从而保证公平块的生成。
自发行):SERVI在做出一定的贡献(例如,提供社区服务、评价其他实体提供的服务、其他特殊贡献)后,Servi会自动生成并存入用户账户。
传统的区块链系统在安全性和吞吐量之间存在固有的权衡,这取决于分片的大小。有大量小补丁的系统可以提供更好的性能,但是对抗不良行为的稳定性低,反之亦然(这也是Casper面临的问题)。为了在保持安全性和提高吞吐量的同时打破这种平衡,IOST创新性地为IOSChain提出了PoB共识协议。PoB保证了节点行为不当的可能性非常小,同时通过确定size-one-shard,显著提高了事务吞吐量。
PoB共识协议在片段中使用“可信度优先”的方法。协议将所有验证者分为两组,一组是可信联盟,另一组是正常联盟。在第一阶段,可信验证者快速处理交易。然后,在第二阶段,普通验证者对交易进行取样和验证,提供最终结果并确保可验证性。节点被选入可信联盟的机会由可信度分数决定。可信度分数是由很多因素计算出来的,包括代币余额、对社区的贡献、评论等。可信度得分较高的人更有可能被选入可信联盟。验证者遵循一定的程序,决定提交的事务集及其顺序,并按顺序处理它们。验证者还可以组成一些更小的组,甚至每组一个验证者。交易将在这些可信的验证者中随机分配。因此,PoB将产生一个具有极低延迟的较小数据块。
但是,由于只有一个节点执行身份验证,因此PoB可能存在安全问题。不适当的验证者可能会提交一些损坏的交易。为了解决这个安全问题,PoB规定了一个抽样概率。普通验证者根据概率对交易进行采样,检测交易的不一致性。如果检测到验证者有不良行为,验证者将失去系统中的所有令牌和信誉,被骗用户的所有损失将得到赔偿。“信誉第一”使得交易处理速度非常快,因为只有一个(可信的)验证者进行验证,这个验证者不太可能出现不当行为。
关于碎片化策略的更多信息,请参考“延伸阅读”。
阅读:可信度的证明
25.有向无环图
优势:
DAG由于其非线性结构而具有高度的可扩展性。
很快。
节能。
立即实施终结。
不足:
智能合约只能通过使用Oracle来实现。
采用者:Iota,HashGraph,Byteball,RaiBlocks/Nano。
说明:DAG是区块链的一种更一般的形式。由于其独特的结构,DAG天生支持高可扩展性,因此也被广泛使用。
从根本上说,任何区块链系统都有一个线性结构,因为块被依次添加到链中。与向链中并行添加块相比,这使得线性区块链本质上非常慢。但是,对于DAG,每个块和事务只能通过确认前面的几个块来并行添加到块和事务中。这意味着DAG本质上是高度可扩展的。
DAG有多种变体,具体取决于:
如何选择早期块验证的算法,也称“尖点选择算法”。
交易完成的顺序。
如何达到完成状态?
下面是一些广泛使用的DAG项目。
25.1纠结(IOTA)
说明:Tangle是一种DAG共识算法,IOTA使用。为了发送IOTA事务,用户需要验证前两个接收到的事务。随着更多的交易加入到Tangle中,这种二对一的共识和前瞻性支付可以加强交易的有效性。既然共识是由交易决定的,那么理论上,如果有人能产生三分之一的交易,那么他就能说服网络的其余部分,使他的无效交易有效。一旦交易量大到个人很难创造出三分之一的交易量,IOTA就会在一个叫做“协调者”的中心节点上对网络中的所有交易进行双重检查。按照ITOA的说法,协调员的工作类似于一个辅助轮。一旦Tangle达到一定规模,协调者就会被清除出去。
阅读:纠结
25.2哈希图
说明:Hashgraph是由Leemon Baird开发的一个Gossip协议的共识。节点随机与其他节点共享自己已知的事务,最后所有事务通过Gossip协议传播到所有节点。Hashgraph对于私有网络来说是个不错的选择。但是我们没有看到它在以太坊这样的公共网络中实现,或者在没有Gossip协议的情况下随机传播交易。
25.3全息链
说明:全息链与HashGraph非常相似,但又不同。它提供了一种可用于构建分散式应用程序的数据结构。用户可以拥有自己的链,并向其中添加包括金融交易在内的数据。链可以以复杂的方式合并、分裂和相互作用。数据以分散的方式存储(类似于Bittorrent)。数据有一个哈希值,也就是数据对应的数学指纹。如果有人试图篡改数据,那么我们会注意到数据和哈希值之间存在不匹配,这样数据就可以作为无效数据被拒绝。数字签名保证了数据的真实性。全息链可以看作是“Bittorrent git数字签名”。
阅读:全息链
25.4块点阵(纳米)
说明:纳米(原名Raiblocks)在区块链上以蜿蜒的形式运行,被称为“块格”。在块格结构中,每个用户(地址)都有自己的链,只有用户自己可以写,每个用户都有所有链的副本。
每个事务可以分解为发送方链上的发送块和接收方链上的接收块。Block-lattice似乎太简单了,无法工作,但它已经在运行了。块格的独特结构不能抵抗一些独特的攻击向量,如花钱攻击。在这种攻击中,攻击者向大量空钱包发送微不足道的钱,导致必须跟踪的链数量急剧膨胀。
25.5幽灵
解释:SPECTRE(工作证明事件的序列化,通过循环选举确认交易)是一个提议的比特币扩展解决方案。它使用PoW和DAG的组合来实现可扩展的共识。在SPECTER中,挖掘的块指向多个父节点,而不仅仅是单个节点,这使得网络每秒可以处理多个块。并且挖掘指向一些父块的块,这将支持块的有效性。相比PoW的“链最长者胜”原则,SPECTER使用的原则可谓“子节点最多者胜”。SPECTRE没有经过实际测试,所以可能会有一些新的攻击媒介。然而,我认为SPECTRE很可能是纠正比特币问题的潜在良好做法。
25.6字节球
说明:ByteBall使用DAG建立事务之间的偏序关系,并在DAG中额外增加了“MC,Main Chain”。
MC允许您定义事务之间的全序关系,即较早加入MC(直接或间接)的事务必须在全序中较早出现。如果存在“重复支付”问题,则整个订单中出现的较早版本的交易将被视为有效,而其他所有交易将被视为无效。
根据事务在图中的位置,MC可以得到确定性的定义。详情请参考白皮书。一般来说,MC倾向于采用一些知名用户给出的交易,这些用户被称为“见证人”。见证列表由用户自己定义,因为该列表包括用户发布的每个事务。然后,MC沿着DAG内的路径前进。推进原则包括:
1.1上相邻交易的见证人名单。MC要么是相同的,要么只有一个突变。
2.与其他连锁店相比,MC的见证交易数量最多。
字节球也是第一个将甲骨文纳入系统的平台。Oracle需要在DAG中添加智能合同功能。
这里只给出一些非常简短和粗略的描述,其中省略了很多重要的细节。有关相关技术的整体了解,请参考ByteBall白皮书。
阅读:字节球
结束语
就是这样。如果读者发现有遗漏或错误的地方,请在评论中留言。
感谢阅读。
作者简介Vaibhav Saini是由麻省理工学院剑桥创新中心孵化的初创公司TowardsBlockchain的联合创始人。Saini是一名资深区块链开发人员,拥有在以太坊、Quorum、EOS、Nano、Hashgraph和IOTA等各种区块链平台的工作经验。塞尼目前是德里IIT大学的二年级学生。
查看英文原文:consensus pedia:30个共识算法的百科全书——所有共识算法的完整列表。