不久前,Polka network的金丝雀网Kusama network出现了一些混乱。以下是漏洞出现的原因和解决方法的简要总结。
英国时间周六中午左右,一项升级方案(表面上是要将Kusama区块链更新为Kusama runtime 1034版本)的公投结束。相关的升级发生了,将Kusama区块链的核心逻辑转换为新的升级逻辑。但是,由于与最近的更改相关的命名问题,该更改将Kusama逻辑与临时PolLost逻辑分开,因此升级无意中更新了链,该更新不是更新到Kusama运行,而是更新到临时PolLost mainnet运行时!由于两者在Babe共识算法的参数上存在差异,新的运行与Kusama客户端代码不兼容。Babe算法停止了区块的产生,导致Kusama发生了堵塞。 回滚
Kusama敲定了一个街区前的链头。这意味着,在50%验证器的支持下,有可能回滚一个发生某些导致链停止的更改的块,并通过更改传入链的事务/外部数据来更改问题。在我们的案例中,这并没有提供任何解决方案,因为公投总是在35516559号区块的开头结束,导致代码被更改。因此,只回滚一个区块是无用的。没有可以构造或删除的已知事务可以避免有问题的代码更改。
值得庆幸的是,我们也清楚地看到,我们不需要回滚太多的区块:升级全民公决提案的票数很少,对升级提案的一票从核准改为否决将是为了确保它没有获得足够的通过。在35516558号区块,即计票和提案执行(或不计票)之前的任何时候,都可能发生这种投票交易。从理论上讲,我们只需要回滚两个数据块,但在实践中,再回滚几个数据块将有助于提供一个安全裕度,以确保包含所需的交易。
不过,麻烦的是,这两个街区中的一个已经被我们的终结工具Grandpa敲定了。在这种情况下,回滚被故意设计成实际上是不可能的,至少在没有相对多数网络参与者的支持和对代码库的深入了解的情况下是不可能的。如果我们有草间弥撒验证社区的协调,那么要恢复Grandpa的状态是很困难的,但也不是不可能的。
最后一个关键点是,我们的块生成方案Babe是在假设每个Babe会话至少会编写一个块的情况下设计的。在
Kusama ,每天都有Babe进程。在停止后的第一个小时内,在Kusama 的130台验证器上不会有任何修正;事实上,在我们对情况的初步分析时,网络已经停止了两个小时。这意味着,即使我们可以还原grander并构建一个替代块来避免有问题的升级,验证节点在暂停一个多小时后试图在链上构建验证节点后不久,链仍然会被阻塞。
发明DeLorean
事实上,我们需要更具创造性地思考。如果到目前为止我们还不能编写块,那么我们需要改变一些东西,以便丢失的块都按照Babe的预期编写,至少每小时一个。事实上,我们希望每个订单超过一个小时,让验证器有机会注意到会话正在进行,并在没有该信号的情况下发出它们处于联机状态的信号,好的验证器将被踢出,可能会因为脱机而被砍掉。 是 解决方法,至少从Babe的角度来看,不仅要倒退几个区块,还要倒退时间本身。截至2020年1月7日格林尼治标准时间上午9点,验证器将认为它们已回到2020年1月4日格林尼治标准时间12:12,大约在问题升级事件发生前25分钟(48个区块)。这使我们有时间拒绝升级建议,并防止草间弥生成为金丝雀形状的砖块。
但是,除非我们想无限期地活在过去的两天半(我们不想),否则我们的德洛里安也需要一种回到未来的方式。我们不能像Doc和Marty那样直接跳进未来;Babe会注意到从现在到那时没有生成块,然后就死了。
谢天谢地,当你能够控制区块链的外部环境时,各种事情都成为可能。你不仅可以在时间上前后跳跃,还可以做一些更微妙的事情,比如加速时间。
因此,Kusama将在过去的访问之后回到今天,但不会通过一次跳跃,而是通过扭曲时间本身。具体来说是六倍,实质上是在现实世界之间制造了一个泡沫具体来说是六倍,基本上是在现实世界和
Kusama之间制造了一个泡沫。在泡沫内部,时间的速度是泡沫外部时间的6倍。这使验证器有机会生成块并声明它们是在线的(尽管它们只有平时时间的六分之一,所以最好快点!)从锁链的角度来看,它能让Babe开心,被包裹在泡沫里,外面看不见,一切都很正常。
当然,我们不能永远停留在扭曲的速度,否则
Kusama会变焦到未来,把我们都抛在身后。所以我们内置了一个自动关闭开关;一旦
Kusama赶上我们现在的时间,气泡内的时钟和外面的时钟一样,那么气泡消失,一切都恢复正常。
如果一切顺利的话,那么结果就是,明晚9点左右,
Kusama将从旅途中归来,有一段“正常”的历史,没有人知道发生了什么不正常的事情。 备注:本文为翻译文章,文章链接来自https://medium.com/polkadot-network/kusamas-first-adventure-2cd4f439a7a4
—-
编译者/作者:张小倔的逆袭之路
玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。
|