Polkadot v1.0:分片和安全(4)—— 争议的处理
加入 PolkaWorld 社区,共建 Web 3.0!
本文是由 Polkadot 联合创始人 Robert 发布的关于 Polkadot v1.0 的分片和经济安全的技术文章,原文篇幅较长,PolkaWorld 将分四篇翻译和发布!本篇是该文章的第四部分,介绍了如何解决对区块有效性的争议。
查看本文的前三部分:
争议:为金钱争论
当两个或更多的验证人对平行链区块的有效性存在分歧时,就会发生争议。虽然本文前面的大部分内容都集中在正确的路径上,即平行链区块实际上是好的的情况,但争议却是错误路径,即批准检查者实际检测到某个无效平行链区块变成了可用区块。
争议过程相对简单。它旨在满足以下目标:
让所有验证人投票,来确定某个平行链区块是好还是坏。
如果平行链区块是坏的,则确保不要终结(finalize)或继续构建任何使其可用的中继链区块。
确保争议的输家受到相应的惩罚。
首先,争议是为了满足 Polkadot 更高级别的目标之一:确保没有任何不好的东西被终结。
参与争议的验证人要在“支持”或“反对”类别中进行投票。参与可以是无意识的的或主动的。
通过支持和批准检查进行的参与是自动的。当验证人为平行链区块发布支持证明或批准消息时,他们自动算作参与了“支持”类别。事实上,诚实的验证人会记录他们收到的所有最近的支持和批准检查消息,以便以后提供证据来反对其他验证人。
绝大多数验证人都不是无意识参与者。这些验证人会主动参与,这意味着他们签署了“赞成”或“反对”类别的投票。他们在进行与批准检查员相同的检查后才这样做,检查过程如下:
下载 PoV 数据
验证状态转换
验证对状态转换输出的承诺
参与不是强制性的,但只有至少 2/3 的验证人投了其中一方时,才能解决争议。验证人会因参与而获得奖励,并且会因站在多数一方而获得奖励。
因为验证是确定性的,因此争议会以“赞成”或“反对”状态结束。以前的支持和批准声明(分别标记为 B 和 A)会自动计入“赞成”之列。
争端中的失败者将面临严厉的处罚。对实际有效的平行链区块提出异议,只不过是浪费了时间和带宽,因此会受到少量惩罚。而提交无效的平行链区块是对 Polkadot 的攻击,因此 slash 罚款比例为 100%。
远程和本地争议
争议过程主要发生在链下。也就是说,它们发生在“平行链”的级别,而不是“中继链”的级别。但是,被终结的中继链的分叉应该包含争议记录。这是因为 Slash 是一个链上过程。
当发生争议时,所有投票都会记录在链的每个分叉上,以触发 slash 并创建争议的永久记录。
关于中继链分叉的远程争议,是指争议引用了未包含在中继链分叉中的平行链区块。
关于中继链分叉的本地争议,是指争议引用了包含在中继链分叉中的平行链区块。
做出这个决定的原因,是因为它告诉我们需要放弃中继链的哪些分叉。任何记录了针对平行链区块的本地争议的中继链分叉都应该避免,并且不应由诚实的验证人保存。换句话说,诚实的验证人观察到平行链区是坏的,将自动对包含坏平行链块的中继链的分叉发起 51% 攻击。
最终结果是中继链的已终结分叉,不包含任何输掉了争议的平行链区块。然而,当诚实的验证人构建新链并忽略坏的平行链区块时,他们会将新分叉上的争议作为远程争议重播。惩罚得以保留,但罪行的影响已从历史中抹去。
此图显示了有争议的平行链区块是远程的还是本地的,这基于你正在查看中继链的哪个分支:
关于中继链块的争议,要么是本地的,要么是远程的
争议和共识规则
与批准检查一样,争议伴随着对诚实验证人共识参与规则的修改。这些变化有两个主要目标:
避免终结任何引用了坏平行链区块的中继链分叉。
避免在任何引用了坏平行链区块的中继链分叉上构建。
这些目标分别对应于 GRANDPA 和 BABE 内部行为的变化。
GRANDPA 投票规则是对批准检查 GRANDPA 投票规则的修改。它指出:
根据批准检查投票规则选择一个区块
找到该链中最高的区块 B,使得从最近终结的区块至 B 的所有区块,只触发对没有正在进行的争议也没有输掉争议的平行链区块的包含。
这与批准检查投票规则类似,但让我们揭秘最重要的部分,即让验证人忽略触发包含这两类平行链区块的中继链区块:
没有正在进行的争议的:这指示验证人避免终结存在争议的平行链区块,直到有足够的验证人参与。换句话说,“宁可错杀三千,不可放过一人”。
已输掉争议的:如果验证人看到 2/3 的意见反对平行链区块,则该验证人将永远不会投票终结触发包含该平行链区块的中继链区块。
在此图中,我们展示了如何将争议 GRANDPA 投票规则应用于某条链的一些例子:
另一个 BABE(出块)链选择规则服务于第二个目标。通常,BABE 指示验证人通过在具有最高weight(类似于高度)的中继链区块之上构建来扩展中继链。而修改后的 BABE 链选择规则指出:
中继链区块被认为是可行的,要么是它们已终结,要么是它们的父区块是可行的,并且中继链区块触发包含的每个平行链区块都无争议或赢得了争议
如果没有可行的子区块,则中继链区块是可行的分支
验证人应该建立在他们所知的具有最高 weight 的可行分支上
BABE 链选择规则的含义是诚实的验证人将放弃中继链的分叉,这会触发包含任何被发现无效的平行链区块,即使这意味着暂时在较短的链上构建。
下图的例子显示了 BABE 链选择规则,如何要求验证人放弃并停止构建包含已输掉争议的平行链区块的链。这将有效地让他们对中继链的坏分支发起 51% 攻击。
在实际操作中,这看起来像是中继链的简短的自动回滚。下面是一个例子:
区块 1a 中包含了一个平行链区块 P。
等到区块 3a 被构建时,平行链区块 P 已经存在争议并被认定为无效。
诚实的验证人开始忽略区块 1a 和 1a 的任何子区块。相反,他们从一个不包含无效平行链块 P 的替代区块 1b 开始,构建了一条新的链。
这些诚实的验证人,把与平行链区块 P 相关的争议消息发布到中继链的新分叉上,从而确保 P 的支持者被 Slash。一旦 4b 构建完成,它就会取代原始链,并且 1b 会被终结。
这次回滚是可能的,因为诚实的验证人在 1a 获得批准之前不会终结它,而批准过程是发起争议的原因。一旦 P 有争议,验证人就会暂停 1a 的终结。当 P 输掉争议时,验证人在任何情况下都将拒绝终结 1a。
一个坏区块被忽略的 “回退” 案例
综上所述,争议逻辑是确保检测到的不当行为得到妥善惩罚,以及中继链重组以完全避免坏平行链区块的一种手段。争议和相关的链选择规则是 Polkadot 与常规 optimistic rollup 的主要区别。optimistic rollup 运行在对终结或分叉选择没有影响的链上,这意味着它们必须对终结任何坏区块的风险极为保守,因此会施加较长的欺诈期和提款期(长达几天或几周)。
在 Polkadot 中,争议协议和链选择规则意味着,当争议正在进行时,区块终结会被延迟几秒钟,并且链可以围绕坏区块来构建。区块终结仍然很快,且仍然是安全的。
总结
这篇文章深入介绍了区块链共识,以及我们如何应用这些概念来构建 Polkadot。我们的设计哲学的很大一部分,都是关于确保在网络条件良好时快速运行,但在网络条件差时也能正确运行。大多数时候,都没有具有攻击意图的验证人。网络延迟会很低,而带宽会很高。在这样的情况下,批准和最终确定可能会在几秒钟内发生。但是当存在攻击验证人或网络状况不佳时,区块终结会相应减慢,中继链有能力围绕坏平行链区块进行重组。
自 2016 年夏天以来,我们一直在以各种各样的方式研究这套协议。看到这些东西在实时、高度去中心化的网络上实施和运行,真是令人难以置信。
自从我们几年前踏上这段旅程以来,区块链扩展问题变得越来越糟。我们已经看到了许多方法,但其中许多方法都缺失了安全性或去中心化。通过其支持、可用性、批准检查和争议系统,Polkadot 是提供可扩展性、去中心化和安全性的实用解决方案。
关于协议开发
(以下为个人观点)
构建软件系统是理想、实用主义、美学和时间之间不断的角力比赛。现实永远不会完全符合理想。没有什么是完美的,但还是可以力求做好。
一个协议的理想化版本,与最终在计算机上运行的实现之间存在脱节。这类似于戏剧中的角色,与演员对该角色的体现之间的差异。全世界的服务器都可以穿上我们验证人的戏服,但无论他们多么努力,他们都永远不会成为我们协议中描述的 “标准” 验证人。
协议开发是一项重大任务。它需要大量的时间、精力和专注度。它需要愿意忽略发生在边缘的绝大多数事情。这些牺牲是典型的,一件作品只能通过提供它所不是的一切,才能被创造出来。构建某些东西,其实就是去定位彼此相关的符号。最重要的是,构建需要愿意失败。作为协议开发者,我们别无选择,只能失败。但在这样做的过程中,我们遇到了荒谬,并找到了意义。
互联网的大众媒体,鼓励将构建主要作为达到目的的一种手段。我们被鼓励去为了更宏大 的事物——商业、金融系统、社会运动和政治声明——的一部分而进行构建。重要的是,将这些目标植根于工匠精神和由创造带来的简单的快乐中,我们要做出不仅仅是能用的,而且充满关怀和优雅的东西。努力构建一个系统的每一部分,让它与其他部分保持一致是很自豪的事,即使这要以其他物质回报为代价,也是很值得的。
我们已经构建文中所述的协议超过 5 年了,我选择以这种方式结束这篇文章,来回答许多读者会提出的问题:“为什么有人要花 5 年时间做这个?”。这是给加密世界中所有新加入者的信息。这适用于自 2020 年浪潮以来一直乘风破浪的每个人。如果你正在从贪婪和纷争中寻找避难所,它确实存在,而且一直都在这里。
原文:Polkadot 博客 https://polkadot.network/blog/polkadot-v1-0-sharding-and-economic-security/
直播预告:
今晚 7 点的 Litmus 直播专场,Litentry BD 总监 Mel 和商业分析师郭秋海做客 PolkaWorld,和大家分享 Litentry 先行网 Litmus 的最新情况,欢迎大家来到直播间和嘉宾互动。
PolkaWorld Telegram 群:
t.me/polkaworld
PolkaWorld Youtube 频道:
https://www.youtube.com/c/PolkaWorld
PolkaWorld Twitter:
@polkaworld_org
PolkaWorld 网站:
https://polkaworld.pro/
更多内容
W3F 合作经理:Polkadot 和 Web 3 简介
ChainSafe:为什么开发者需要 Polakdot
Polkadot 中的中继链、平行链、转接桥是什么
关注 PolkaWorld
发现 Web 3.0 时代新机遇
点个 “在看” 再走吧!