3月7日上午,CosmosEVM兼容中心Evmos在Discord官方群表示,网络升级失败,并将暂停24-48小时。3月8日下午,CosmosEVM兼容中心Evmos在推特发文称,考虑到社区反馈,Evmos至少在接下来的几天内都不会上线。
今日15:27(GMT+8)时,Evmos团队在Github上发表了升级失败报告,对网络升级失败的核心问题进行了解读。
为什么链停止运行了? - 核心团队在主网上发布了部分测试的升级程序代码 - 发生共识错误之后协调失误,团队安排的时间太紧凑,只有几个小时可用于进行升级部署 - 升级的复杂性达到了一个极端,需要彻底重启整个网络并完成同步 - 5个验证者双签,导致它们被tombstoned(ForesightNews注:tombstone指验证节点如果验证错误就会被惩罚。) 1)当验证者被tombstone后,他们将不能再次成为验证节点。 2)这是一个严重的错误。tombstone本质上是永久封禁,所有的委托都需要手动解除绑定,这对委托人来说也是一个可怕的场景。 - 考虑到受影响的验证节点和用户(比例非常大),暂停这条链是可以接受的。 - 在尝试恢复网络数小时后,我们目睹了多个验证节点被tombstone。验证者社区和核心团队认为这是不对的,于是决定停止网络,直到新版本测试达到可用于生产的状况后再重启。
为什么会出现5个验证者双签? - 他们在共识停止期间运行unsafe-reset-all,导致他们破坏了priv_validator_state.json文件。此外,一些节点在迁移到其他机器的过程中,并忘记拷贝迁移priv_validator_state.json文件 - 他们不知道必须备份并迁移priv_validator_state.json,因为当链正常运行时这通常都不是问题,大多数块将在一轮内达成共识,并且在说明手册中没有明确说明一定要这样做。
为什么有这么多验证者运行unsafe-reset-all而不保留他们的priv_validator_state.json? - 验证者必须从快照中恢复,因为如果他们在升级期间重新启动节点,他们将不再参与共识,所以在这样做时,它们要么完全删除$EVMOSD_home/data,要么运行unsafe-reset-all。在共识停止期间执行此操作时,它是不安全的(正如在其标题中指出的命令那样),并且如果没有备份priv_validator_state.json,则不完全了解