翻译整理:PolkaBase
「代码中的多个错误导致节点从Kusama网络退出,并丢失了存储已验证块区块的数据库。因此,相同的节点在重新启动时对这些块进行了双重签名。Kusama议会的动议已给用户补偿了由这一问题而造成的惩罚罚金。」
7月31日,周五,运行时(runtime)版本为v2019的两个Kusama验证节点开始每隔几分钟崩溃,给出两个明显的错误,并报告了一个问题。乍一看,问题似乎与验证者的密钥有关。随后发现这不是原因,因为受影响的验证节点间确认他们没有在过程中更改密钥。此外,该问题似乎仅存在于Kusama网络上,而不存在于Polkadot上。
进一步深入研究,团队意识到该问题似乎是由GRANDPA模棱两可引起的,导致Kusama中的斜线事件开始的,该事件最初是由文件描述符泄漏引起的,导致节点崩溃。此泄漏使节点无法将GRANDPA投票者的状态写入磁盘,并导致丢失此数据的节点在重新启动后再次投票,这次投票的区块比其原本选择要验证的区块更新。这导致了GRANDPA算法遭遇了表现模棱两可的算法情况。
GRANDPAEquivocation:一个验证人在同一个区块时间、但在不同链上同时签署两个意向或两个以上意向投票信息的区块。
https://wiki.polkadot.network/
这两个事件的组合导致在v0.8.15发布并升级了网络之后的某个时候出现了大幅惩罚验证节点的情况。颁发机构发现功能已经在运行时模块级别上使用了一段时间,但是在客户端上默认未启用,并且该版本还使GRANDPA算法能够报告未签名外部的模棱两可。
GRANDPA的新报告功能:https://github.com/
掌握了这些信息后,团队的主要假设是,文件描述符泄漏引起的模棱两可实际上早就已经开始发生,但仅在7月v0.8.15升级后才报告:通过运行此版本的网络,节点撞车事故后开始报告自身的节点情况,引起了相关团队的关注。尽管如此,对由Parity运行的节点的日志进行的调查仍未发现任何先前的模棱两可“Equivocation”的问题的发生。
对文件描述符泄漏的根本原因的进一步研究指出了两个主要罪魁祸首:权限发现和度量收集。授权发现使用了过多的套接字来从DHT查询数据。对于系统指标收集,我们依靠sysinfocrate,该crate在系统中的所有进程和每个进程的线程上保留文件描述符的高速缓存。
短期解决方案是默认禁用“授权发现”功能,并停止收集系统指标。如果有适当的解决方法,可以过度使用sockets,那么将来的发行版中将再次重新启用AuthorityDiscovery模块。
在发布新版本之前,Parity团队建议手动禁用颁发机构发现。另外,在节点崩溃的任何情况下,建议验证节点在重新启动之前引入延迟。如果未在磁盘上持久保留节点的票证,这会降低节点在GRANDPA中产生”模棱两可”(Equivocation)的可能性。
经过一些讨论和发展,Polkadotv0.8.22已发布,包括上面详细介绍的短期修复。所有验证节点都应升级其版本并监视结果。Kusama议会已恢复了由该错误引起的所有削减,并且本着这种精神,就恢复经济损失而非验证人提名损失进行了新的讨论。
为了跟上发展步伐,有很多方法可以加入Kusama社区。加入Kusama频道的讨论:
https://matrix.to/
在我们的网站和KusamaWiki上了解有关Kusama的更多信息:
https://wiki.polkadot.network/
想加入Kusama背后的核心成长团队吗?加入大使计划:
https://polkadot.network/
翻译、整理:ShawnPolkaBase
原地址:https://polkadot.network
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。