以太坊的权益证明(PoS)共识协议是通过在分叉选择规则 LMD GHOST 之上应用最终确定性小工具 Casper FFG 来构建的。
撰文:Ben Edgington
编译:跳
译者的话
下面是作者 Ben Edgington 在个人网站上的自我介绍:
「自 2024 年 2 月以来,我一直在 OP 实验室工作,扩展世界计算机。我是 Consensys Teku 以太坊共识客户端的创始人和前产品负责人。我于 2017 年 10 月加入 Consensys,头两年建立了出色的 PegaSys 研发团队,之后转到产品方面,降生 Teku。我正在撰写一本关于以太坊权益证明协议的权威技术书籍。这本书叫《升级以太坊》,有时也叫『Eth2 Book』。据统计,我自己写了大约 135000 字,PDF 版本有 367 页。在以太坊合并前的四年中,我写了 100 期双周刊《Eth2 有什么新消息?》。我最好的推特,我最配不上的推特。」
本文是全书第二章「技术概述」第三节「共识」的第二小节概述。共约 5000 字,阅读完本文预计需要 12 分钟。
上一节描述了区块链共识的大致情况;在本节中,我们将聚焦于以太坊的权益证明共识。我试图遵循一条通过提供足够的信息以理解事物的路径,而不深入两侧的技术细节的杂草。所有这些细节都将在《规范注解》和其他章节中被深入探讨。我也加了一些链接,以供那些想要去分支探索的人使用。
首先必须介绍的是我们将在整个过程中使用的、以太坊特有的术语。
以太坊网络的主要参与者是节点(nodes)。节点的角色是验证共识并与其他节点形成通信的主干。
验证者(validators)形成共识,而「验证者」(符合以太坊的一致作风)是一种可怕的误称,因为它们实际上并不验证任何东西——验证是由节点完成的。每个验证者代表最初质押的 32 个以太币。它有自己的私钥(secret key),以及作为其在协议中身份的相关公钥。验证者附在节点上,一个节点可以托管从零到数百数千个验证者。附到同一个节点的验证者们不会独立行动,它们共享着对世界的同一视图 [1]。
使权益证明不同于工作量证明的一个有趣特点是,在权益证明中,我们知道我们的验证者集(validator set)。我们有一份完整的列表,上面有我们预计会在任意时刻活跃的所有公钥。知道验证者集使我们能够实现最终确定性,因为我们可以识别出在何时获得了参与者的多数票 [2]。
在以太坊的权益证明共识中,时间被严格规定,这与工作量证明相比是一个重大变化,工作量证明只与时间有着偶然的关系——它试图保持区块间隔的平均恒定,但仅此而已。
最重要的两种时间间隔是时隙(slot,12 秒)和时段(epoch,32 个时隙或 6.4 分钟)。无论网络上发生了什么,时隙和时段都会有规律地持续进行。
每个时隙中都会选择出一个验证者去提议一个区块。区块包含对信标状态的更新,这些更新包括提议者所知道的认证,还有以太坊用户交易的执行有效载荷(execution payload)。通过广播协议(gossip protocol),提议者与整个网络共享其区块。
时隙可以是空的:区块提议者可能离线,或提出一个无效的区块,或其区块随后被重组出链。在一条运行良好的信标链中,这些事情不应该经常发生,但协议有意在空时隙出现时保持稳健。
在每个时段中,每个验证者都会通过认证(attestation)的形式分享一次它对世界的视图。认证包含对链头的投票(LMD GHOST 协议将会使用)和对检查点的投票(Casper FFG 协议将会使用)。认证也会向整个网络广播。与区块一样,认证也可能因各种原因而缺失,而协议可以在不同程度上容忍这种情况——粗略地说,随着认证者参与率的降低,共识的质量也会下降 [3]。
时隙的功能是将处理所有这些验证的工作量分散化。通过认证,每个验证者都会将自己对世界的视图告知其他验证者,如果一次性完成,可能会导致巨大的网络流量和处理负载。将认证的工作量分散到一个时段中的所有 32 个时段,可以保持低资源使用率。在每个时段,委员会只由占总量 1/32 的进行认证的验证者们组成。
通过对验证者的奖惩系统,协议激励区块和认证的生产和准确性。我们当下不需要深入探讨这些;会有完整单独的一章来阐述所有这些问题。
在工作量证明中,生产一个区块的成本很高。这极大地激励了矿工,使他们按照协议的目标正确行事,以确保自己的区块被纳入。
在权益证明中,创建区块和证明几乎是免费的 [4]。我们需要一种方法来防止攻击者利用这一点破坏网络。这就是罚没(slashing)的作用。对区块或认证模棱两可的验证者将被罚没,这意味着他们会被移除出验证者集,并被处以部分质押的罚款。简单地说,模棱两可(equivocation)就是说出两件相互矛盾的事情。它可能是为同一个时隙提出两个不同的区块,或者做出两个相互矛盾的认证,而任何诚实遵守协议的验证者都不会如此行事。
了解了一些术语之后,让我们开始概述以太坊实际的共识机制。
以太坊的权益证明共识协议实际上是两个独立共识协议的结合,它们分别被称为 LMD GHOST[5] 和 Casper FFG[6]。这两个协议已经被「拧和在一起」,形成了我们为 Eth2 实现的共识协议——这个组合协议有时被称为「Gasper」。
在 Gasper 中将这两者结合是为了在活性和安全性两个方面都获得最佳效果。本质上,LMD GHOST 为每个时隙依次提供活性(它让链保持运行),而 Casper FFG 提供安全性(它保护链免受大规模回滚)。LMD GHOST 使我们继续在彼此之上产出区块,但是这种产出是可分叉的,因此从理论上说并不安全。Casper FFG 修改 LMD GHOST 的分叉选择规则,定期赋予链最终确定性。尽管如此,如前所述,以太坊优先考虑活性。因此,在 Casper FFG 无法赋予最终确定性的情况下,链仍然会通过 LMD GHOST 机制继续增长。
这种拧和在一起的共识机制并不总是那么好。有时我们会看到接合处,两种共识机制之间的互动导致了一些我们稍后将讨论的微妙问题。然而,本着以太坊的精神,它是一个实用的工程解决方案,在实践中运行良好。
Gasper 的详细历史与其组件 LMD GHOST 和 Casper FFG 的发展密切相关,我们将在它们各自的部分中进行回顾。但我们要在这里指出,Casper FFG 从未被设计为一个独立的共识机制。
正如 Casper FFG 论文中所述:
友好的最终确定性小工具 Casper 是一个建立在提议机制(proposal mechanism,提议区块的机制)之上的覆盖层。
因此,有一个底层区块提议机制——这意味着有一个提供某种元共识的底层共识机制,为区块链赋予最终确定性——而 Casper FFG 建立于其上。
最初的计划是将 Casper FFG 作为权益证明覆盖层,叠加在以太坊的工作量证明共识之上。Casper FFG 将在链上定期赋予(如,每 100 个区块)最终确定性——这是工作证明链所缺乏的属性。这被视作是让以太坊摆脱工作量证明的第一步。有了最终确定性的保证,我们可以减少工作量证明的区块奖励,从而减少总的哈希算力。这是一个过渡步骤,在未来某个日期最终会用完全的权益证明替代挖矿。
到 2017 年底,这个计划已经相当成熟。EIP-1011,混合 Casper FFG (Hybrid Casper FFG),详细描述了该架构,且在 2017 年 12 月 31 日甚至有一个测试网上线。
然而,在 2018 年初,该计划被取代。以太坊虚拟机的有限带宽限制了 EIP-1011 能支持的验证者集的大小,进而导致最低质押量为 1500 个以太币,这被视作是不可取的。大约在同一时间,通向一个完整的、更具可扩展性的权益证明协议的路径变得更加清晰,我们开始着手设计,也就是后来的以太坊 2.0。
由于其通用性,Casper FFG 能够在重新设计中幸存下来,并被以太坊 2.0 采用——不是作为工作量证明而是一个新的权益证明协议 LMD GHOST 的覆盖层。
当说到 Casper FFG 覆盖了现有的区块提议机制时,我们的意思是它采用了一个现有的区块树并以特定方式对其进行了修剪。通过使底层区块树的某些分支无法访问,Casper FFG 修改了这些区块树的分叉选择。
请将这个区块树看作是由某种底层共识机制产生的,无论是工作量证明还是权益证明中的 LMD GHOST。

