本文对Casper CBC(Correct-By-Construction)共识机制进行了简化概述,介绍了其设计哲学、分布式系统方法以及共识机制的具体规则和故障分类。文章旨在让复杂的数学概念更易于理解,并提供了相关术语的解释和示例。
如果你一直在关注 Casper 的研究,那么你可能听说过在 devcon4 上发布的 Casper CBC 草案论文。如果你看过这份草案,你可能会想,那些深奥的数学符号如何才能用简单的语言表达出来!这篇博客文章旨在让草案中的概念更加易于理解。
本文将着重简化草案中的技术细节。如果你想了解更多技术细节,可以参考 Barnabé Monnot 对这篇论文的 解释。对于想了解 Casper 历史的读者,建议阅读 Vlad Zamfir 关于此主题的 博客文章,而对于想了解友好最终性工具(Friendly Finality Gadget)与正确性构造(Correct-By-Construction)方法的读者,可以查看 Vitalik Buterin 关于此问题的 推特风暴。
多年来,许多合作者致力于构建一种正确性构造的共识机制,最终用于完整的权益证明(Proof-of-Stake)区块链(可能还支持分片)共识算法。当前的研究团队包括 Vlad Zamfir、Nate Rush、Aditya Asgaonkar 和 Georgios Piliouras。
漂亮的 LaTeX 论文发布了!快来查看!
正确性构造协议的根本设计理念是首先构建一个非常抽象但稳健的框架,并提供该框架所保证的基本重要属性的证明。然后,我们逐步进一步定义该框架,并继承所有过去的证明和保证。通过这种定义-证明-继承的迭代方法,我们构建了一系列满足相同证明并提供相同高级保证的协议族,但可以根据实际用途进行专门定义。
之所以称为 正确性构造,是因为新协议的正确性由其构造保证,即通过逐步进一步定义抽象(并经过证明的)协议来实现。
Casper CBC 将权益证明共识问题视为一个分布式系统问题。与其他权益证明共识机制不同,我们没有在我们的 共识机制 中定义诸如押金和惩罚条件之类的加密经济方法!然而,我们定义的协议足够通用,可以在以后定义这些内容。
分布式系统中的故障概念对 Casper CBC 共识非常重要。草案的第 1.1 节描述了可能发生的各种类型故障的分类。最有趣的故障类型(也是唯一可能导致共识安全性失败的故障类型)称为 双花故障(equivocation fault)。我们稍后将在讨论共识规则时深入探讨这种故障类型。
共识机制的前提是“只要故障数量足够低,一切都会正常”。换句话说,“只有在故障数量足够高的情况下,才会出问题”。
让我们熟悉一些术语:
消息是验证者在参与共识形成过程中生成和传递的信息片段。在 Casper CBC 共识机制中,消息具有以下结构:
消息结构 = (值, 验证者, 正当性)
让我们分解一下消息结构:
在我们讨论定义消息限制的规则之前,让我们先看两个重要概念:
这些规则将两种类型的故障分类:无效消息故障和双花故障。
验证者不能生成两条消息,这两条消息具有
且其中任一条消息不晚于另一条。
当一个节点出现双花行为时,它基本上是在执行协议的多个独立实例,并可能尝试从一个执行实例中向网络中的不同对等方展示消息。为了明确什么是协议的独立实例:考虑一个验证者通过生成违反共识规则 2 的消息 A 和 B 来违反共识规则。该验证者随后开始维护两个协议执行历史,一个历史中仅生成消息 A,另一个历史中仅生成消息 B。在每个协议执行的单一版本中,验证者都没有出现双花行为。
一个节点执行双花故障,并试图向网络中的不同对等方展示不同的协议执行
例如,在上面的图示中,一个节点从状态 A 开始执行协议,并继续进行单个协议执行,直到状态 B。绿色(左)圆圈和蓝色(右)圆圈中的对等方都可以通过观察它发送的消息,看到该节点从状态 A 到状态 B 跟随单个协议执行。然后,该节点开始维护两个单独的协议执行实例。它向绿色(左)圆圈中的对等方展示导致状态 C 的执行,并向蓝色(右)圆圈中的对等方展示导致状态 D 的执行。一些对等方(在交叉部分)可以看到该节点正在双花,随着网络的传播,更多对等方将发现该节点的双花行为。当足够多的参与者参与这种类型的拜占庭行为时,将导致共识失败。
共识规则保证(经过严格的数学分析),在 足够多 的验证者生成了提议某个值的有效消息后,不可能在不产生大量验证者故障的情况下围绕一个矛盾的值形成共识。
因此,一个节点在看到一个足够多的验证者在有效消息中提议某个值后,“决定”该共识值(即达成该值的最终性)。这个“足够多”的数量取决于该节点的容错阈值。允许节点检测最终决策的一个重要工具称为 决策预言机(decision oracle)。
决策预言机是一种工具,供节点根据它们看到的消息来检测对某个特定共识值的决策。检测决策的基本思想是找出是否有足够多的验证者同意该共识值,以及这些验证者是否看到彼此同意该值。
这个讨论尚未包含在发布的草案中,因为我们尚未在决策预言机的严格数学分析中确定一些细节。我们在斯坦福研究研讨会上对此取得了重大进展(感谢 Greg Price),Nate Rush 目前正在为完成这项工作投入巨大努力!
遵循 Casper CBC 方法论,让我们进一步定义协议,并创建一个基于 GHOST 的区块链共识机制(草案第 4.4 节)。
我们需要在 Casper CBC 共识机制中定义两件事来达成我们的目标(定义 4.31):
瞧!通过进一步定义 Casper CBC 共识机制,我们有了一个全新的区块链共识机制,它拥有具体的决策安全保证,并且我们免费获得了证明!
接下来呢?尝试为分片区块链构建共识机制!(第 4.6 节)
- 原文链接: medium.com/@aditya.asgao...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!