本文详细介绍了Casper FFG共识协议及其在以太坊2.0中的应用。Casper FFG是基于PBFT改进的权益证明(PoS)共识协议,旨在实现区块链的去中心化和高效性。文章还探讨了以太坊2.0如何通过分片技术(Sharding)提升交易处理能力,并整合Casper FFG以实现更安全的共识机制。
2017年,Vitalik Buterin 和 Virgil Griffith 共同发布了Casper the Friendly Finality Gadget(Casper FFG)。Casper FFG 是一种受 PBFT 启发并改进的共识协议。尽管它被设计得很简单,但其安全性的证明却并不容易。
通过本文,你将通过了解 Casper FFG 的工作原理,窥见权益证明试图解决的问题和设计概念。此外,对 Casper FFG 的深入研究可以帮助研究人员和开发人员更好地理解以太坊 2.0 的设计。
最后,我要特别感谢以太坊研究员 Chih-Cheng Liang 提供了重要材料,与作者频繁讨论并给予反馈。没有他的帮助,这项工作无法完成。
以太坊的 权益证明 (PoS) 研究可以追溯到 这篇 2014 年的文章。自那时起,以太坊研究人员便朝着 实现基于 PoS 的共识协议 的目标不断努力。PoS 共识的设计是一个跨学科且相当复杂的问题,涉及计算机科学、经济学和密码学等学科。此外,以太坊在区块链生态系统中拥有最具跨学科性的团队,他们对 PoS 的研究可以说非常深入。
这条 推特风暴 中,Vitalik 解释了 Casper FFG / Casper CBC 的演变。
Casper FFG 受到 PBFT 的启发,可以看作是对后者共识协议的改进。它继承了 PBFT 的核心设计,同时增加了新机制并简化了若干规则。如果你不熟悉 PBFT,欢迎参考我另一篇文章。
简而言之,PBFT 是一种以两轮投票机制为特征的共识协议,具备以下属性:
在上述所有属性中,PBFT 的 即时最终性 特性可能被认为是该共识协议受到 Vitalik 青睐的原因。在阅读 PBFT 之后,Vitalik 发布了一篇 总结,其核心思想后来演化为 Casper FFG。
虽然 PBFT 享有即时最终性,但它对串通的抵抗能力较弱。因此,需要一种惩罚机制来防止拜占庭行为。若某个节点违反规则,则将遭受经济损失。通过经济法规调整节点行为,实际上反映了 PoS 的设计理念:任何存入足够(由协议规定)代币的节点,都可以参与共识。因此,基于 PoS 的共识也可以被定义为无权限的。
这里要澄清“有许可”的意思。当任何节点可以自由加入和退出时,我们会说该协议是“无权限的”。然而,如果区块链必须维护节点列表,当新节点加入时,我们可以认为这里有某种“权限”需被授予。同样,从 PBFT 的角度来看,投票节点应从许可列表中选择。
下一个问题是:应该惩罚哪些行为?Vitalik 仔细研究了 PBFT,发现 PBFT 仅需要四条规则(PBFT 前提)以确保共识的良好运作。
Vitalik 在 这篇文章 中总结了这四条规则,并称之为 PBFT 的“最小削减条件”。任何违反这 4 条规则的行为都将导致存款被“削减”。这四条规则如下:
1. 发送提交需要看到 2/3 的准备。2. 如果你在某个时段中做了某个特定前时段的准备,那么你需要在该时段中看到 2/3 的准备,并且这些准备必须指向同一前时段。3. 如果你在某个时段中做了提交,那么你显然在该时段中看到了 2/3 的准备,因此你日后所做的任何准备应当引用该时段或更新的某个内容。4. 你不能在同一时段中准备两次。
这 4 条规则可以进一步归纳为 2 条:
1. 验证者不得对同一目标高度发布两个不同的投票。2. 验证者不得在其他投票之间进行投票。
这两条规则即为 Casper FFG 的最小削减条件。接下来,让我们更仔细地看看 Casper FFG 是如何工作的,以及它的改进之处。
Casper FFG:检查点树
Casper FFG 是一个抽象的覆盖层,负责共识,而非区块提议机制。 区块提议机制由底层区块链实现,来自底层链的区块提议称为 检查点。这些检查点形成一个检查点树。例如,高度为 0、50、100 和 150 的区块哈希值被提取以形成一个新树,如上图所示。最底部的检查点称为 根。
每个节点都必须对检查点进行投票。投票的内容是由两个来自不同高度的检查点构成的 链接。链接的较低检查点称为 源,较高检查点称为 目标。节点向网络广播投票,并同时收集其他节点的投票。如果支持链接 L 的节点存款总和超过总存款的 2/3,则称 L 为 超多数链接,记作 s → t。例如,在上述图中,b1 / b2 / b3 之间形成了一个超多数链接,表示为 b1 → b2, b2 → b3。
从根开始,如果在两个检查点之间建立了超级多数链接,链接的目标将变为“ 已确认”,而当前“已确认”的链接源则变为“ 已最终确认”。根节点在默认状态下是“已确认”和“已最终确认”的。可以注意到,在每两轮投票后,每个检查点都会变为“已确认”,然后“已最终确认”,这与 PBFT 的“ 已准备”和“ 已提交”几乎等效。例如,在上图右侧的分支中,r / b1 / b2 都是“已最终确认”的,而只有 b3 是“已确认”的。
那么,节点应选择哪些检查点进行投票呢?每个节点必须遵循 分叉选择规则 选择要链接的下一个检查点。在 Casper FFG 中,规则是选择最高的“已确认”检查点以建立链接。
Casper FFG:由于验证者集合的大幅变化引起的分叉
验证者集 会随着时间动态变化,因为 Casper FFG 允许任何具有足够存款的节点成为验证者。节点在退出网络后需要等待一个叫做 提取延迟 的时间段才能收回存款。每个检查点 C 有其相应的 世代,定义为从根检查点到 C 的已最终确认检查点的数量。例如,在上述图中,b3 的世代为 3。每个世代对应两组验证者:前向验证者集合(包括此次世代的节点)和 后向验证者集合(包括此次世代退出的节点)。
理论上,前向/后向验证者集合之间的高度重叠,但节点有可能串通共同进入/退出以导致前向/后向验证集合的大幅变化。如果发生这种情况,拜占庭节点可能在发生拜占庭故障时无法被削减(因为拜占庭节点已退出),从而妨碍了安全性。在上图中,验证者 A 可以退出,这意味着 A 对 C' 分支(绿色)退出,但对 C 分支(紫色),A 从未退出。因此,A 可以继续在旧链 C 上投票,但新链 C' 则无法削减 A 的存款(因为其已提取)。
为了使每个世代的检查点对拜占庭故障负责,需要一种 拼接机制 来“拼接”前向/后向验证者集合,以确保每个拜占庭故障可以追溯到某些验证者,来自前向或后向验证者集合中的某个。
总而言之,Casper FFG 使得许多 PBFT 特性得以改进:
考虑到 Casper FFG 的简单性,以太坊研究人员曾经制作了 Casper FFG 的合约版本。然而,这个合约版本的 Casper FFG 后来被 弃用!在合约版本中,假设投票可以并行处理,但在计算投票奖励时会出现许多中间状态。投票处理的顺序会影响最终状态,这意味着并行化将导致共识无法达成。为了修复这个问题,需要在合约和客户端中进行诸多更改,而这将失去“在合约中实现逻辑以避免修改客户端”的精神。因此,为了更好地将 Casper FFG 与其他优化提议(如分片)整合,以太坊 2.0 的创建成为必然。
以太坊 2.0:分片
以太坊 2.0 是一个基于 EVM 的分布式账本,集成了 Casper FFG 以及许多优化提议(主要集中在分片上)。除了尝试实现 PoS,Ethereum 2.0 还试图将每秒处理的交易数量 (TPS) 扩展到 10,000 级别,使区块链成为像互联网一样的基础设施。成为验证者只需 32 个以太币。
分片是提高可扩展性的重要设计部分,并可能是以太坊 2.0 的最重要目标。简单来说,分片是团队合作。以太坊现在只有一个区块链,所有节点必须分别处理每笔交易。在以太坊 2.0 中,网络被分为 1024 个分片,每个分片单独运行一个 分片链,处理一部分总体交易,并将结果交叉链接返回到 信标链。因此,以太坊 2.0 预计将有 1 条信标链和 1024 条分片链。
同样,在以太坊 2.0 中,验证者将被划分为 1024 个 持久委员会 和 1024 个 交叉链接委员会。每个分片对应 1 个持久委员会和 1 个交叉链接委员会。这两个委员会的任务不同:持久委员会负责维护分片链并生成分片区块,而交叉链接委员会则负责维护信标链,将分片区块交叉链接回信标链并生成信标区块。每个委员会的成员,以及信标区块/分片区块的提议者,根据链上随机数确定。
换句话说,每个验证者需要维护 1 条通用信标链和 1 条单独的分片链,同时还将被分配到 1 个交叉链接委员会和 1 个对应于该分片的持久委员会。
Casper FFG 是运行在以太坊 2.0 上的一个覆盖层。这个覆盖层同样由检查点组成。检查点之间的跨度被称为 纪元,一个纪元分为 64 个 槽。每个槽对应 16 个分片(16 = 1024 ÷ 64),因此每个分片在每个纪元中都有一个对应的槽,只能在其轮到时广播投票。每个分片在一个槽中只能有 1 次投票——也就是说,每个分片需要首先达成投票的共识。然而,将在每个分片内运行的共识协议尚未决定。最新的提议是使用 聚合签名。此外,Casper FFG 在以太坊 2.0 中的分叉选择规则为最新的消息驱动 GHOST(LMD GHOST)。
理论上,不同层的链中的投票应分开;但实际上,Casper FFG 的投票附加在提议链的投票上,以减少投票广播的通信开销。理想情况下,在每个纪元结束时,每个分片将收到来自所有其他分片的投票,这些投票在该纪元内被称为 证明,Casper FFG 的活性可以得到保障。
Casper FFG 是实现 PoS 共识的一次大胆尝试,其在以太坊 2.0 中的出现值得期待。然而,以太坊 2.0 仍存在一些问题,如轻客户端、链上随机数生成器和跨分片交易等。同时,以太坊 2.0 的许多竞争者也提出了新的共识协议和分片协议,如 RapidChain、Harmony 和 Chainspace。
Casper FFG 和以太坊 2.0 是众多研究人员和开发人员的持续研究与开发的成果,但对其系统性的总结仍然缺乏。希望本文能够帮助突出 Casper FFG 及其与以太坊 2.0 的一些基本要素。
- 原文链接: medium.com/unitychain/in...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!