原文作者:@LuozhuZhang
原文编译:0x711,BlockBeats
众所周知,PoS 以太坊的共识协议是「Gasper」,它是在 LMD-GHOST(分叉选择规则)之上应用 Casper FFG(最终性确定工具)构建的。所以要想搞清楚完整的以太坊共识协议,就必须了解这两个部分(Casper + Ghost)。此外,这些设计真的很有趣。我打算梳理一下这两个协议的背景和演进,以及它们简单的工作流程。
PoS 共识算法的三大流派如下:
1.Nakamoto-inspired(Peercoin)
2.PBFT-inspired(Tendermint、Casper FFG)
3.CBC Casper
Nakamoto-inspired PoS 是一种基于链的算法,模拟在 PoW 中挖矿。它通过伪随机选择验证者来创建新区块。其在 2012 年的「Peercoin」论文中首次提出,peercoin 是基于权益证明共识的第一个加密货币。
PBFT-inspired(即 BFT-style)PoS 基于多年对拜占庭容错(尤其是 pBFT)的研究。在 2014 年的「Tendermint」论文中首次提出。一般来说,这些算法会选择一个代表账本规范交易的唯一链。
Casper 直接继承了 BFT 算法(更精确的是 pBFT),做了一些修改。CBC Casper 是由 @VladZamfir 提出的,有一些很好的资料可以更充分地解释它。
虽然以太坊最终选择了 Casper FFG 而不是 CBC Casper,但对 CBC Casper 的研究也很有价值,比如满足以太坊需求的分叉选择规则「LMD-GHOST」。Casper FFG 由 V 神和 Virgil Griffith在 2017 年提出,引入了 justification 和 finalization 的概念,并引入了 slashing conditions 和动态验证者机制,这些都是非常重要的特性。
Casper FFG 用于保证「最终性」(也就是安全性),这在 PoW 中是不存在的。简单来说,每个验证者都会对检查点进行投票,经过两轮投票后,检查点将被「最终确定」(第一轮为验证,第二轮为最终确定)。
所有最终确定的检查点都成为规范链(区块链历史的一部分),所有忠诚节点都同意他们永远不会逆转这条链。「最终检查点」之后的区块可以随意分叉,但之前的区块不允许分叉。
Casper FFG 除了通过「最终性」来保证区块链安全外,还引入了 slashing 条件来惩罚所有违反规则的验证者(这在传统 BFT 算法中是做不到的),所有违反规则的验证者都将被跟踪和惩罚。
除此之外,Casper FFG 是无需许可的(传统的 BFT 算法是需要许可认证的),pBFT 通过一个列表来维护共识,只有列表中的人才能成为参与者。Casper FFG 构建了动态验证者机制,所有验证者可以自由进出。Casper FFG 用于保证「最终性」和「安全性」,负责确认区块的最终状态,但不负责创建新区块,所以它需要底层区块链和分叉选择规则。
以太坊使用的分叉选择规则是基于 GHOST,该规则最早在2013 年的一篇论文中提出。2017 年,@VladZamfir 在 CBC Casper 工作时,他尝试将 GHOST 与 Casper 结合,产生了一个变种「LMD-GHOST」。
区块链允许分叉,当出现不同的分支时,应该选择哪条链继续添加后续新区块,需要分叉选择规则。PoW 使用的是最长链规则。思路是锻造最长的链需要最多的算力,所以这条链是最可信的。所以当所有矿工添加新区块时,他们会默认在最长的链上添加。
GHOST 的思路与此类似,其选择票数最多的链而不是高度最长的链,LMD-GHOST 做了一些修改,只考虑最近的投票(即所谓的「Least Message Driven」,LMD)。
LMD-GHOST 的规则很简单:
- 从创世区块开始;
- 每次有分叉,选择票数多的分支;
- 重复,直至找到 block leaf;
- 返回链的头部;
这是 Casper FFG 和 LMD-GHOST 的演变以及它们如何工作,它们共同保证「安全」+「活性」。LMD-GHOST 允许提议者随时创建新区块,新区块将按照分叉选择规则(即活跃度)添加到权重最大的链上。虽然 Casper FFG 将根据所有验证者的投票(两轮,超过 2/3,按存款)最终确定一个规范链。所有忠诚节点默认接受规范链,从而获得安全。
共识真的很有意思,以太坊对 PoS 的研究始于 2014 年,2022 年完成了合并。这是一条漫长而曲折的道路,过程中诞生了许多奇妙的想法、设计和工程。