区别于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切换到备用节点
}
}
}