扒开区块链美丽外表,三十种共识算法,直抵背后的灵魂

作者:Vaibhav Saini

编译:盖磊

共识算法是所有区块链 /DAG 的基础,它们构成了区块链 /DAG 平台中的最重要部分。本文中列出了 30 种主要的共识算法,对算法做了概要介绍,并评估了各自的优劣之处。

共识算法是所有区块链 /DAG 的基础,它们构成了区块链 /DAG 平台中的最重要部分。

如果没有共识算法,我们得到只是一个不可写的哑(dummy)数据库。

我将在本文中尽可能列出所有主要的共识算法,评估各自的优劣之处。如果读者发现有所遗漏,或是存在错误,希望能通过评论指出。此外,我个人也在逐步深入研究共识算法及其对经济的影响,为此本文也将做定期的更新。

另:本文假定读者理解共识算法及其在区块链中的重要性。

下面列出 30 种共识算法。

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 的运行可以比其它共识算法呈数量级快。EOS(使用了 DPoS)是首个实现 0.5 秒生成块的区块链!

这非常快!

5. 权威证明(PoA,Proof-of-Authority)

优点:

节能。

快速。

不足:

略为中心化。虽然可用于公有区块链,但是通常用于私有区块链和许可区块链。

使用者:POA.Network、Ethereum Kovan testnet、VeChain。

类型:协同型共识。

解释:基于 PoA 的网络、事务和区块,是由一些经认可的账户认证的,这些被认可的账户称为“验证者”(Validator)。验证者运行的软件,支持验证者将交易(transaction)置于区块中。该过程是自动的,无需验证者持续监控计算机,但需要维护计算机(权威节点)不妥协(uncompromised)。

验证者必须满足以下三个条件:

其身份必须在链上得到正式验证,信息可在公有可用域中交叉验证。

其资格必须难以获得,这样所得到的验证块的权利才弥足珍贵(例如,潜在的验证者需要获得公证书)。

建立权威的检查和程序必须完全统一。

使用 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 核的暴力攻击,该过程是不可能并行化的。

因此我们可以确认,每个计数器在生成过程中都的确经历了一定的时间。进而,每个计数器记录的顺序与实时情况是一致的。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180718B1ZPO800?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券