From c00e20268dddbcdd0cb4bc78431a6be7df30208f Mon Sep 17 00:00:00 2001 From: Nathan Hourt Date: Mon, 6 Jul 2015 14:00:35 -0400 Subject: [PATCH] Tweaks circa genesis, should not affect behavior --- libraries/chain/db_init.cpp | 13 ++++++++----- libraries/chain/db_maint.cpp | 13 ++++++------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/libraries/chain/db_init.cpp b/libraries/chain/db_init.cpp index 8fb62226..d9852454 100644 --- a/libraries/chain/db_init.cpp +++ b/libraries/chain/db_init.cpp @@ -140,6 +140,8 @@ void database::init_genesis(const genesis_state_type& genesis_state) { try { FC_ASSERT(genesis_state.initial_witness_candidates.size() > 0, "Cannot start a chain with zero witnesses."); + FC_ASSERT(genesis_state.initial_active_witnesses <= genesis_state.initial_witness_candidates.size(), + "initial_active_witnesses is larger than the number of candidate witnesses."); _undo_db.disable(); struct auth_inhibitor { @@ -273,6 +275,7 @@ void database::init_genesis(const genesis_state_type& genesis_state) } } + // Helper function to get account ID by name const auto& accounts_by_name = get_index_type().indices().get(); auto get_account_id = [&accounts_by_name](const string& name) { auto itr = accounts_by_name.find(name); @@ -282,7 +285,7 @@ void database::init_genesis(const genesis_state_type& genesis_state) return itr->get_id(); }; - // Create initial assets + // Helper function to get asset ID by symbol const auto& assets_by_symbol = get_index_type().indices().get(); auto get_asset_id = [&assets_by_symbol](const string& symbol) { auto itr = assets_by_symbol.find(symbol); @@ -292,6 +295,7 @@ void database::init_genesis(const genesis_state_type& genesis_state) return itr->get_id(); }; + // Create initial assets for( const genesis_state_type::initial_asset_type& asset : genesis_state.initial_assets ) { asset_dynamic_data_id_type dynamic_data_id; @@ -400,12 +404,11 @@ void database::init_genesis(const genesis_state_type& genesis_state) // Create initial witnesses and delegates std::for_each(genesis_state.initial_witness_candidates.begin(), genesis_state.initial_witness_candidates.end(), [&](const genesis_state_type::initial_witness_type& witness) { - witness_create_operation op; op.block_signing_key = witness.block_signing_key; op.initial_secret = witness.initial_secret; op.witness_account = get_account_id(witness.owner_name); - apply_operation(genesis_eval_state, op).get(); + apply_operation(genesis_eval_state, op); }); std::for_each(genesis_state.initial_committee_candidates.begin(), genesis_state.initial_committee_candidates.end(), [&](const genesis_state_type::initial_committee_member_type& member) { @@ -439,10 +442,10 @@ void database::init_genesis(const genesis_state_type& genesis_state) auto init_witnesses = get_global_properties().active_witnesses; _wso.scheduler = witness_scheduler(); - _wso.scheduler._min_token_count = init_witnesses.size() / 2; + _wso.scheduler._min_token_count = std::max(int(init_witnesses.size()) / 2, 1); _wso.scheduler.update(init_witnesses); - for( size_t i=0; i