广告
广告
广告
广告
广告

区块链共识算法大全及解释

当前位置:首页 > 区块链 > 区块链知识 发布时间:2019-01-14编辑:来源:www.chgold.com阅读数: 手机阅读
共识算法是所有区块链/DAG的基础,它们构成了区块链/DAG平台中的最重要部分。如果没有共识算法,我们得到只是一个不可写的哑(dummy)数据库。我将在本文中尽可能列出所有主要的共识算法,评估各自的优劣之处。如果读者发现有所遗漏,或是存在错误,希望能通过评论指出。此外,我个人也在逐步深入研究共识算法及其对经济的影响,为此本文也将做定期的更新。下面列出共识算法。1. 工作量证明(PoW,Proof of Work)优点: 自2009年以来得到了广泛测试,目前依然得到广泛的使用。不足:速度慢。耗能巨大,对环境不好。易受“规模经济”(economies of scale)的影响。使用者:Bitcoin、Ethereum、Litecoin、Dogecoin等。类型:有竞争共识(Competitive consensus)。解释:PoW是是首个共识算法。它是由中本聪在他的论文中提出的,用于建立分布式无信任共识并识别“双重支付”(double spend)问题。PoW并非一个新理念,但是中本聪将Pow与加密签名、Merkle链和P2P网络等已有理念结合,形成一种可用的分布式共识系统。加密货币是这样系统的首个基础和应用,因而独具创新性。在PoW的工作方式中,区块链参与者(称为“矿工”)要在区块链中添加一块交易,必须解决某种“复杂但是无用”的计算问题。本质上,这种做法可确保矿工花费了一些金钱或资源(矿机)完成工作,这表示了它们将不会损害区块链系统,因为对系统的损害也将会导致投资的损失,进而损害他们自身。为保证运行区块时间不变,问题的复杂性会发生变化。有时,会存在多名矿工同时解决了问题。在这种情况下,每位矿工从中选取一个区块链,并以选取最长链者为获胜者。因此,如果假定大多数矿工工作在同一个链上,那么成长最快的链将成为最长和最值得信任的链。这样,只要由矿工提交的工作有超过一半是值得信任的,那么Bitcoin就是安全的。2. 权益证明(PoS,Proof of Stake)优点:节能、攻击者代价更大、不易受“规模经济”的影响。不足:“无利害关系“(Nothing at stake)”攻击问题。使用者:Ethereum(即将推出)、Peercoin、Nxt。类型:有竞争共识。解释:PoS是作为Pow的替代技术提出的,意在解决PoW的一些内在问题。PoS没有使用挖矿方法,而是用户必须具有系统中的一些权益(币)。因此,如果用户拥有10%的权益(代币),那么该用户挖掘下一个区块的可能性就是10%。挖矿为解决计算上的挑战,需要运行各种加密计算,这需要耗费大量的算力。算力将转变为PoW所需的大量电能。据估计在2015年时,一个Bitcoin交易所需的电力,可达1.57个美国家庭一日所需的电力。PoS的提出是为了节约电力耗费。在PoS中,一个美元就是一个美元。例如,假定有一万名每位每分钟花费1美元(一年8760万美元)的矿工,要比一位具有每分钟花费一万美元挖掘矿池能力的矿工拥有更少的哈希能力(Hashing Power)。但是在PoS中不支持一次用光所有算力,一美元就是一美元。因此PoS不易受“规模经济”的影响。此外,攻击PoS系统也要比攻击PoW系统的代价更大。引用Vlad Zamfir的说法:在PoS中,重复51%攻击的代价,可类比为每额外运行一轮,都会“烧毁你的ASIC农场”。这意味着,每次攻击PoS系统,攻击者都会失去自己的权益。而在PoW中,攻击者不会丢失挖矿设备,或是代币。对PoW系统的攻击只会使攻击本身难以执行。

但是PoS会在“无厉害关系”上出问题。这种对多个区块历史(forks)投票的方式不会让区块生成器有任何损失,进而阻碍了达成共识。

