EOS 整个链停止,重新强制引导启动
BP节点全部停止,各节点重新启动后,无法正常出块
最近因为非技术原因,导致测试链所有BP节点都停止了。
由于producer_plugin
中的安全检查,导致BP节点启动后,一直处于start_block_result::waiting
导致整个链网络瘫痪。
强制引导启动
先准备一台非目前BP节点所在的机器做强制引导节点。然后把目前出块账户的 2/3 +1
个BP账号都配置到此节点。
并把目前其他的BP节点都关闭pkill nodeos
修改强制引导节点的链程序,绕过安全检查
https://github.com/EOSIO/eos/blob/3c553db73864ea19458512b4669cf9942dc59f57/plugins/producer_plugin/producer_plugin.cpp#L1350
将下面代码注释掉,并重新编译链程序
if (_pending_block_mode == pending_block_mode::speculating) {
auto head_block_age = now - chain.head_block_time();
if (head_block_age > fc::seconds(5))
return start_block_result::waiting;
}
修改BP节点的配置为同步节点的配置
先将其余BP节点的config,改为同步节点的配置,也就是把强制引导节点的p2p-peer-address
加到各BP节点的config,并把各BP节点的producer-name
和signature-provider
都注释掉。
强制启动引导节点
添加-e
,强制启动出块
nodeos -e
此时强制出块节点应该已出块。
启动各BP节点
将其余BP节点分别启动,此时开始同步区块,等到追上强制出块节点高度。
迁移BP账号
关闭强制出块节点,把BP账号从config里面每注释掉一部分,就把对应的BP节点停止,并修改config,把对应的BP账号放开。此时重新启动强制出块节点和新迁移BP的节点,现在强制出块节点除去注释掉的部分出块账号。其余BP账号出块正常,且能从新迁移BP节点同步对应的出块BP账号的出块。新迁移的BP节点,出块也正常。
依次类推,迁移其余BP节点账号,等其余BP节点都出块正常后,及此次强制引导启动链网络结束。
备注
能出现全部节点停止的情况,基本都是特殊公链-“私链”,所以具有大部分BP的掌控权,我们先只针对此情景提出修复方案。
当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »