Add genesis_state_type::initial_worker_type; #17
This commit is contained in:
parent
e6e7f70ff9
commit
2241fda3af
2 changed files with 47 additions and 15 deletions
|
|
@ -402,22 +402,39 @@ void database::init_genesis(const genesis_state_type& genesis_state)
|
||||||
adjust_balance(GRAPHENE_COMMITTEE_ACCOUNT, -get_balance(GRAPHENE_COMMITTEE_ACCOUNT,{}));
|
adjust_balance(GRAPHENE_COMMITTEE_ACCOUNT, -get_balance(GRAPHENE_COMMITTEE_ACCOUNT,{}));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create initial witnesses and delegates
|
// Create initial witnesses
|
||||||
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.witness_account = get_account_id(witness.owner_name);
|
||||||
op.block_signing_key = witness.block_signing_key;
|
op.block_signing_key = witness.block_signing_key;
|
||||||
op.initial_secret = secret_hash_type::hash( secret_hash_type() );
|
op.initial_secret = secret_hash_type::hash( secret_hash_type() );
|
||||||
op.witness_account = get_account_id(witness.owner_name);
|
|
||||||
apply_operation(genesis_eval_state, op);
|
apply_operation(genesis_eval_state, op);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Create initial committee members
|
||||||
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) {
|
||||||
delegate_create_operation op;
|
delegate_create_operation op;
|
||||||
op.delegate_account = get_account_id(member.owner_name);
|
op.delegate_account = get_account_id(member.owner_name);
|
||||||
apply_operation(genesis_eval_state, op).get<object_id_type>();
|
apply_operation(genesis_eval_state, op);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Create initial workers
|
||||||
|
std::for_each( genesis_state.initial_worker_candidates.begin(), genesis_state.initial_worker_candidates.end(),
|
||||||
|
[ & ]( const genesis_state_type::initial_worker_type& worker )
|
||||||
|
{
|
||||||
|
worker_create_operation op;
|
||||||
|
op.owner = get_account_id( worker.owner_name );
|
||||||
|
op.work_begin_date = time_point_sec( GRAPHENE_GENESIS_TIMESTAMP );
|
||||||
|
op.work_end_date = time_point_sec::maximum();
|
||||||
|
op.daily_pay = worker.daily_pay;
|
||||||
|
op.name = "Genesis-Worker-" + worker.owner_name;
|
||||||
|
op.initializer = vesting_balance_worker_type::initializer( 0 );
|
||||||
|
|
||||||
|
apply_operation( genesis_eval_state, std::move( op ) );
|
||||||
|
} );
|
||||||
|
|
||||||
// Set active witnesses
|
// Set active witnesses
|
||||||
modify(get_global_properties(), [&](global_property_object& p) {
|
modify(get_global_properties(), [&](global_property_object& p) {
|
||||||
auto idx = get_index_type<witness_index>().indices();
|
auto idx = get_index_type<witness_index>().indices();
|
||||||
|
|
|
||||||
|
|
@ -79,6 +79,11 @@ struct genesis_state_type {
|
||||||
/// Must correspond to one of the initial accounts
|
/// Must correspond to one of the initial accounts
|
||||||
string owner_name;
|
string owner_name;
|
||||||
};
|
};
|
||||||
|
struct initial_worker_type {
|
||||||
|
/// Must correspond to one of the initial accounts
|
||||||
|
string owner_name;
|
||||||
|
share_type daily_pay;
|
||||||
|
};
|
||||||
|
|
||||||
chain_parameters initial_parameters;
|
chain_parameters initial_parameters;
|
||||||
vector<initial_account_type> initial_accounts;
|
vector<initial_account_type> initial_accounts;
|
||||||
|
|
@ -89,26 +94,36 @@ struct genesis_state_type {
|
||||||
vector<initial_witness_type> initial_witness_candidates;
|
vector<initial_witness_type> initial_witness_candidates;
|
||||||
// These are only candidates; the chain will have no active committee members at genesis
|
// These are only candidates; the chain will have no active committee members at genesis
|
||||||
vector<initial_committee_member_type> initial_committee_candidates;
|
vector<initial_committee_member_type> initial_committee_candidates;
|
||||||
|
vector<initial_worker_type> initial_worker_candidates;
|
||||||
};
|
};
|
||||||
} } // namespace graphene::chain
|
} } // namespace graphene::chain
|
||||||
|
|
||||||
FC_REFLECT(graphene::chain::genesis_state_type::initial_account_type, (name)(owner_key)(active_key)(is_lifetime_member))
|
FC_REFLECT(graphene::chain::genesis_state_type::initial_account_type, (name)(owner_key)(active_key)(is_lifetime_member))
|
||||||
FC_REFLECT(graphene::chain::genesis_state_type::initial_balance_type,
|
|
||||||
(owner)(asset_symbol)(amount))
|
|
||||||
FC_REFLECT(graphene::chain::genesis_state_type::initial_vesting_balance_type,
|
|
||||||
(owner)(asset_symbol)(amount)(begin_timestamp)(vesting_duration_seconds)(begin_balance))
|
|
||||||
FC_REFLECT(graphene::chain::genesis_state_type::initial_witness_type, (owner_name)(block_signing_key))
|
|
||||||
FC_REFLECT(graphene::chain::genesis_state_type::initial_committee_member_type, (owner_name))
|
|
||||||
FC_REFLECT(graphene::chain::genesis_state_type::initial_asset_type::initial_bitasset_options::initial_collateral_position,
|
|
||||||
(collateral)(debt))
|
|
||||||
FC_REFLECT(graphene::chain::genesis_state_type::initial_asset_type::initial_bitasset_options,
|
|
||||||
(feed_lifetime_sec)(minimum_feeds)(force_settlement_delay_sec)(force_settlement_offset_percent)
|
|
||||||
(maximum_force_settlement_volume)(backing_asset_symbol)(maintenance_collateral_ratio)(collateral_records))
|
|
||||||
FC_REFLECT(graphene::chain::genesis_state_type::initial_asset_type,
|
FC_REFLECT(graphene::chain::genesis_state_type::initial_asset_type,
|
||||||
(symbol)(description)(precision)(issuer_name)(max_supply)(market_fee_percent)
|
(symbol)(description)(precision)(issuer_name)(max_supply)(market_fee_percent)
|
||||||
(issuer_permissions)(flags)(bitasset_options)(initial_accumulated_fees))
|
(issuer_permissions)(flags)(bitasset_options)(initial_accumulated_fees))
|
||||||
|
|
||||||
|
FC_REFLECT(graphene::chain::genesis_state_type::initial_asset_type::initial_bitasset_options,
|
||||||
|
(feed_lifetime_sec)(minimum_feeds)(force_settlement_delay_sec)(force_settlement_offset_percent)
|
||||||
|
(maximum_force_settlement_volume)(backing_asset_symbol)(maintenance_collateral_ratio)(collateral_records))
|
||||||
|
|
||||||
|
FC_REFLECT(graphene::chain::genesis_state_type::initial_asset_type::initial_bitasset_options::initial_collateral_position,
|
||||||
|
(collateral)(debt))
|
||||||
|
|
||||||
|
FC_REFLECT(graphene::chain::genesis_state_type::initial_balance_type,
|
||||||
|
(owner)(asset_symbol)(amount))
|
||||||
|
|
||||||
|
FC_REFLECT(graphene::chain::genesis_state_type::initial_vesting_balance_type,
|
||||||
|
(owner)(asset_symbol)(amount)(begin_timestamp)(vesting_duration_seconds)(begin_balance))
|
||||||
|
|
||||||
|
FC_REFLECT(graphene::chain::genesis_state_type::initial_witness_type, (owner_name)(block_signing_key))
|
||||||
|
|
||||||
|
FC_REFLECT(graphene::chain::genesis_state_type::initial_committee_member_type, (owner_name))
|
||||||
|
|
||||||
|
FC_REFLECT(graphene::chain::genesis_state_type::initial_worker_type, (owner_name)(daily_pay))
|
||||||
|
|
||||||
FC_REFLECT(graphene::chain::genesis_state_type,
|
FC_REFLECT(graphene::chain::genesis_state_type,
|
||||||
(initial_parameters)(initial_accounts)(initial_assets)(initial_balances)
|
(initial_parameters)(initial_accounts)(initial_assets)(initial_balances)
|
||||||
(initial_vesting_balances)(initial_active_witnesses)(initial_witness_candidates)
|
(initial_vesting_balances)(initial_active_witnesses)(initial_witness_candidates)
|
||||||
(initial_committee_candidates))
|
(initial_committee_candidates)(initial_worker_candidates))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue