Compare commits

...

2 commits

Author SHA1 Message Date
sierra19XX
7606e33a02 init variables 2020-10-11 15:18:47 +00:00
sierra19XX
cb957f74db hotfix - son max count fix 2020-10-11 10:55:49 +00:00
6 changed files with 25 additions and 15 deletions

View file

@ -653,7 +653,7 @@ void database::update_active_sons()
const global_property_object& gpo = get_global_properties(); const global_property_object& gpo = get_global_properties();
const chain_parameters& cp = gpo.parameters; const chain_parameters& cp = gpo.parameters;
auto sons = sort_votable_objects<son_index>(cp.maximum_son_count); auto sons = sort_votable_objects<son_index>(cp.maximum_son_count());
const auto& all_sons = get_index_type<son_index>().indices(); const auto& all_sons = get_index_type<son_index>().indices();
@ -1981,7 +1981,7 @@ void database::perform_chain_maintenance(const signed_block& next_block, const g
d._vote_tally_buffer.resize(props.next_available_vote_id); d._vote_tally_buffer.resize(props.next_available_vote_id);
d._witness_count_histogram_buffer.resize(props.parameters.maximum_witness_count / 2 + 1); d._witness_count_histogram_buffer.resize(props.parameters.maximum_witness_count / 2 + 1);
d._committee_count_histogram_buffer.resize(props.parameters.maximum_committee_count / 2 + 1); d._committee_count_histogram_buffer.resize(props.parameters.maximum_committee_count / 2 + 1);
d._son_count_histogram_buffer.resize(props.parameters.maximum_son_count / 2 + 1); d._son_count_histogram_buffer.resize(props.parameters.maximum_son_count() / 2 + 1);
d._total_voting_stake = 0; d._total_voting_stake = 0;
auto balance_type = vesting_balance_type::normal; auto balance_type = vesting_balance_type::normal;
@ -2093,7 +2093,7 @@ void database::perform_chain_maintenance(const signed_block& next_block, const g
// same rationale as for witnesses // same rationale as for witnesses
d._committee_count_histogram_buffer[offset] += voting_stake; d._committee_count_histogram_buffer[offset] += voting_stake;
} }
if( opinion_account.options.num_son <= props.parameters.maximum_son_count ) if( opinion_account.options.num_son <= props.parameters.maximum_son_count() )
{ {
uint16_t offset = std::min(size_t(opinion_account.options.num_son/2), uint16_t offset = std::min(size_t(opinion_account.options.num_son/2),
d._son_count_histogram_buffer.size() - 1); d._son_count_histogram_buffer.size() - 1);
@ -2183,6 +2183,12 @@ void database::perform_chain_maintenance(const signed_block& next_block, const g
p.pending_parameters->extensions.value.son_down_time = p.parameters.extensions.value.son_down_time; p.pending_parameters->extensions.value.son_down_time = p.parameters.extensions.value.son_down_time;
if( !p.pending_parameters->extensions.value.son_bitcoin_min_tx_confirmations.valid() ) if( !p.pending_parameters->extensions.value.son_bitcoin_min_tx_confirmations.valid() )
p.pending_parameters->extensions.value.son_bitcoin_min_tx_confirmations = p.parameters.extensions.value.son_bitcoin_min_tx_confirmations; p.pending_parameters->extensions.value.son_bitcoin_min_tx_confirmations = p.parameters.extensions.value.son_bitcoin_min_tx_confirmations;
if( !p.pending_parameters->extensions.value.son_account.valid() )
p.pending_parameters->extensions.value.son_account = p.parameters.extensions.value.son_account;
if( !p.pending_parameters->extensions.value.btc_asset.valid() )
p.pending_parameters->extensions.value.btc_asset = p.parameters.extensions.value.btc_asset;
if( !p.pending_parameters->extensions.value.maximum_son_count.valid() )
p.pending_parameters->extensions.value.maximum_son_count = p.parameters.extensions.value.maximum_son_count;
p.parameters = std::move(*p.pending_parameters); p.parameters = std::move(*p.pending_parameters);
p.pending_parameters.reset(); p.pending_parameters.reset();
} }

View file

@ -76,7 +76,9 @@ FC_REFLECT(graphene::chain::budget_record,
(total_budget) (total_budget)
(witness_budget) (witness_budget)
(worker_budget) (worker_budget)
(son_budget)
(leftover_worker_funds) (leftover_worker_funds)
(leftover_son_funds)
(supply_delta) (supply_delta)
) )

