EOS系列 - 超级节点(BP)列表更新流程

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()

你可能感兴趣的:(EOS系列,源码分析,超级节点,BP,智能合约,C++,EOS)