APP
中国版App下载 Android & iPhone
金色专栏
  • 发布文章
  • 发布活动

波卡测试网Kusama的第一次冒险

Polkadot 的金丝雀网络——Kusama 出现了一点混乱。下面简要介绍一下原因和解决方案。

在周六英国时间中午左右,全民公投结束了一项升级提案(旨在将Kusama区块链更新为Kusama运行时版本1034)。关联的升级发生了,用升级的新逻辑替换了 Kusama 的核心逻辑。

但由于与最近的更改相关的命名问题,该更改将 Kusama 逻辑与临时 Polkadot 逻辑分开,因此升级无意中将链更新的不是 Kusama运行时,而是临时 Polkadot主网运行时环境。

由于两者之间Babe共识算法的参数不同,因此新的运行时与Kusama客户端代码不兼容。Babe 停止出块,而 Kusama 宕机了。

回滚…

Kusama在区块链的尾部确认了一个区块。这意味着,在50%验证人的支持下,可以“回滚”一个块,其中发生的一些更改会导致链停止,而更改很重要,可能通过更改传入其中的交易或外部数据来实现。

在我们的例子中,这并没有提供解决方案,因为公投总是在第#516559块的开头结束,从而导致代码更改。因此,仅仅回滚一个块是没有用的:换句话说,没有已知的事务可以被构造或删除,从而避免有问题的代码更改。

值得庆幸的是,我们不需要回滚太多区块:升级提案的全民公决几乎没有投票,对升级提案只需修改一票就足以确保它没有通过。

该表决事务可能在区块#516558之前的任何时候发生,该区块紧接在计数表决和执行提案之前(或不会执行)。从理论上讲,我们只需要回滚两个区块,但实际上,还有更多的区块有助于提供安全余量以确保包括所需的交易。

然而,有一个小问题是,这两个区块中的一个已经被我们的 Grandpa 确定了。在这种情况下,回滚被故意设计为现实不可能,至少在没有绝大多数网络参与者的支持和对代码库的深入了解的情况下是这样。回滚Grandpa状态是困难的,但不是不可能的,假设我们有Kusama验证人社区的协调。

最后一个问题是,我们的块生产方案Babe在设计时假设每个Babe会话至少要创建一个块。在 Kusama,每小时都会有Babe会话。在暂停后的第一个小时内,不会对Kusama的130个验证器进行任何修复;事实上,当我们对情况的初步分析是网络已经停止了两个小时。

这意味着即使我们可以恢复 Grandpa 并构建一个替代块来避免有问题的升级,在超过一个小时的延迟情况下,验证人节点一旦尝试出块,Kusama就会在之后堵住。

发明 DeLorean

事实上我们需要更有创造性地思考。如果我们现在还不能编写代码块,那么我们就需要修改代码块,以便所有缺失的代码块都能按照Babe的期望进行编写,至少每小时编写一个。

事实上我们希望每小时超过一个验证人,以便让验证人有机会注意到会话正在进行,并发出它们在线的信号——如果没有这个信号,好的验证者将被踢出,并可能因为“离线”而被惩罚。

答案是至少从Babe的观点来看,不仅要回滚几个块,还要回滚时间本身。从2020年1月7日上午9点(格林尼治标准时间)开始,Kusama验证者将相信他们已经回到了格林尼治标准时间2020年1月4日12:10:12,大约是有问题的升级事件发生前25分钟(和48个区块)。这使我们有时间拒绝升级建议并阻止 Kusama 成为金丝雀形的区块。

但除非我们想无限期地活在过去的两天半里(我们不想这样做),否则我们的禽类 DeLorean 也需要一种回到未来的方式。我们不能像博士和马蒂那样直接进入未来;Babe会注意到现在和现在之间产生区块的缺乏,然后停止工作。

只是往左边跳…

幸运的是,当你可以控制区块链的外部环境时,各种事情都成为可能。你不仅可以在时间上前后跳跃,还可以做一些更微妙的事情,比如加速时间。

因此,Kusama 将在回访过去之后回到今天,但不是通过一次跳跃,而是通过扭曲时间本身来实现。具体来说,是实际世界与Kusama之间的六倍扭曲。

在气泡内部,时间是气泡外部时间的六倍运行。这使验证人有机会产生块并声明它们处于在线状态(尽管它们通常只有六分之一的时间,所以最好快一点!)。

从链的角度来看,它使Babe感到高兴,因为它被包裹在气泡内并且无法看到外部状态,所以一切都将发展顺利。

当然,我们不能永远保持翘曲速度,否则Kusama就会飞向未来,把我们都抛在后面。所以我们安装了一个自动关闭开关;一旦 Kusama 赶上了我们现在的时间,泡泡里面的时钟和外部时钟一样时,泡泡就消失了,一切都恢复正常。

如果一切顺利,那么结果就是 Kusama 将在明天(格林尼治标准时间晚上9点左右)从旅途中返回,届时将会有一段“正常”的历史,也不会知道发生了什么不寻常的事情。

原文链接:https://medium.com/@gavofyork/kusamas-first-adventure-2cd4f439a7a4

翻译: 空谷

编辑:Mike

文章作者: / 责任编辑: 我要纠错

声明:本文由入驻金色财经的作者撰写,观点仅代表作者本人,绝不代表金色财经赞同其观点或证实其描述。

提示:投资有风险,入市须谨慎。本资讯不作为投资理财建议。

金色财经 > 区块链 > 波卡测试网Kusama的第一次冒险