比特股中见证人节点的备份 - backup your witness node in bitshares

区别于BTC和ETH的POW共识机制,比特股采用DPOS共识,更加节省能源并且效率更高。但同时也意味着见证人节点(witness_node)非常重要,作为witness节点可以参与全网的手续费分成,所以如果你有一个见证人节点,做好备份是相当重要的,否则一旦宕机就会失去见证人资格,那损失可不小。

比特股中见证人节点备份的逻辑:

你的_活跃_节点,使用config.ini中配置的私钥对区块进行签名。
你的_备份_节点,必须使用一个不同的私钥进行签名,可以通过钱包的suggest_brain_key命令生成 . 使用一个脚本进行自动化监控和切换 (如: https://github.com/roelandp/Bitshares-Witness-Monitor)。
一旦你的_活跃_节点不再产生区块,missing blocks 参数将会增加,然后,自动化监控脚本将调用update_witness方法将见证人替换成备份节点。

伪代码:

 var witness = "your_account_name";
 var check_rate = 45;
 var start_missed = -1;
 var current_missed = 0;
 var threshold_witness_flip = 5; //错过5个区块,则切换到备用节点
 while(true) {
 check_witness();
 sleep(check_rate);
 }
 function check_witness() {
 status = bitshares.get_witness(account_name); //调用wallet api的get_witness方法
 total_missed = status['total_missed'];
 if(start_missed == -1) {
 start_missed = total_missed;
 }
 if(total_missed > current_missed) {
 notify(); //如果有新的丢失区块,发送通知
 current_missed =total_missed
 if(total_missed - start_missed >= threshold_witness_flip) {
 bitshares.wallet.unlock(walletpwd); //解锁钱包
 bitshares.update_witness(witness,url=witness_url,key=backup_signing_key); //调用update_witness切换到备用节点
 }
 }
 }

原文链接:https://www.jianshu.com/p/ae20337193b0