View file

@ -65,9 +65,9 @@ namespace graphene { namespace chain {
optional < uint32_t > son_heartbeat_frequency = SON_HEARTBEAT_FREQUENCY; optional < uint32_t > son_heartbeat_frequency = SON_HEARTBEAT_FREQUENCY;
optional < uint32_t > son_down_time = SON_DOWN_TIME; optional < uint32_t > son_down_time = SON_DOWN_TIME;
optional < uint16_t > son_bitcoin_min_tx_confirmations = SON_BITCOIN_MIN_TX_CONFIRMATIONS; optional < uint16_t > son_bitcoin_min_tx_confirmations = SON_BITCOIN_MIN_TX_CONFIRMATIONS;
optional < account_id_type > son_account = GRAPHENE_NULL_ACCOUNT;
optional < account_id_type > son_account; optional < asset_id_type > btc_asset = asset_id_type();
optional < asset_id_type > btc_asset; optional < uint16_t > maximum_son_count = GRAPHENE_DEFAULT_MAX_SONS; ///< maximum number of active SONS
}; };
struct chain_parameters struct chain_parameters
@ -86,7 +86,6 @@ namespace graphene { namespace chain {
uint8_t maximum_asset_feed_publishers = GRAPHENE_DEFAULT_MAX_ASSET_FEED_PUBLISHERS; ///< the maximum number of feed publishers for a given asset uint8_t maximum_asset_feed_publishers = GRAPHENE_DEFAULT_MAX_ASSET_FEED_PUBLISHERS; ///< the maximum number of feed publishers for a given asset
uint16_t maximum_witness_count = GRAPHENE_DEFAULT_MAX_WITNESSES; ///< maximum number of active witnesses uint16_t maximum_witness_count = GRAPHENE_DEFAULT_MAX_WITNESSES; ///< maximum number of active witnesses
uint16_t maximum_committee_count = GRAPHENE_DEFAULT_MAX_COMMITTEE; ///< maximum number of active committee_members uint16_t maximum_committee_count = GRAPHENE_DEFAULT_MAX_COMMITTEE; ///< maximum number of active committee_members
uint16_t maximum_son_count = GRAPHENE_DEFAULT_MAX_SONS; ///< maximum number of active SONS
uint16_t maximum_authority_membership = GRAPHENE_DEFAULT_MAX_AUTHORITY_MEMBERSHIP; ///< largest number of keys/accounts an authority can have uint16_t maximum_authority_membership = GRAPHENE_DEFAULT_MAX_AUTHORITY_MEMBERSHIP; ///< largest number of keys/accounts an authority can have
uint16_t reserve_percent_of_fee = GRAPHENE_DEFAULT_BURN_PERCENT_OF_FEE; ///< the percentage of the network's allocation of a fee that is taken out of circulation uint16_t reserve_percent_of_fee = GRAPHENE_DEFAULT_BURN_PERCENT_OF_FEE; ///< the percentage of the network's allocation of a fee that is taken out of circulation
uint16_t network_percent_of_fee = GRAPHENE_DEFAULT_NETWORK_PERCENT_OF_FEE; ///< percent of transaction fees paid to network uint16_t network_percent_of_fee = GRAPHENE_DEFAULT_NETWORK_PERCENT_OF_FEE; ///< percent of transaction fees paid to network
@ -205,6 +204,9 @@ namespace graphene { namespace chain {
inline asset_id_type btc_asset() const { inline asset_id_type btc_asset() const {
return extensions.value.btc_asset.valid() ? *extensions.value.btc_asset : asset_id_type(); return extensions.value.btc_asset.valid() ? *extensions.value.btc_asset : asset_id_type();
} }
inline uint16_t maximum_son_count()const {
return extensions.value.maximum_son_count.valid() ? *extensions.value.maximum_son_count : GRAPHENE_DEFAULT_MAX_SONS;
}
}; };
} } // graphene::chain } } // graphene::chain
@ -237,6 +239,7 @@ FC_REFLECT( graphene::chain::parameter_extension,
(son_bitcoin_min_tx_confirmations) (son_bitcoin_min_tx_confirmations)
(son_account) (son_account)
(btc_asset) (btc_asset)
(maximum_son_count)
) )
FC_REFLECT( graphene::chain::chain_parameters, FC_REFLECT( graphene::chain::chain_parameters,
@ -253,7 +256,6 @@ FC_REFLECT( graphene::chain::chain_parameters,
(maximum_asset_feed_publishers) (maximum_asset_feed_publishers)
(maximum_witness_count) (maximum_witness_count)
(maximum_committee_count) (maximum_committee_count)
(maximum_son_count)
(maximum_authority_membership) (maximum_authority_membership)
(reserve_percent_of_fee) (reserve_percent_of_fee)
(network_percent_of_fee) (network_percent_of_fee)

View file

@ -57,7 +57,7 @@ typedef generic_far_future_witness_scheduler<
typedef generic_witness_scheduler< typedef generic_witness_scheduler<
/* WitnessID = */ son_id_type, /* WitnessID = */ son_id_type,
/* RNG = */ witness_scheduler_rng, /* RNG = */ witness_scheduler_rng,
/* CountType = */ decltype( chain_parameters::maximum_son_count ), /* CountType = */ decltype( chain_parameters::extensions.value.maximum_son_count )::value_type,
/* OffsetType = */ uint32_t, /* OffsetType = */ uint32_t,
/* debug = */ true /* debug = */ true
> son_scheduler; > son_scheduler;
@ -65,7 +65,7 @@ typedef generic_witness_scheduler<
typedef generic_far_future_witness_scheduler< typedef generic_far_future_witness_scheduler<
/* WitnessID = */ son_id_type, /* WitnessID = */ son_id_type,
/* RNG = */ witness_scheduler_rng, /* RNG = */ witness_scheduler_rng,
/* CountType = */ decltype( chain_parameters::maximum_son_count ), /* CountType = */ decltype( chain_parameters::extensions.value.maximum_son_count )::value_type,
/* OffsetType = */ uint32_t, /* OffsetType = */ uint32_t,
/* debug = */ true /* debug = */ true
> far_future_son_scheduler; > far_future_son_scheduler;

View file

@ -344,7 +344,6 @@
"maximum_asset_feed_publishers": 10, "maximum_asset_feed_publishers": 10,
"maximum_witness_count": 1001, "maximum_witness_count": 1001,
"maximum_committee_count": 1001, "maximum_committee_count": 1001,
"maximum_son_count": 15,
"maximum_authority_membership": 10, "maximum_authority_membership": 10,
"reserve_percent_of_fee": 2000, "reserve_percent_of_fee": 2000,
"network_percent_of_fee": 2000, "network_percent_of_fee": 2000,
@ -392,7 +391,8 @@
"son_pay_time": 86400, "son_pay_time": 86400,
"son_deregister_time": 43200, "son_deregister_time": 43200,
"son_heartbeat_frequency": 180, "son_heartbeat_frequency": 180,
"son_down_time": 360 "son_down_time": 360,
"maximum_son_count": 15
} }
}, },
"initial_bts_accounts": [], "initial_bts_accounts": [],

View file

@ -278,7 +278,7 @@ BOOST_FIXTURE_TEST_CASE( select_top_fifteen_sons, cli_fixture )
global_property_object gpo; global_property_object gpo;
gpo = con.wallet_api_ptr->get_global_properties(); gpo = con.wallet_api_ptr->get_global_properties();
unsigned int son_number = gpo.parameters.maximum_son_count; unsigned int son_number = gpo.parameters.maximum_son_count();
flat_map<sidechain_type, string> sidechain_public_keys; flat_map<sidechain_type, string> sidechain_public_keys;
@ -578,7 +578,7 @@ BOOST_FIXTURE_TEST_CASE( cli_list_active_sons, cli_fixture )
global_property_object gpo; global_property_object gpo;
gpo = con.wallet_api_ptr->get_global_properties(); gpo = con.wallet_api_ptr->get_global_properties();
unsigned int son_number = gpo.parameters.maximum_son_count; unsigned int son_number = gpo.parameters.maximum_son_count();
flat_map<sidechain_type, string> sidechain_public_keys; flat_map<sidechain_type, string> sidechain_public_keys;
@ -645,7 +645,7 @@ BOOST_AUTO_TEST_CASE( maintenance_test )
global_property_object gpo; global_property_object gpo;
gpo = con.wallet_api_ptr->get_global_properties(); gpo = con.wallet_api_ptr->get_global_properties();
unsigned int son_number = gpo.parameters.maximum_son_count; unsigned int son_number = gpo.parameters.maximum_son_count();
flat_map<sidechain_type, string> sidechain_public_keys; flat_map<sidechain_type, string> sidechain_public_keys;