在 PoS 中,你可以在区块链的双方押注资产(“无厉害关系”问题)。而在 PoW 中,你不能从链的两个方向同时挖矿,因为这难以实现。不同于 PoW 系统(用户为扩展链必须做大量的计算),PoS 在多个链上工作的代价很小。有一些项目试图通过多种方式解决这个问题(参见“扩展阅读”)。例如,一个解决方案就是上文所介绍的,对不好的验证者做惩罚。3. 延迟工作量证明(dPoW,Delayed Proof-of-Work)、优点:节能、安全性增加、可以通过非直接提供 Bitcoin(或是其它任何安全链),添加价值到其它区块链,无需付出 Bitcoin(或是其它任何安全链)交易的代价。不足:只有使用 PoW 或 PoS 的区块链,才能采用这种共识算法。在“公证员激活”(Notaries Active)模式下,必须校准不同节点(公证员或正常节点)的哈希率,否则哈希率间的差异会爆炸(下文将给出详细解释)。采用者:Komodo类型:协同型共识(Collaborative consensus)解释:dPoW 是一种混合共识方法,允许一个区块链利用第二个区块链的哈希算力(Hashing Power)所提供的安全。该机制是通过一组公证员节点(Notary Node)实现的。公证员节点实现将第一个区块链的数据添加到第二个区块链中。进而,第二个区块链请求在两个区块链间达成妥协,弱化第一个区块链的安全。Komodo是首个使用该共识方法的区块链,它就是附加于 Bitcoin 区块链之上的。

使用 dPoW 的区块链也可以使用 PoW 或 PoS 共识方法工作,并可以附加在任何采用 PoW 的区块链上。但对于由 dPoW 提供安全的区块链,当前 Bitcoin 给出了最高安全层级的哈希率。下图展示了主区块链的单个记录以及其所附着的 PoW 区块链。

dPoW 系统中有两种类型的节点:公证人节点和正常节点。64 个公证人节点是由 dPoW 区块链的权益持有者(stakeholder)选举产生的,它们可从 dPoW 区块链向所附加的 PoW 区块链添加经公证确认的块。一旦添加了一个块,该块的哈希值将被添加到由 33 个公证人节点签署的 Bitcoin 交易中,并创建一个哈希到 Bitcoin 区块链的 dPow 块记录。该记录已被网络中的大多数公证人节点公证。为避免公证人节点间在挖矿上产生战争,进而降低网络的效率,Komodo 设计了一种采用轮询机制的挖矿方法。该方法具有两种运行模式。在“无公证人”(No Notary)模式下,支持所有网络节点参与挖矿,这类似于传统 PoW 共识机制。而在“公证人激活”(Notaries Active)模式下,网络公证人使用一种显著降低的网络难度率挖矿。“公证人激活”模式下,允许每位公证人使用其当前的难度挖掘一个区块,而其它公证人节点必须采用 10 倍难度挖矿,所有正常节点使用公证人节点难度的 100 倍挖矿。但这会导致一些问题。我在与 Komodo 创始人的一次谈话中提及,这将导致公证人矿工和正常矿工间的哈希率存在很高的差异:

图 本文作者与 Komodo 创始人间就不一致性问题进行交流的截图dPoW 系统在设计上支持区块链在没有公证人节点的情况下继续运行。在这种情况下,dPoW 区块链可以基于初始的共识方法继续运行,但将不再具有所附着区块链增添的安全。

