diff --git a/README.md b/README.md index 4ee04726221f7633792110a01234ddbc45b28b3d..cac1c74d14f805d3e7303ff974dd05d35dc0b0cc 100644 --- a/README.md +++ b/README.md @@ -52,17 +52,27 @@ genesis-json = /path/to/eos/source/genesis.json # Enable production on a stale chain, since a single-node test chain is pretty much always stale enable-stale-production = true # Enable block production with the testnet producers -producer-id = {"_id":0} -producer-id = {"_id":1} -producer-id = {"_id":2} -producer-id = {"_id":3} -producer-id = {"_id":4} -producer-id = {"_id":5} -producer-id = {"_id":6} -producer-id = {"_id":7} -producer-id = {"_id":8} -producer-id = {"_id":9} -producer-id = {"_id":10} +producer-name = init0 +producer-name = init1 +producer-name = init2 +producer-name = init3 +producer-name = init4 +producer-name = init5 +producer-name = init6 +producer-name = init7 +producer-name = init8 +producer-name = init9 +producer-name = init10 +producer-name = init11 +producer-name = init12 +producer-name = init13 +producer-name = init14 +producer-name = init15 +producer-name = init16 +producer-name = init17 +producer-name = init18 +producer-name = init19 +producer-name = init20 # Load the block producer plugin, so we can produce blocks plugin = eos::producer_plugin ``` diff --git a/genesis.json b/genesis.json index 7a7625bd4d8cf76d8f74e2571951adc43f83494c..69a7be733e173fabc10754b85b0e5fa9966b2f96 100644 --- a/genesis.json +++ b/genesis.json @@ -9,86 +9,156 @@ "maximum_producer_count": 1001 }, "immutable_parameters": { - "min_producer_count": 11 + "min_producer_count": 21 }, "initial_accounts": [{ - "name": "init00", + "name": "init0", "owner_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", "active_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" },{ - "name": "init01", + "name": "init1", "owner_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", "active_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" },{ - "name": "init02", + "name": "init2", "owner_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", "active_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" },{ - "name": "init03", + "name": "init3", "owner_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", "active_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" },{ - "name": "init04", + "name": "init4", "owner_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", "active_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" },{ - "name": "init05", + "name": "init5", "owner_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", "active_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" },{ - "name": "init06", + "name": "init6", "owner_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", "active_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" },{ - "name": "init07", + "name": "init7", "owner_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", "active_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" },{ - "name": "init08", + "name": "init8", "owner_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", "active_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" },{ - "name": "init09", + "name": "init9", "owner_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", "active_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" },{ "name": "init10", "owner_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", "active_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" + },{ + "name": "init11", + "owner_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", + "active_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" + },{ + "name": "init12", + "owner_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", + "active_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" + },{ + "name": "init13", + "owner_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", + "active_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" + },{ + "name": "init14", + "owner_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", + "active_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" + },{ + "name": "init15", + "owner_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", + "active_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" + },{ + "name": "init16", + "owner_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", + "active_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" + },{ + "name": "init17", + "owner_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", + "active_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" + },{ + "name": "init18", + "owner_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", + "active_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" + },{ + "name": "init19", + "owner_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", + "active_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" + },{ + "name": "init20", + "owner_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", + "active_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" }], "initial_producers": [{ - "owner_name": "init00", + "owner_name": "init0", "block_signing_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" },{ - "owner_name": "init01", + "owner_name": "init1", "block_signing_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" },{ - "owner_name": "init02", + "owner_name": "init2", "block_signing_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" },{ - "owner_name": "init03", + "owner_name": "init3", "block_signing_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" },{ - "owner_name": "init04", + "owner_name": "init4", "block_signing_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" },{ - "owner_name": "init05", + "owner_name": "init5", "block_signing_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" },{ - "owner_name": "init06", + "owner_name": "init6", "block_signing_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" },{ - "owner_name": "init07", + "owner_name": "init7", "block_signing_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" },{ - "owner_name": "init08", + "owner_name": "init8", "block_signing_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" },{ - "owner_name": "init09", + "owner_name": "init9", "block_signing_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" },{ "owner_name": "init10", "block_signing_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" - },], + },{ + "owner_name": "init11", + "block_signing_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" + },{ + "owner_name": "init12", + "block_signing_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" + },{ + "owner_name": "init13", + "block_signing_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" + },{ + "owner_name": "init14", + "block_signing_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" + },{ + "owner_name": "init15", + "block_signing_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" + },{ + "owner_name": "init16", + "block_signing_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" + },{ + "owner_name": "init17", + "block_signing_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" + },{ + "owner_name": "init18", + "block_signing_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" + },{ + "owner_name": "init19", + "block_signing_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" + },{ + "owner_name": "init20", + "block_signing_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" + }], "initial_chain_id": "0000000000000000000000000000000000000000000000000000000000000000" } diff --git a/plugins/producer_plugin/producer_plugin.cpp b/plugins/producer_plugin/producer_plugin.cpp index f3110b7bdc06d69ac9f85eab6677ab746a985773..e5e98944c231f3e7726a5434668a6be39578e2e9 100644 --- a/plugins/producer_plugin/producer_plugin.cpp +++ b/plugins/producer_plugin/producer_plugin.cpp @@ -145,7 +145,7 @@ void producer_plugin::plugin_startup() ilog("producer plugin: plugin_startup() begin"); chain::chain_controller& chain = app().get_plugin().chain(); - if( !my->_producers.empty() ) + if (!my->_producers.empty()) { ilog("Launching block production for ${n} producers.", ("n", my->_producers.size())); if(my->_production_enabled) @@ -202,33 +202,35 @@ block_production_condition::block_production_condition_enum producer_plugin_impl switch(result) { - case block_production_condition::produced: - ilog("Generated block #${n} with timestamp ${t} at time ${c}", (capture)); - break; - case block_production_condition::not_synced: - ilog("Not producing block because production is disabled until we receive a recent block (see: --enable-stale-production)"); - break; - case block_production_condition::not_my_turn: -// ilog("Not producing block because it isn't my turn"); - break; - case block_production_condition::not_time_yet: -// ilog("Not producing block because slot has not yet arrived"); - break; - case block_production_condition::no_private_key: - ilog("Not producing block because I don't have the private key for ${scheduled_key}", (capture) ); - break; - case block_production_condition::low_participation: - elog("Not producing block because node appears to be on a minority fork with only ${pct}% producer participation", (capture) ); - break; - case block_production_condition::lag: - elog("Not producing block because node didn't wake up within 500ms of the slot time."); - break; - case block_production_condition::consecutive: - elog("Not producing block because the last block was generated by the same producer.\nThis node is probably disconnected from the network so block production has been disabled.\nDisable this check with --allow-consecutive option."); - break; - case block_production_condition::exception_producing_block: - elog( "exception prodcing block" ); - break; + case block_production_condition::produced: { + auto producer = app().get_plugin().chain().head_block_producer(); + ilog("${p} generated block #${n} with timestamp ${t} at time ${c}", ("p", producer)(capture)); + break; + } + case block_production_condition::not_synced: + ilog("Not producing block because production is disabled until we receive a recent block (see: --enable-stale-production)"); + break; + case block_production_condition::not_my_turn: + // ilog("Not producing block because it isn't my turn"); + break; + case block_production_condition::not_time_yet: + // ilog("Not producing block because slot has not yet arrived"); + break; + case block_production_condition::no_private_key: + ilog("Not producing block because I don't have the private key for ${scheduled_key}", (capture) ); + break; + case block_production_condition::low_participation: + elog("Not producing block because node appears to be on a minority fork with only ${pct}% producer participation", (capture) ); + break; + case block_production_condition::lag: + elog("Not producing block because node didn't wake up within 500ms of the slot time."); + break; + case block_production_condition::consecutive: + elog("Not producing block because the last block was generated by the same producer.\nThis node is probably disconnected from the network so block production has been disabled.\nDisable this check with --allow-consecutive option."); + break; + case block_production_condition::exception_producing_block: + elog( "exception prodcing block" ); + break; } schedule_production_loop();