Tweaks circa genesis, should not affect behavior

This commit is contained in:
Nathan Hourt 2015-07-06 14:00:35 -04:00
parent 6ab59f63a7
commit c00e20268d
2 changed files with 14 additions and 12 deletions

View file

@ -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<account_index>().indices().get<by_name>();
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<asset_index>().indices().get<by_symbol>();
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<object_id_type>();
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<init_witnesses.size(); i++ )
for( size_t i=0; i<init_witnesses.size(); ++i )
_wso.scheduler.produce_schedule(rng);
_wso.last_scheduling_block = 0;

View file

@ -143,16 +143,16 @@ void database::update_active_witnesses()
a.active.weight_threshold += 1;
});
modify( gpo, [&]( global_property_object& gp ){
modify(gpo, [&]( global_property_object& gp ){
gp.active_witnesses.clear();
gp.active_witnesses.reserve( wits.size() );
gp.active_witnesses.reserve(wits.size());
std::transform(wits.begin(), wits.end(),
std::inserter(gp.active_witnesses, gp.active_witnesses.end()),
[](const witness_object& w) {
return w.id;
});
gp.witness_accounts.clear();
gp.witness_accounts.reserve( wits.size() );
gp.witness_accounts.reserve(wits.size());
std::transform(wits.begin(), wits.end(),
std::inserter(gp.witness_accounts, gp.witness_accounts.end()),
[](const witness_object& w) {
@ -161,11 +161,10 @@ void database::update_active_witnesses()
});
const witness_schedule_object& wso = witness_schedule_id_type()(*this);
modify( wso, [&]( witness_schedule_object& _wso )
modify(wso, [&](witness_schedule_object& _wso)
{
_wso.scheduler.update( gpo.active_witnesses );
} );
_wso.scheduler.update(gpo.active_witnesses);
});
} FC_CAPTURE_AND_RETHROW() }
void database::update_active_delegates()