所有使用 dPoW 的区块链可增加安全,同时降低能耗。例如,Komodo 使用 Equihash 哈希算法防止使用 ASIC 挖矿。其公证人节点依赖于一种轮询挖矿方法,奖励机制考虑了降低节点间竞争的可能性。这些节点将会引发过度耗能或算力。此外通过非直接提供 Bitcoin 安全,Komodo 这类 dPoW 区块链可以向其它区块链添加价值,无需付出任何 Bitcoin 交易的代价。Komodo 此后附着到 Bitcoin,而第三个使用 dPoW 的区块链可以将自身附着到 Komodo。使用这种方式,dPoW 区块链不必直接附着到 Bitcoin 区块链,就从 Bitcoin 的高哈希率中受益。最后一点,公证人节点和正常节点分离的功能,确保了初始共识机制在公证人节点失败时继续运行。这种相互独立性建立了一种奖励机制,使得其它网络无需依赖于 Bitcoin 网络的直接功能,即可支持 Bitcoin 网络的继续维护。4. 授权 PoS(DPoS,Delegated Proof-of-Stake)优点:节能、快速、高流量博客网站Steemit就使用了它。EOS 的块时间是 0.5 秒。不足:略为中心化、拥有高权益的参与者可投票使自己成为一名验证者。这是近期已在 EOS 中出现的问题。采用者:BitShares、Steemit、EOS、Lisk、Ark。类型:协同型共识解释:在 DPoS 系统中,权益持有者可以选举领导者(或称为见证人,Witness)。经权益持有者授权,这些领导者可进行投票。该机制使得 DPoS 要快于正常的 PoS。例如,EOS 中选举出 21 位见证人,并且有一堆节点(潜在的见证人)作为候选者。一旦见证人节点死亡或是做出了恶意行为,新节点就会立刻替代见证人节点。见证人会因为生成区块而获得一笔支付费用。该费用是由权益持有者设立的 。通常,所有节点采用轮询方式,一次生成一个区块。该机制防止一个节点发布连续的块,进而执行“双重支付”攻击。如果一个见证人在分配给他的时间槽中未生成区块,那么该时间槽就被跳过,并由下一位见证人生成下一个区块。如果见证人持续丢失他的区块,或是发布了错误的交易,那么权益持有者将投票决定其退出,用更好的见证人替换他。在 DPoS 中,矿工可以合作生成块,而不是像在 PoW 和 PoS 中那样竞争生成。通过区块生成的部分中心化,DPoS 的运行可以比其它共识算法呈数量级快。5. 权威证明(PoA,Proof-of-Authority)优点:节能、快速。不足:略为中心化。虽然可用于公有区块链,但是通常用于私有区块链和许可区块链。使用者:POA.Network、Ethereum Kovan testnet、VeChain。类型:协同型共识。解释:基于 PoA 的网络、事务和区块,是由一些经认可的账户认证的,这些被认可的账户称为“验证者”(Validator)。验证者运行的软件,支持验证者将交易(transaction)置于区块中。该过程是自动的,无需验证者持续监控计算机,但需要维护计算机(权威节点)不妥协(uncompromised)。验证者必须满足以下三个条件:1. 其身份必须在链上得到正式验证,信息可在公有可用域中交叉验证。2. 其资格必须难以获得,这样所得到的验证块的权利才弥足珍贵(例如,潜在的验证者需要获得公证书)。3. 建立权威的检查和程序必须完全统一。使用 PoA,每个个体都具有变成验证者的权利,因此存在一旦获取就保持验证者位置的动机。通过对身份附加一个声誉,可以鼓励验证者去维护交易的过程。因为验证者并不希望让自己获得负面声誉,这会使其失去来之不易的验证者地位。6. 权重证明(PoWeight,Proof-of-Weight)优点:节能、高度可定制和可扩展不足:可能难以实现激励、采用者:Algorand。类型:有竞争共识。解释:权重证明(PoWeight)是一类很宽泛的共识算法,它基于Algorand共识模型。其基本理念是在 PoS 中,用户所拥有的网络中令牌的百分比,表示了该用户“发现”下一个区块的概率。PoWeight 系统中还使用了其它一些相对加权值,实现包括声望证明(PoR,Proof of Reputation)和空间证明(Proof of Space)。7. 声誉证明(PoR,Proof of Reputation)优点:非常适用于私有区块链和许可区块链。不足:只能用于私有区块链和许可区块链。采用者:GoChain。类型:协同型共识。解释:PoR 类似于 PoA。GoChain 文档中给出了如下描述:PoR 共识模型依赖参与者在保持网络安全中的声誉。参与者(区块签名者)必须具有足够重要的声誉。一旦他们尝试欺骗系统,那么他们将要面对严重的财政上的和自己名声上的后果。这是一个相对的概念,如果他们被抓到试图欺骗,那么几乎所有的业务将会受到严重的影响。规模越大的企业,通常将会失去更多。这样,相比使用更少的企业(即更小规模的商业),规模更大的企业更易于被选定。一旦一个企业证明了自己的声誉,并通过了验证,那么他们必须经投票参与到权威节点网络中。这时,PoR 的操作与 PoA 网络一样,即只有权威节点可以签名并验证区块。8. 所用时间证明(PoET,Proof of Elapsed Time)优点:参与代价低。更多人可轻易加入,进而达到去中心化。对于所有参与者而言,更易于验证领导者是通过合法选举产生的。控制领导者选举过程的代价,是与从中获得的价值成正比的。不足:尽管 PoET 的代价低,但是必须要使用特定的硬件。因此不会被大规模采纳。不适用于公有区块链。采用者:HyperLedger Sawtooth类型:有竞争共识解释:PoET 共识机制算法通常用于许可区块链网络,它可决定网络中获得区块者的挖矿权利。许可区块链网络需要任何预期参与者在加入前验证身份。根据公平彩票系统的原则,每个节点具有同等的可能成为胜出者。PoET 机制赋予大量可能的网络参与者以平等胜出的机会。PoET 的工作机制如下:网络中的每位参与节点都必须等待一个随机选取的时期,首个完成设定等待时间的节点将获得一个新区块。区块链网络中的每个节点会生成一个随机的等待时间,并休眠一个设定的时间。最先醒来的节点,即具有最短等待时间的节点,唤醒并向区块链提交一个新区块,然后广播必要的信息到整个对等网络中。同一过程将会重复,以发现下一个区块。在 PoET 网络共识机制中,需要确保两个重要因素。第一,参与节点在本质上会自然地选取一个随机的时间,而非某一个参与者为胜出而刻意选取了较短的时间。第二,胜出者的确完成了等待时间。PoET 理念是由著名的芯片制造巨头 Intel 于 2016 年早期提出的。Intel 为解决“随机领导者选举”的计算问题,实现了一个可用的高科技工具。这种内在机制允许应用在受保护的环境中执行受信任的代码,它确保了上面提出的两个要求得到满足,即随机选择所有参与节点的等待时间,以及胜出参与者真正完成了等待时间。这种在安全环境中运行可信代码的机制也同时考虑到了其它一些网络的需求。它确保了受信代码的确运行在安全环境中,并不可被其它外部参与者更改。它也确保了结果可被外部参与者和实体验证,进而提高了网络共识的透明度。PoET 通过控制代价实现了共识过程,该代价依然是与从过程中获得的价值成正比。这是保证加密货币经济持续繁荣的一个关键需求。 9. 容量证明(PoC,Proof of Capacity),也称为空间证明(PoSpace,Proof of Space)优点:它类似于 PoW,只是使用空间替代了计算。因此更加环境友好。可用于恶意软件检测。通过确定处理器的 L1 缓存是否为空(例如,具有足够空间在没有缓存未命中的情况下计算 PoSpace 过程),或是包含一个拒绝被逐出(evicted)的例程。可用于反垃圾邮件措施,以及防范拒绝服务(DoS)攻击。不足:激励机制可能存在问题。使用者: Burstcoin、Chia、SpaceMint。类型:协同型共识。解释:PoSpace,也称为 PoC,通过分配一定数量的内存或磁盘空间用于解决服务提供者所提供挑战的方式,显示了某个人对某个服务(例如发送邮件)具有合法的兴趣。该理念是由 Dziembowski 等在 2015 年形式化定义的。虽然 Ateniese 等人的论文名称也是“Proof-of-space”,但它事实上一种采用 MHF(Memory Hard Function,一种计算代价取决内存的哈希算法)的 PoW 协议。PoSpace 非常类似于 PoW,只是使用存储替代了 Pow 中的计算。PoSpace 与 MHF 和可回收性证明(PoR,Proof of Retrievability)有关,但也在很大程度上存在着差异。PoSpace 是由证明者 (Prover) 发送给验证者 (Verifier) 的一小块数据,该数据确认了证明者已经保留了一定量的空间。出于实用性上的考虑,验证过程需要尽量高效,即消耗尽可能少的空间和时间。出于公平性上的考虑,如果验证者没有保留所声明数量的空间,那么它应该难以通过验证。PoSpace 的一种实现方式是通过使用一个难以实现 Pebbling 的图。验证者请求证明者构建对一个“非 Pebbling 图”标记。证明者提交标记,进而验证者请求证明者在提交中开放多个随机位置。由于存储的通用本质,以及存储所需的更低耗能,PoSpace 被认为是一种更公平、更绿色的替换方法。10. 历史证明(PoHistory,Proof of History)采用者:Solana解释:其基本理念是不相信交易中的时间戳,而是证明交易在某个事件之前或之后的某个时刻发生。如果我们对某期《纽约时报》的封面拍了张照片,那么我们就创建了一个证明,即我们的拍照时间是在该报纸发行之后,或许也可能是我们有某种途径影响了纽约时报的正常发行。我们可以使用 PoHistory 创建一个历史记录,证明一个事件是发生在特定时间之后的。

PoHistory 是一种高频可验证延迟函数(VDF,Verifiable Delay Function)。VDF 求值需要完成特定数量的顺序步骤,然后生成一个唯一的输出。该输出可被高效地和公开地验证。VDF 的一个特定实现使用了持续运行于其上的顺序抗预映射哈希(Pre-image Resistant Hash),其中前一次循环生成的输出将用于下一次循环的输入。计数和当前输出形成周期性记录。如果使用了 SHA256 哈希函数,那么不使用 2128核的暴力攻击,该过程是不可能并行化的。因此我们可以确认,每个计数器在生成过程中都的确经历了一定的时间。进而,每个计数器记录的顺序与实时情况是一致的。11. 权益流通证明(PoSV,Proof of Stake Velocity)采用者:Reddcoin解释:PoSV 是作为 PoW 和 PoS 的一种替代方法而提出的,其目的是提高 P2P 网络的安全性,进而用于确认 Reddcoin 交易。Reddcoin 是一种加密货币,专为加速数字化时代的社交交互而提出的。PoSV 在设计上鼓励所有者(权益)和活动(流通),直接对应于 Reddcoin 作为真实货币的两个主要功能,即存储价值和交换中介。Reddcoin 也可在异构社交场景中作为计量单位使用。12. 重要性证明(PoImportance,Proof of Importance)优点:在权益计算方面要优于 PoS。使用者:NEM解释:NEM 共识网络不仅依赖于代币的数量,而且依赖于生成系统行动得到回报的可能性。区块收益机率是各种因素之一,此外还包括不好的名声(受控于不同的框架设计目的)、差额,以及从该处做出和得到的交易数量。它也被称为“重要性计算”(Importance Calculation),因为它可为“有用的”系统成员提供更全面的图像。一名用户要具有资格执行重要性计算,其账户余额至少需要为 10000 枚 XEM。考虑到只有不到 90 亿枚 XEM 在流通,实现这一目标并非过于昂贵。在未来 10000 枚 XEM 的阈值有可能会发生变化,但就目前而言,它仍然没有变化。重要性计算是使用特定算法完成的,而不仅仅考虑用户份额的概率和规模。需要指出的是,NEM 的 PoImportance 对任何操控都具有抵制力。该共识的底层机制可缓解女巫攻击(Sybil Attack)和循环攻击问题。谨记,“PoImportance 并非 PoS”,尽管两者很容易被同等看待。13. 烧毁证明(PoBurn,Proof of Burn)采用者:Slimcoin、TGCoin(第三代代币)。解释:PoBurn 并非在昂贵的计算设备上一掷千金,而通过发送代币到一个不可检索地址实现“烧钱”(Burn)。将代币发送到一个并不存在的地址,用户将根据某个随机选择过程,获得整个生命时间内对系统挖矿的特权。PoBurn 有多种实现方式,矿工可以烧毁原生的货币,或者烧毁一些其它区块链的货币,例如比特币等。烧毁的代币越多,用户就越有机会被选中去挖掘下一个区块。随时间的流逝,用户在系统的权益会得到弱化。因此,最终用户为增加在这个博彩中被选中的机会,会考虑烧掉更多的代币(这可类比于比特币的挖矿过程,用户必须不断投资更现代的计算设备以维持哈希能力)。尽管 PoBurn 是一种有意思的 PoW 替代者,但是该协议依然会毫无必要地浪费资源。另一个批评是,挖矿能力只会偏向于那些愿意烧掉更多钱的人。14. 身份证明(PoI,Proof of Identity)

上一篇比特币公钥、私钥、地址傻傻分不清楚?

下一篇比特币的信任模型