Tweaks circa genesis, should not affect behavior
This commit is contained in:
parent
6ab59f63a7
commit
c00e20268d
2 changed files with 14 additions and 12 deletions
|
|
@ -140,6 +140,8 @@ void database::init_genesis(const genesis_state_type& genesis_state)
|
||||||
{ try {
|
{ try {
|
||||||
FC_ASSERT(genesis_state.initial_witness_candidates.size() > 0,
|
FC_ASSERT(genesis_state.initial_witness_candidates.size() > 0,
|
||||||
"Cannot start a chain with zero witnesses.");
|
"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();
|
_undo_db.disable();
|
||||||
struct auth_inhibitor {
|
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>();
|
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 get_account_id = [&accounts_by_name](const string& name) {
|
||||||
auto itr = accounts_by_name.find(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();
|
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>();
|
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 get_asset_id = [&assets_by_symbol](const string& symbol) {
|
||||||
auto itr = assets_by_symbol.find(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();
|
return itr->get_id();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Create initial assets
|
||||||
for( const genesis_state_type::initial_asset_type& asset : genesis_state.initial_assets )
|
for( const genesis_state_type::initial_asset_type& asset : genesis_state.initial_assets )
|
||||||
{
|
{
|
||||||
asset_dynamic_data_id_type dynamic_data_id;
|
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
|
// Create initial witnesses and delegates
|
||||||
std::for_each(genesis_state.initial_witness_candidates.begin(), genesis_state.initial_witness_candidates.end(),
|
std::for_each(genesis_state.initial_witness_candidates.begin(), genesis_state.initial_witness_candidates.end(),
|
||||||
[&](const genesis_state_type::initial_witness_type& witness) {
|
[&](const genesis_state_type::initial_witness_type& witness) {
|
||||||
|
|
||||||
witness_create_operation op;
|
witness_create_operation op;
|
||||||
op.block_signing_key = witness.block_signing_key;
|
op.block_signing_key = witness.block_signing_key;
|
||||||
op.initial_secret = witness.initial_secret;
|
op.initial_secret = witness.initial_secret;
|
||||||
op.witness_account = get_account_id(witness.owner_name);
|
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(),
|
std::for_each(genesis_state.initial_committee_candidates.begin(), genesis_state.initial_committee_candidates.end(),
|
||||||
[&](const genesis_state_type::initial_committee_member_type& member) {
|
[&](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;
|
auto init_witnesses = get_global_properties().active_witnesses;
|
||||||
|
|
||||||
_wso.scheduler = witness_scheduler();
|
_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);
|
_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.scheduler.produce_schedule(rng);
|
||||||
|
|
||||||
_wso.last_scheduling_block = 0;
|
_wso.last_scheduling_block = 0;
|
||||||
|
|
|
||||||
|
|
@ -143,16 +143,16 @@ void database::update_active_witnesses()
|
||||||
a.active.weight_threshold += 1;
|
a.active.weight_threshold += 1;
|
||||||
});
|
});
|
||||||
|
|
||||||
modify( gpo, [&]( global_property_object& gp ){
|
modify(gpo, [&]( global_property_object& gp ){
|
||||||
gp.active_witnesses.clear();
|
gp.active_witnesses.clear();
|
||||||
gp.active_witnesses.reserve( wits.size() );
|
gp.active_witnesses.reserve(wits.size());
|
||||||
std::transform(wits.begin(), wits.end(),
|
std::transform(wits.begin(), wits.end(),
|
||||||
std::inserter(gp.active_witnesses, gp.active_witnesses.end()),
|
std::inserter(gp.active_witnesses, gp.active_witnesses.end()),
|
||||||
[](const witness_object& w) {
|
[](const witness_object& w) {
|
||||||
return w.id;
|
return w.id;
|
||||||
});
|
});
|
||||||
gp.witness_accounts.clear();
|
gp.witness_accounts.clear();
|
||||||
gp.witness_accounts.reserve( wits.size() );
|
gp.witness_accounts.reserve(wits.size());
|
||||||
std::transform(wits.begin(), wits.end(),
|
std::transform(wits.begin(), wits.end(),
|
||||||
std::inserter(gp.witness_accounts, gp.witness_accounts.end()),
|
std::inserter(gp.witness_accounts, gp.witness_accounts.end()),
|
||||||
[](const witness_object& w) {
|
[](const witness_object& w) {
|
||||||
|
|
@ -161,11 +161,10 @@ void database::update_active_witnesses()
|
||||||
});
|
});
|
||||||
|
|
||||||
const witness_schedule_object& wso = witness_schedule_id_type()(*this);
|
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() }
|
} FC_CAPTURE_AND_RETHROW() }
|
||||||
|
|
||||||
void database::update_active_delegates()
|
void database::update_active_delegates()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue