Polkadot 官方发文回顾,5 月 24 日要求波卡验证节点将客户端降级至 0.8.30 版本事故,系内存不足导致。Polkadot 表示,在试图构建区块 5202216 时因内存不足(OOM)错误而失败。该区块包含验证人选举的链上解决方案,该解决方案通常是在链下计算的,只有在没有提交链下解决方案的情况下才会在链上进行。由于提名者的数量众多,选举溢出了 Wasm 环境中分配的内存。为解决这个问题,当时验证者被要求暂时将他们的节点软件降级到至 0.8.30 版本并且使用 「--execution=native」命令。该本地版本不受 Wasm 内存分配器的限制,网络在 70 分钟停机后恢复。之后在 5203204 区块,几个节点因 「存储根不匹配 」错误而失败,这是由于构建本地运行时和链上 Wasm 运行时的编译器版本不同造成的。解决方案是用一个具有正确编译器版本的 Wasm 运行时来覆盖链上 Wasm 运行时。
Polkadot v0.9.3 版本上线后修复了该类问题,Polkadot 表示未来可能会支持 4GB 的 Wasm 分配内存。现在选举必须在链下进行,并且禁用链上选举。在分配器被改进之前,链下工作者将使用比链上 Wasm 运行时更高的内存限制确保链下选举不会耗尽内存并能成功提交。另外,Polkadot 将确保本地和 Wasm 构建中使用相同的编译器版本。