Add genesis_state_type::initial_worker_type; #17

This commit is contained in:
Vikram Rajkumar 2015-07-07 14:02:02 -04:00
parent e6e7f70ff9
commit 2241fda3af
2 changed files with 47 additions and 15 deletions

View file

@ -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();

View file

@ -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))