历史证明、权益证明、工作量证明 - 解释

  • Helius
  • 发布于 2023-09-23 15:51
  • 阅读 48

文章详细介绍了区块链中的共识算法,包括工作量证明(PoW)、权益证明(PoS)、委托权益证明(DPoS)和历史证明(PoH),并分析了它们的优缺点、工作原理以及在区块链中的应用。

18分钟阅读 原文写于 2023年9月21日

这篇文章讲些什么?

区块链是记录跨网络计算机交易的分布式账本。共识算法对于区块链至关重要,因为它们用于达成账本状态的一致性。它们促进了相互不信任参与者之间的协作,消除了需要集中实体在数据添加到区块链之前进行验证的必要性。如果没有共识算法,就无法确保所有节点对此区块链状态达成一致——我们将容易受到多种攻击路径的影响,面临双重支付的问题,妥协不可变性,并且没有好的方法来解决争议或分叉。

在这篇文章中,我们将深入探讨共识算法,了解它们的重要性以及在流行区块链中使用的不同类型。本文的目标是让你全面了解共识算法是什么,理解它们运作方式的重要性,以及介绍一些流行的共识算法的工作原理。

为什么你应该了解共识算法

理解共识算法对于有效构建你选择的区块链非常重要,原因如下:

  • 知道你的区块链如何达成共识,会影响你去中心化应用(dApp)开发的架构选择。你会询问诸如部署成本是多少?用户需要发送多少交易才能有效使用该dApp?发送交易的费用是多少?你最重要的问题是:确认的时间是多少?或者,交易需要多长时间才能被确认并添加到区块链中?
  • 了解共识算法的吞吐量和延迟特性可以帮助你选择适合部署你的dApp的正确区块链。询问有关你dApp架构的问题将让你意识到可以优化性能的领域。
  • 了解每种算法的安全关注点将帮助你设计更安全的应用程序。你的区块链的攻击路径有哪些?智能合约开发的设计影响是什么?
  • 了解你区块链共识算法的内部工作原理使你能够理解其投票机制的细微差别,从而积极参与治理。
  • 了解每个共识算法的特定经济激励有助于鼓励网络参与。如何参与网络并获得奖励?我应该避免哪些行为,以免受到惩罚?
  • 了解共识算法的基础知识将帮助你更好地理解新或更新的算法。如果你不理解权益证明(Proof of Stake),那你如何理解委托权益证明(Delegated Proof of Stake)或租赁权益证明(Leased Proof of Stake)?

什么是共识算法?

分布式计算中的一个主要挑战是实现可靠的系统性能,即使其某些组件发生故障。该问题在拜占庭将军问题中有所描述。该问题描述了一个思想实验:所有系统参与者必须就一种策略达成一致,以避免故障。它突出了在某些参与者可能表现出不可预测或恶意行为的网络中达成一致的困难。为了减轻这种情况,需要有恢复力的协调过程以建立单一的真实信息源。这确保了所有参与者在网络上可靠地行动。我们称这种有助于系统达成共同真实信息源的过程为共识算法

想象一下一个繁忙的城市交叉口,没有交通灯。汽车、卡车、自行车和行人都试图各行其道,争抢过马路的机会,这将导致绝对的混乱。会发生事故、误解,以及参与者之间的不信任。幸好,我们有交通灯。交通灯带来了秩序;告知谁可以通过,谁需要停车,适应实时条件。最重要的是,所有人都对交通灯达成一致。我们都同意这些规则,并且规则被统一适用。

共识算法是区块链的交通灯。它们设定了如何将交易添加到区块链的规则。通过为有效和无效的交易和区块发放“绿灯”和“红灯”,它们在网络中创建了安全高效的数据流动。这些规则以安全、透明的方式统一适用。共识算法适应不断变化的网络条件,以保持最佳性能,同时遵循这些规则。

共识算法对于区块链至关重要。如果没有它们,我们将无法在对抗环境中以统一的方式验证数据。相反,我们将陷入混乱。一种可能性是,我们很可能重新依赖中央权威进行验证,因为我们会对Sybil攻击和双重支付感到厌倦。我们需要共识算法,以确保我们的区块链保持安全、不可变和去中心化。

什么是工作量证明(Proof of Work)?

什么是工作量证明(PoW)?

工作量证明(Proof of Work, PoW)是一种加密证明,参与者(证明者)展示他们为另一方(验证者)花费了特定量的计算能力。验证者可以轻松验证这一支出。它是由Moni Naor和Cynthia Dwork于1993年发明的,用于阻止网络上的拒绝服务(DoS)攻击和垃圾邮件,后来在1999年Markus Jakobsson和Ari Juels的论文中得到了规范化。

工作量证明因比特币(Bitcoin)而广为人知,成为无许可去中心化网络共识的基础。中本聪在比特币白皮书中解释了工作量证明如何用于创建无需要中介的纯点对点电子现金版本。其他使用PoW共识算法的流行区块链包括莱特币(Litecoin)Kadena门罗币(Monero)以太坊经典(Ethereum Classic)。那么,它是如何工作的呢?

工作原理

工作量证明区块链要求网络参与者解决一个复杂的数学问题,使用大量的计算能力。目标是猜出一个64位的十六进制数字,称为哈希(hash)。找出这个哈希听上去很简单,但考虑到哈希是通过使用SHA256算法将包含在区块中的所有交易信息与一个随机的nonce(“仅用一次的数字”)哈希的结果时,这并不容易。第一个解决问题的参与者可以将下一笔交易添加到区块链,并获得预定数量的加密货币作为奖励。这个验证交易并将其添加到区块链的过程被称为挖矿(mining),网络参与者被称为矿工(miners)。

优点和缺点

工作量证明区块链的好处在于,任何人都可以参与挖矿,从而促进了去中心化分布式网络。攻击PoW网络所需的计算能力非常庞大。这使得单个实体执行51%攻击变得极其困难,尽管在理论上仍然可能。51%攻击是指恶意实体控制了网络大多数的哈希能力,从而能够操纵交易历史。工作量证明是相对简单易懂的共识算法,已经通过比特币实施并在规模上进行测试。

虽然这听上去很有优势,但工作量证明也有一些缺点。与挖矿硬件和电力相关的高成本已经导致挖矿在电力成本较低的地区中心化。这些高投入门槛意味着奖励分配不均,倾向于那些能够负担得起强大挖矿设备的人。这导致了大规模比特币挖矿场的创建。由于工作量证明的高能耗特性,一些环保问题已经被提了出来。这是以太坊在更新的版本中转向权益证明(Proof of Stake)的主要原因之一,更新标题为合并(The Merge)。那么,什么是权益证明呢?

什么是权益证明(Proof of Stake)?

权益证明(PoS)在区块链中的应用

权益证明(Proof of Stake, PoS)旨在解决与工作量证明相关的计算和能源密集型问题。权益证明不再依赖于计算能力来保护网络,而是根据参与者在网络中持有的代币数量选择验证者。2012年,Peercoin成为第一个使用权益证明的加密货币,虽然它与工作量证明系统一起使用。

工作原理

在权益证明中,矿工被替换为验证者,这些验证者提议和投票决定区块。这些验证者需要锁定一定数量的代币作为其在网络中的权益。网络根据一些因素(例如其权益的大小或持有时间)选择一个验证者来验证下一笔交易的区块。然后,由其他验证者对提议的区块进行验证和确认。如果该区块被确认有效,则将其添加到区块链。为此,验证者通过其验证努力赚取交易费用,有时还会获得新铸造的代币。如果区块被确认无效,则不会将其添加到区块链,且验证者会受到惩罚。这些验证者会被“削减”一部分权益,以此来惩罚恶意行为者提出虚假区块或在账本上制造不一致的行为。

优点和缺点

权益证明直接解决了高能耗的问题。以太坊从工作量证明切换到权益证明导致网络能耗降低99.84%。权益证明算法速度更快,更适合可扩展性,因为其算法设计用于更高的吞吐量。这些算法设计更迅速的最终性,意味着交易可以更快确认并添加到区块链。验证者也有经济激励,维护良好的验证基础设施,从而导致更快的验证时间。权益证明算法也更适合并行交易处理和分片。分片是网络被划分为更小片段或“分片”,独立并且并行处理交易。

然而,权益证明也有自身的缺点。虽然其能效更高,但验证者的奖励可能低于其工作量证明的同行。这可以潜在吸引较少的参与者,降低网络安全性。代币的初始分配如果管理不当,也可能影响网络的公平性和去中心化。在此情况下,拥有较大的权益的人对网络有不成比例的影响。另一个潜在问题是,验证者在对多个区块链分叉投票时可能无所畏惧,与工作量证明相比这需要分割计算能力。因此,需要设立某些削减条件以避免这种行为。

权益证明的变种

使用权益证明的知名区块链包括:

以太坊

