eos定時更新BP列表的流程:
步驟一: nodeos出塊時調合約內的方法:
-
nodeos
on_block_act.name = N(onblock); eos_abi.structs.emplace_back( struct_def { "onblock", "", { {"header", "block_header"} } }); eos_abi.actions.push_back( action_def{name("onblock"), "onblock",""} );
-
contract
[[eosio::action]] void onblock( ignore<block_header> header );
步驟二: BP合約內容更新時 回調nodeos本地函數接口
onblock
合約方法內定時(1分鐘)調合約
update_elected_producers()
決定出最新的21個BP後, 再設置回nodeos接口(中間需要通過cdt的過度,函數名一樣)
set_proposed_producers()