在上图情形中,我有三个候选的头块:I, E, M。在工作量证明的最长链规则下,头块的选择显而易见:我必须选择 M,因为它具有最大的区块高度,或者(几乎)等同于完成了做多的工作量。在 LMD GHOST 下,我们不能仅凭这一信息去选择头块,还需要看到其他验证者的投票才能做出选择。
挑战在于,从区块 J 到 M 的链可能来自于攻击者。攻击者可能秘密挖掘了该链,然后在所谓的 51% 攻击中使用它。工作量证明节点别无选择,只能进行重组以使 M 成为头部,从而偏向攻击者的链,可能容易受到双花攻击。

当区块 D 被最终确定,分叉选择必须忽略以区块 F 和区块 J 打头的分支。我们最后只保留了一个候选头块:E。
从根本上说,Casper FFG 所提供的最终确定性可以防止长时间的重组(回滚)。任何已获得最终确定性的区块或已获得最终确定性的区块的祖先都永远不会被回滚。在以太坊的 Casper FFG 实现中,我们必须对「永远」加以限定,即「不会烧掉至少 1/3 的全部以太币」的前提下。这就是权益证明链提供的经济最终确定性。
回过头来,这是那句我们尝试理解其所有部分的话。
以太坊的权益证明(PoS)共识协议是通过在分叉选择规则 LMD GHOST 之上应用最终确定性小工具 Casper FFG 来构建的,LMD GHOST 是最贪婪、最重的被观察子树(Greedy Heaviest-Observed Sub-Tree, GHOST)规则的一种变体,它只考虑每个参与者的最近一次投票(最新消息驱动,Latest Message Driven, LMD)。
我们花了一些时间来讨论什么是共识协议,以及它做了什么,并简单了解了权益证明。我们讨论了最终确定性,并在较高层面上说明了 Casper FFG 如何形成了一个「最终确定性小工具」,被应用于作为区块提议机制的 LMD GHOST 之上。
但还有很多工作要做。在接下来的章节中,我们将更深入地探讨 LMD GHOST, Casper FFG,以及它们如何结合而成 Gasper 协议。
注释
[1] 当我们谈论到以太坊的去中心化时,牢记这一点是非常有益的。比如说,网络上有 60 万个活跃的验证者,这与有 60 万个独立行动者相比还相去甚远。观察节点的数量以及验证者在节点间的分布,将为以太坊的去中心化提供更有用的衡量指标。
[2] 在共识术语中,我们可以拥有「可问责的安全性(accountable safety)」。
[3] Beaconcha.in 网站按时段显示认证参与率(也被称为投票参与)。这是衡量网络健康的一个好方法。该比率通常超过 99%,对于一个大规模分布式共识协议来说,这是非常出色的水准。
[4] 这有时被称为「无利害关系问题(nothing at stake problem)」。
[5] 「最新消息驱动的,最贪婪、最重的被观察子树」。我将在具体的 LMD GHOST 章节中解释这个命名。
[6] 「友好的最终确定性小工具 Casper」。同样,我将在进入特定的 Casper FFG 章节时解释这个略显奇怪的命名。
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。
