这篇教程详细介绍了CBC Casper协议,特别是其在区块链中的应用,作者从具体的案例入手,讲解了如何通过LMD GHOST选择规则来实现共识和最终性,同时阐述了安全性和经济激励机制。文章结构清晰,逻辑严谨,适合对区块链共识机制有一定了解的读者。
A CBC Casper Tutorial
特别感谢 Vlad Zamfir, Aditya Asgaonkar, Ameen Soleimani 和 Jinglan Wang 的审阅
为了帮助更多人理解“另一个 Casper”(Vlad Zamfir 的 CBC Casper),特别是最适合区块链协议的实例,我想从一个不那么抽象、更“接近具体使用”的角度自己写一篇说明。关于 CBC Casper 的描述可以在 这里 和 这里 以及 这里 找到,欢迎并鼓励你们查阅这些资料。
CBC Casper 的设计目的是高度多功能且抽象,几乎可以在任何数据结构上达成共识;你可以使用 CBC 来决定选择 0 还是 1,或者在 CBC 上运行简单的逐块链,或者 292 维的超立方体纠缠 DAG,以及介于这两者之间的任何东西。
但为了简化,我们首先关注一个具体的例子:简单的链式结构。我们假设存在一个固定的验证者集,由 N 个验证者组成(“质押节点”的华丽说法;我们还假设每个节点质押相同数量的代币。如果不是这样,可以通过为某些节点分配多个验证者 ID 进行模拟),时间被划分为十秒的时隙,而验证者 k 可以在时隙 k、N+k、2N+k 等创建区块。每个区块都指向一个特定的父区块。显然,如果我们想做一些尽可能简单的事情,可以直接采取这个结构,在其上施加最长链规则,然后大功告成。
然而,我们关心的是增加“最终性”的某种概念——即某个区块能够在链中如此确立,以至于不会被竞争区块超越,除非相当大一部分(例如 14)验证者犯下 可以唯一归因的错误——以某种明显且在密码学上可验证的恶意方式行动。如果相当大一部分验证者确实以恶意行为恢复那个区块,错误行为的证据可以提交到链上,以没收这些验证者的全部存款,从而使最终性的恢复变得极其昂贵(想想数亿美金)。
我们将一步步进行。首先,我们替换分叉选择规则(选择众多可能选择中哪个链是“标准链”的规则,即用户应该关心的链),摈弃简单的最长链规则,而采用“最新消息驱动的 GHOST”。为了展示 LMD GHOST 的工作原理,我们将修改上述示例。为了使其更加具体,假设验证者集的大小为 5,我们标记为 A、B、C、D、E,那么验证者 A 在时隙 0 和 5 创建区块,验证者 B 在时隙 1 和 6 中创建区块等。评估 LMD GHOST 分叉选择规则的客户端仅关心每个验证者签名的最新(即最高时隙)消息(即区块):
现在,我们将仅使用这些消息作为“贪婪最重观察子树” (GHOST) 分叉选择规则的源数据:从创世区块开始,每当有分叉时,选择支持该分叉子树的最新消息更多的那一侧(即更多的最新消息支持该区块或其任何后代的子树),并不断重复这一过程,直到到达没有子代的区块。我们可以计算每个区块支持该区块或其中一个后代的最新消息子集:
现在,为了计算头部,我们从开始开始,然后在每个分叉时选择更高的数字:首先,选择底部链,因为它有 4 条最新消息支持,而单块顶部链则有 1 条,接着在下次分叉时支持中间链。结果与之前的最长链相同。事实上,在一个正常运行的网络中(即孤儿率低),几乎所有情况下,LMD GHOST 和最长链规则将给出完全相同的答案。但是在更极端的情况下,这并不总是如此。例如,考虑以下链,有一个更大的三区块分叉:
LMD GHOST 方法的优势在于它在高延迟条件下更擅长提取信息。如果两个验证者创建了两个具有相同父区块的区块,那么它们应该实际上都被视为支持父区块的合作投票,即便它们同时又是各自的竞争投票。最长链规则未能捕捉到这一细微之处,而基于 GHOST 的规则则能。
但 LMD GHOST 方法有另一个好属性:它是 粘性的。例如,假设在两个回合中,45 位验证者投票支持相同的链(我们假设没有投票的五位验证者之一 B 在进行攻击):
那么要使上面的链成为标准链,实际上需要发生什么?五位验证者中的四位在 E 的第一个区块之上构建,而这四个都认可 E 在 LMD 分叉选择中的高得分。仅通过观察链的结构,我们可以知道,至少一些验证者在不同时间必须看到的消息。以下是四位验证者的视图:
A 的视图 |
C 的视图
---|---
D 的视图 |
E 的视图
注意,所有四位验证者 可能 看到 B 的一个或两个区块,而 D 和 E 可能 看到 C 的第二个区块,使得这是他们视图中的最新消息,而不是 C 的第一个区块;然而,链的结构本身并没有提供确凿证据表明他们实际上是这样看的。幸运的是,正如我们将在下面看到的,这种模糊性对我们来说并不重要。
A 的视图包含四条最新消息支持底部链,而没有支持 B 的区块。所以,在 (我们的模拟) A 的眼中,底部链支持的得分 至少 为 4-1。C、D 和 E 的视图描绘了相似的情况,四条最新消息支持底部链。因此,四位验证者的现状是,他们在没有其他两位验证者先改变主意的情况下无法改变自己的决定,让得分在 B 的区块上达到 2-3。
请注意,我们对验证者视图的模拟在某种程度上是“过时的”,例如,它未能捕捉到 D 和 E 可能已看到 C 的更新区块。然而,这并不改变对上方与下方链的计算,因为我们可以一般性地说,任何验证者的最新消息将与他们之前的消息有相同的看法,除非另外两位验证者首先已换了意见。
由于像 LMD GHOST 这样的分叉选择规则以这种方式是 粘性的,且客户端可以检测到分叉选择规则“固守”在特定区块上,我们可以将其用作实现异步安全共识的方法。
实际检测链在某个区块上变得固执的所有可能情况(在 CBC 术语中,该区块被视为“决定”或“安全”)是非常困难的,但我们可以提出一组启发式方法(“安全神谕”),这将帮助我们检测发生的 某些 情况。最简单的之一是 团体神谕。如果存在一些验证者子集 V,占总代表集的比例 p(p>12),它们都支持某个区块 B,随后又做了 Another round public blocks that still support B and references their first round of blocks,那么我们可以这样推理:
由于两轮消息的原因,我们知道这个子集 V 所有的 (i) 都支持 B (ii) 知道 B 很好支持,因此他们中没有人能够在不其他人首先相继使用的前提下切换支持。为了某个竞争者 B' 超越 B, B' 可以 合法地 获得的支持最初最多为 1−p(所有不属于这个团体的人),而要赢得 LMD GHOST 的分叉选择,其支持需要达到 12,因此至少 12−(1−p)=p−12 位需要非法切换以让 LMD GHOST 规则支持 B'。
作为一个具体的例子,请注意 p=34 的团体神谕提供了 14 的安全级别,只要 34 个节点在线,将生成满足团体条件的一组区块。因此,在 BFT 意义上,可以利用两轮团体神谕实现的容错级别为 13,既在活性又在安全性上。
这种共识方法有许多良好的优势。首先,短期链选择算法和“最终性算法”并不是在 Casper FFG 中如同它们互相黏合的两个截然不同的组件,而它们是整个一致且完整的部分。其次,由于安全检测是在客户端完成的,因此不需要在协议中选择任何阈值;客户端可以自行决定认为区块被终结的安全水平。
CBC 可以进一步扩展,首先,可以提出其他安全神谕;更高轮次的团体神谕可以达到 13 的容错级别。其次,我们可以添加验证者轮换机制。最简单的方法是在 q=34 的团体神谕每次满足时允许验证者集的小百分比变更,但我们也可以做其他事情。第三,我们可以超越链式结构,而查看那些增加每单位时间消息密度的结构,像 Serenity 信标链的见证结构:
在这种情况下,划分 见证 和 区块 是值得的;区块是实际扩展底层 DAG 的对象,而见证则对分叉选择规则做出贡献。在 Serenity 信标链规范 中,每个区块可能会有数百个对应的见证。然而,不论你选哪种方式,CBC Casper 的核心逻辑保持不变。
为了使 CBC Casper 的安全性“从密码经济上可强制执行”,我们需要添加有效性和惩罚条件。首先,我们从有效性规则开始。一个区块包含一个父区块及其所知的、尚未成为链的一部分的一组见证(类似于当前以太坊 PoW 链中的“叔”)。区块要有效,必须执行 LMD GHOST 分叉选择规则,得到父区块的信息应包括在链中,包括在该区块本身中。
我们现在可以使 CBC Casper 安全,仅需一个惩罚条件:你不能制造两个见证 M1 和 M2,除非 M1 在 M2 正在证明的链中,或 M2 在 M1 正在证明的链中。
![]() OK |
![]() 不 OK |
---|
有效性和惩罚条件相对容易描述,尽管实际上实施它们需要检查哈希链并在一致中执行分叉选择规则,因此并不像在 Casper FFG 中对于 NO_SURROUND
和 NO_DBL_VOTE
惩罚条件 那样简单,只需检查两条消息并核对这些消息所承诺数字之间的一些不等式即可。
CBC Casper 的活性依赖于其底层链算法的活性(例如,如果是每个时隙一块,那么它就依赖于一个同步假设,即所有节点将看到在时隙 N 中生成的所有内容,在时隙 N+1 开始之前)。不会发生“卡住”,以致无法取得进展;在任何情况下,即使存在攻击者和/或网络延迟高于底层链算法的要求,也能最终实现新区块的最终化。
假设在某个时间 T,网络“平静”下来,同步假设再次得到满足。那么,所有人将向着链的同一视图收敛,拥有相同的头部 H。从那里,验证者将开始签署支持 H 或 H 的后代的消息。此后,链可以顺利推进,并最终满足团体神谕,此时 H 将被认为是最终化的。
这就是全部!在实现方面,CBC 的确可能比 FFG 更复杂得多,但在能够推理该协议及其提供的属性方面,它出乎意料的简单。
- 原文链接: vitalik.eth.limo/general...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!