以太坊使用LMD-GHOST算法和Casper-FFG,称为Gasper。LMD-GHOST用于累积投票,并确保节点在出现分叉时能够轻松选择正确的分叉。Casper-FFG(友好的最终确定装置Casper)将某些区块升级为“最终确认”,以便新进入网络的人始终与规范链进行同步。

卡尔达诺(Cardano)

卡尔达诺使用一种称为Ouroboros的权益证明变种,这是首个可以证明安全的权益证明协议。它基于经过同行评审的研究,并在可扩展性和安全性方面进行了设计。你可以在这里了解更多信息。

Near

Near使用阈值权益证明(Thresholded Proof of Stake),这是一种确定性的方法,允许大量参与者在特定时间间隔内进行网络维护决策。你可以在这里了解更多信息。

Algorand

Algorand使用纯权益证明(Pure Proof of Stake),这是一种更平等的权益证明方法,以拜占庭共识为基础。你可以在这里了解更多信息。

如你所见,权益证明有很多变种。大多数权益证明区块链使用原始设计的某种变种,并根据各自的需要和某些用例进行了优化。其中最知名和广泛使用的变种是委托权益证明(Delegated Proof of Stake)。

什么是委托权益证明(Delegated Proof of Stake)?

委托权益证明(DPoS)解释来自OKX

委托权益证明是权益证明的演变,旨在提高区块链验证过程的效率和民主性。它是由Daniel Larimer于2014年开发,并在多个知名区块链中实施,例如:BitShares、EOSTRONSUI

工作原理

在委托权益证明中,代币持有者投票选出一组代表来验证和创建新的区块。代表由代币持有者选出,其中投票权与持有的代币数量相关。在这里,用户通过将其代币池汇集到一个质押池中,并将其关联到特定的代表来进行投票。代表被激励诚实地行动,因为他们可能因恶意行为或未能保持足够的在线时间而被投票出去。当代表验证一个区块时,他们将获得相应的交易费用作为奖励。代表然后根据每个用户的持币量将这些奖励分配给支持他们的用户。需要注意的是,这些代表是按照公开的时间表确定区块的有效性。每个区块的代表数量有限,意味着代表会定期重新排列。

优点和缺点

委托权益证明上承接了权益证明的许多优点:任何人都可以成为代表,较低的入门门槛使其更加可及和去中心化,性能得到了改善,因为只需要有限数量的代表,还不需要耗费太多的电力来运行网络。

然而,委托权益证明并不完美。委托权益证明只需要有限数量的代表来处理每个新区块。这引发相关担忧,即给予一小部分人过大的影响力,用于交易验证和治理决策。这种限制引入代表合谋作恶的可能性,极大降低了51%攻击的门槛。代币持有者可能会向代表行贿以使其为自己作恶。更重要的是,用户并没有强制参与代表选举——投票无动于衷可能会加剧上述中心化风险。

什么是历史证明(Proof of History)?

历史证明不是一种共识算法。

更准确地说,它是帮助实现共识的一个组件。之所以可能引起混淆,是因为其术语——“X的证明”这个术语可能暗示对于熟悉工作量证明和权益证明的人来说是共识算法。历史证明在Solana的架构中至关重要,深深融入交易排序和程序执行中。因为它在网络中的显著性,容易将其误认为Solana的共识算法。

那么,如果它不是共识算法,为什么我们要讨论它呢?历史证明解决了分布式系统中的一个基本问题——时间一致性,或事件的顺序。Solana将历史证明作为一种“预共识”算法,以简化共识,使得交易高效处理。因此,验证者可以并行处理交易,提升吞吐量并降低延迟。因此,历史证明是一个帮助实现共识的组件。最好将历史证明视为网络的分散时钟——它提供了一种方法来证明时间以及事件发生的顺序,而无需依赖第三方。

传统方法的缺点

传统上,区块链在区块上进行同步,区块是交易的大块。这意味着,直到特定时间过去,交易才无法处理。这被称为区块时间。在工作量证明中,为了减少多个验证者同时产生新区块的可能性,块时间需要长(比特币大约每10分钟产生一个区块)。在权益证明中,没有这种限制,但验证者需要时间戳来确定来区块的顺序。普遍的解决方法是在每个区块上加上挂钟时间戳。然而,这个时间戳仅在大于前11个块的中位时间戳时有效,而且须小于“网络调整时间”加上两个小时。网络调整时间是指所有连接节点返回的时间戳的中位数。这并不是最佳解决方案,因为存在时钟漂移和网络延迟。那么现在该怎么办呢?

历史证明

历史证明:区块链的时钟

Solana对这个问题采取了一种激进的方法,称为历史证明。简而言之,历史证明是在对抗性网络中证明时间的方法。历史证明充当一种加密时间戳功能,使得节点能够在无需相互交流的情况下就事件达成顺序。这是通过使用顺序预图像抗性哈希函数(该函数难以反转)创建一串哈希序列,每个哈希依赖于前一个哈希。领导节点使用这些加密证明在区块上应用时间戳,以证明自上一个证明以来已经过去了一段时间。由于所有哈希都是串联的,因此创建了历史记录,证明数据在某一时间点存在。

这种独特的方法依赖于可验证延迟函数(VDFs),计算时间极长但输出可以迅速验证的函数。可验证延迟函数用于创建不仅依赖于前一个哈希,还依赖于已经过去的时间的哈希。这使得创建事件的可验证时间线成为可能。可验证延迟函数的使用确保这一点,因为篡改一个哈希将需要重新计算所有先前的哈希。这为Solana添加了一层安全性和完整性,因为只有一种可验证的事件时间线。

简单的类比

想象一下一个中世纪的小镇,繁忙的交易、公告、辩论和争执。这座小镇依赖于衙门的发言人作为其信息的中心来源,传递重要消息以确保每个人都保持一致。一天,衙门的发言人生病,不再能履行职责。小镇陷入混乱——没有人能达成共识,关于发生在何时、谁说了什么、事件发生的顺序是什么。

这时,一位非常细致的书记员进入了这个画面。这个书记员坐在镇中心广场,使用独特的墨水和羽毛笔记录每一个事件。这种墨水很特别——它会根据日记中的最后一条记录改变颜色。每个人可以简单地查看书记员的日记,确认事件的顺序和时间,而无需去问每个人。这个日记成为了小镇公认的真实来源,消除了对衙门发言人的需求,因为人们可以在没有发言人的情况下发出重要公告。这种变化的墨水确保了一个永久、不可变的真实源,验证了所有之前的条目。如果你把小镇替换为网络,把日记替换为账本,把变化的墨水替换为加密哈希函数,那么你就拥有了一种最可靠的同步方法。这就是历史证明的强大。

优点和缺点

历史证明允许更短的区块时间,处理大量交易每秒,并在共识之前提供一个单一的可验证时间源。这也允许资源优化——节点可以在不等待共识的情况下处理交易,从而实现更好的并行性和有效的计算能力使用。使用可验证延迟函数添加了一层额外的安全性,因为修改交易将需要重新计算连续的哈希。这将非常昂贵且容易被发现。此外,由于加密时间戳,任何人都可以验证交易的顺序和时间。我们知道交易发生的确切时间,而不必担心挂钟时间戳的有效性。这促进了透明性和责任感,这都是加密的基本原则。

请注意,历史证明并不完美。这种模型为Solana的网络架构增加了相当高的复杂性,使其更难懂,并可能增加漏洞或错误的风险。由于可验证延迟函数需要资源密集型计算,Solana节点需要更强大的硬件。这在短期内增加了网络参与的成本。得益于摩尔定律,由于曾经昂贵的强大硬件的可获得性和实惠性,这种硬件门槛在未来应该会下降。摩尔定律的观察表明,微芯片上的晶体管数量每两年大约会翻一番,从而导致计算能力的提高。

结论

祝贺你!在本教程中,我们深入探讨了共识算法的复杂性、它们是什么、你为何应了解它们,并展示了流行的实现。到现在为止,你应该对共识算法有一个全面的理解。理解这些算法不仅仅是学术上的努力——它是一种实践上的必要。这个努力为你提供了对你正在建立的网络的基本理解,直接影响你创建稳健和高效的应用程序的能力。在此,你能够在你参与的区块链社区中以有意义的方式做出贡献。在迅速发展的区块链技术领域,这一知识是不可或缺的。

展望未来,我们可以期待出现更多创新的共识算法。我们甚至可以期待当前的模型将得到更新和调整,以应对最新的可扩展性、安全性和效率挑战。无论你是投资者、开发者还是区块链爱好者,这都是一个参与这种专有技术的兴奋时刻。你对共识算法的理解使你站在创新的最前沿,使你能够在不断上升的空间中导航。

如果你读到这里,感谢你!

额外资源 / 深入阅读

  • 原文链接: helius.dev/blog/proof-of...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Helius
Helius
https://www.helius.dev/