From b0afddaa6b3336bcf393c672073b6f035d736300 Mon Sep 17 00:00:00 2001 From: Peter Conrad Date: Wed, 5 Sep 2018 16:43:35 +0200 Subject: [PATCH] Move new chain parameters into extensions --- libraries/chain/betting_market_evaluator.cpp | 18 +++---- .../chain/committee_member_evaluator.cpp | 19 ++++++- libraries/chain/db_bet.cpp | 2 +- libraries/chain/db_maint.cpp | 10 ++++ .../chain/committee_member_evaluator.hpp | 2 + .../chain/protocol/chain_parameters.hpp | 53 ++++++++++++------- libraries/chain/proposal_evaluator.cpp | 32 +++++++++++ libraries/chain/protocol/fee_schedule.cpp | 24 +++++---- libraries/plugins/bookie/bookie_api.cpp | 4 +- tests/betting/betting_tests.cpp | 20 +++---- 10 files changed, 133 insertions(+), 51 deletions(-) diff --git a/libraries/chain/betting_market_evaluator.cpp b/libraries/chain/betting_market_evaluator.cpp index 7918ac32..71a13c9f 100644 --- a/libraries/chain/betting_market_evaluator.cpp +++ b/libraries/chain/betting_market_evaluator.cpp @@ -292,15 +292,15 @@ void_result bet_place_evaluator::do_evaluate(const bet_place_operation& op) _current_params = &d.get_global_properties().parameters; // are their odds valid - FC_ASSERT( op.backer_multiplier >= _current_params->min_bet_multiplier && - op.backer_multiplier <= _current_params->max_bet_multiplier, + FC_ASSERT( op.backer_multiplier >= _current_params->min_bet_multiplier() && + op.backer_multiplier <= _current_params->max_bet_multiplier(), "Bet odds are outside the blockchain's limits" ); - if (!_current_params->permitted_betting_odds_increments.empty()) + if (!_current_params->permitted_betting_odds_increments().empty()) { bet_multiplier_type allowed_increment; - const auto iter = _current_params->permitted_betting_odds_increments.upper_bound(op.backer_multiplier); - if (iter == _current_params->permitted_betting_odds_increments.end()) - allowed_increment = std::prev(_current_params->permitted_betting_odds_increments.end())->second; + const auto iter = _current_params->permitted_betting_odds_increments().upper_bound(op.backer_multiplier); + if (iter == _current_params->permitted_betting_odds_increments().end()) + allowed_increment = std::prev(_current_params->permitted_betting_odds_increments().end())->second; else allowed_increment = iter->second; FC_ASSERT(op.backer_multiplier % allowed_increment == 0, "Bet odds must be a multiple of ${allowed_increment}", ("allowed_increment", allowed_increment)); @@ -324,15 +324,15 @@ object_id_type bet_place_evaluator::do_apply(const bet_place_operation& op) if (_betting_market_group->bets_are_delayed()) { // the bet will be included in the block at time `head_block_time() + block_interval`, so make the delay relative // to the time it's included in a block - bet_obj.end_of_delay = d.head_block_time() + _current_params->block_interval + _current_params->live_betting_delay_time; + bet_obj.end_of_delay = d.head_block_time() + _current_params->block_interval + _current_params->live_betting_delay_time(); } }); bet_id_type new_bet_id = new_bet.id; // save the bet id here, new_bet may be deleted during place_bet() // place the bet, this may return guaranteed winnings - ddump((_betting_market_group->bets_are_delayed())(_current_params->live_betting_delay_time)); - if (!_betting_market_group->bets_are_delayed() || _current_params->live_betting_delay_time <= 0) + ddump((_betting_market_group->bets_are_delayed())(_current_params->live_betting_delay_time())); + if (!_betting_market_group->bets_are_delayed() || _current_params->live_betting_delay_time() <= 0) d.place_bet(new_bet); // now that their guaranteed winnings have been returned, check whether they have enough in their account to place the bet diff --git a/libraries/chain/committee_member_evaluator.cpp b/libraries/chain/committee_member_evaluator.cpp index 4e7eb827..d3756698 100644 --- a/libraries/chain/committee_member_evaluator.cpp +++ b/libraries/chain/committee_member_evaluator.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -77,12 +78,28 @@ void_result committee_member_update_global_parameters_evaluator::do_evaluate(con { try { FC_ASSERT(trx_state->_is_proposed_trx); + if( db().head_block_time() < HARDFORK_1000_TIME ) // TODO: remove after hf + FC_ASSERT( !o.new_parameters.extensions.value.min_bet_multiplier.valid() + && !o.new_parameters.extensions.value.max_bet_multiplier.valid() + && !o.new_parameters.extensions.value.betting_rake_fee_percentage.valid() + && !o.new_parameters.extensions.value.permitted_betting_odds_increments.valid() + && !o.new_parameters.extensions.value.live_betting_delay_time.valid(), + "Parameter extensions are not allowed yet!" ); + + dgpo = &db().get_global_properties(); + if( o.new_parameters.extensions.value.min_bet_multiplier.valid() + && !o.new_parameters.extensions.value.max_bet_multiplier.valid() ) + FC_ASSERT( *o.new_parameters.extensions.value.min_bet_multiplier < dgpo->parameters.max_bet_multiplier() ); + if( !o.new_parameters.extensions.value.min_bet_multiplier.valid() + && o.new_parameters.extensions.value.max_bet_multiplier.valid() ) + FC_ASSERT( dgpo->parameters.min_bet_multiplier() < *o.new_parameters.extensions.value.max_bet_multiplier ); + return void_result(); } FC_CAPTURE_AND_RETHROW( (o) ) } void_result committee_member_update_global_parameters_evaluator::do_apply(const committee_member_update_global_parameters_operation& o) { try { - db().modify(db().get_global_properties(), [&o](global_property_object& p) { + db().modify(*dgpo, [&o](global_property_object& p) { p.pending_parameters = o.new_parameters; }); diff --git a/libraries/chain/db_bet.cpp b/libraries/chain/db_bet.cpp index e0bd5a2f..72fe953f 100644 --- a/libraries/chain/db_bet.cpp +++ b/libraries/chain/db_bet.cpp @@ -179,7 +179,7 @@ void database::settle_betting_market_group(const betting_market_group_object& be // walking through bettors' positions and collecting winings and fees respecting asset_id for (const auto& bettor_positions_pair: bettor_positions_map) { - uint16_t rake_fee_percentage = get_global_properties().parameters.betting_rake_fee_percentage; + uint16_t rake_fee_percentage = get_global_properties().parameters.betting_rake_fee_percentage(); share_type net_profits; share_type payout_amounts; account_id_type bettor_id = bettor_positions_pair.first; diff --git a/libraries/chain/db_maint.cpp b/libraries/chain/db_maint.cpp index 04ea3c59..b768460a 100644 --- a/libraries/chain/db_maint.cpp +++ b/libraries/chain/db_maint.cpp @@ -1371,6 +1371,16 @@ void database::perform_chain_maintenance(const signed_block& next_block, const g if( p.pending_parameters ) { + if( !p.pending_parameters->extensions.value.min_bet_multiplier.valid() ) + p.pending_parameters->extensions.value.min_bet_multiplier = p.parameters.extensions.value.min_bet_multiplier; + if( !p.pending_parameters->extensions.value.max_bet_multiplier.valid() ) + p.pending_parameters->extensions.value.max_bet_multiplier = p.parameters.extensions.value.max_bet_multiplier; + if( !p.pending_parameters->extensions.value.betting_rake_fee_percentage.valid() ) + p.pending_parameters->extensions.value.betting_rake_fee_percentage = p.parameters.extensions.value.betting_rake_fee_percentage; + if( !p.pending_parameters->extensions.value.permitted_betting_odds_increments.valid() ) + p.pending_parameters->extensions.value.permitted_betting_odds_increments = p.parameters.extensions.value.permitted_betting_odds_increments; + if( !p.pending_parameters->extensions.value.live_betting_delay_time.valid() ) + p.pending_parameters->extensions.value.live_betting_delay_time = p.parameters.extensions.value.live_betting_delay_time; p.parameters = std::move(*p.pending_parameters); p.pending_parameters.reset(); } diff --git a/libraries/chain/include/graphene/chain/committee_member_evaluator.hpp b/libraries/chain/include/graphene/chain/committee_member_evaluator.hpp index d6ad7b69..ec55b1d7 100644 --- a/libraries/chain/include/graphene/chain/committee_member_evaluator.hpp +++ b/libraries/chain/include/graphene/chain/committee_member_evaluator.hpp @@ -50,6 +50,8 @@ namespace graphene { namespace chain { public: typedef committee_member_update_global_parameters_operation operation_type; + const global_property_object* dgpo; + void_result do_evaluate( const committee_member_update_global_parameters_operation& o ); void_result do_apply( const committee_member_update_global_parameters_operation& o ); }; diff --git a/libraries/chain/include/graphene/chain/protocol/chain_parameters.hpp b/libraries/chain/include/graphene/chain/protocol/chain_parameters.hpp index a0445a3f..b2551e44 100644 --- a/libraries/chain/include/graphene/chain/protocol/chain_parameters.hpp +++ b/libraries/chain/include/graphene/chain/protocol/chain_parameters.hpp @@ -23,20 +23,22 @@ */ #pragma once #include +#include #include #include namespace graphene { namespace chain { struct fee_schedule; } } -/* -namespace fc { - template inline void pack( Stream& s, const graphene::chain::fee_schedule& value ); - template inline void unpack( Stream& s, graphene::chain::fee_schedule& value ); -} // namespace fc -*/ namespace graphene { namespace chain { + struct parameter_extension + { + optional< bet_multiplier_type > min_bet_multiplier; + optional< bet_multiplier_type > max_bet_multiplier; + optional< uint16_t > betting_rake_fee_percentage; + optional< flat_map > permitted_betting_odds_increments; + optional< uint16_t > live_betting_delay_time; + }; - typedef static_variant<> parameter_extension; struct chain_parameters { /** using a smart ref breaks the circular dependency created between operations and the fee schedule */ @@ -69,12 +71,6 @@ namespace graphene { namespace chain { uint16_t accounts_per_fee_scale = GRAPHENE_DEFAULT_ACCOUNTS_PER_FEE_SCALE; ///< number of accounts between fee scalings uint8_t account_fee_scale_bitshifts = GRAPHENE_DEFAULT_ACCOUNT_FEE_SCALE_BITSHIFTS; ///< number of times to left bitshift account registration fee at each scaling uint8_t max_authority_depth = GRAPHENE_MAX_SIG_CHECK_DEPTH; - uint16_t betting_rake_fee_percentage = GRAPHENE_DEFAULT_RAKE_FEE_PERCENTAGE; ///< part of prize paid into the dividend account for the core token holders - bet_multiplier_type min_bet_multiplier = GRAPHENE_DEFAULT_MIN_BET_MULTIPLIER; - bet_multiplier_type max_bet_multiplier = GRAPHENE_DEFAULT_MAX_BET_MULTIPLIER; - flat_map permitted_betting_odds_increments = GRAPHENE_DEFAULT_PERMITTED_BETTING_ODDS_INCREMENTS; - uint16_t live_betting_delay_time = GRAPHENE_DEFAULT_LIVE_BETTING_DELAY_TIME; ///< delayed bets - //uint8_t witness_schedule_algorithm = GRAPHENE_WITNESS_SHUFFLED_ALGORITHM; ///< 0 shuffled, 1 scheduled uint8_t witness_schedule_algorithm = GRAPHENE_WITNESS_SCHEDULED_ALGORITHM; ///< 0 shuffled, 1 scheduled /* rps tournament parameters constraints */ uint32_t min_round_delay = TOURNAMENT_MIN_ROUND_DELAY; ///< miniaml delay between games @@ -90,14 +86,38 @@ namespace graphene { namespace chain { uint32_t maximum_tournament_start_time_in_future = TOURNAMENT_MAX_START_TIME_IN_FUTURE; uint32_t maximum_tournament_start_delay = TOURNAMENT_MAX_START_DELAY; uint16_t maximum_tournament_number_of_wins = TOURNAMENT_MAX_NUMBER_OF_WINS; - extensions_type extensions; + extension extensions; /** defined in fee_schedule.cpp */ void validate()const; + inline bet_multiplier_type min_bet_multiplier()const { + return extensions.value.min_bet_multiplier.valid() ? *extensions.value.min_bet_multiplier : GRAPHENE_DEFAULT_MIN_BET_MULTIPLIER; + } + inline bet_multiplier_type max_bet_multiplier()const { + return extensions.value.max_bet_multiplier.valid() ? *extensions.value.max_bet_multiplier : GRAPHENE_DEFAULT_MAX_BET_MULTIPLIER; + } + inline uint16_t betting_rake_fee_percentage()const { + return extensions.value.betting_rake_fee_percentage.valid() ? *extensions.value.betting_rake_fee_percentage : GRAPHENE_DEFAULT_RAKE_FEE_PERCENTAGE; + } + inline const flat_map& permitted_betting_odds_increments()const { + static const flat_map _default = GRAPHENE_DEFAULT_PERMITTED_BETTING_ODDS_INCREMENTS; + return extensions.value.permitted_betting_odds_increments.valid() ? *extensions.value.permitted_betting_odds_increments : _default; + } + inline uint16_t live_betting_delay_time()const { + return extensions.value.live_betting_delay_time.valid() ? *extensions.value.live_betting_delay_time : GRAPHENE_DEFAULT_LIVE_BETTING_DELAY_TIME; + } }; } } // graphene::chain +FC_REFLECT( graphene::chain::parameter_extension, + (min_bet_multiplier) + (max_bet_multiplier) + (betting_rake_fee_percentage) + (permitted_betting_odds_increments) + (live_betting_delay_time) +) + FC_REFLECT( graphene::chain::chain_parameters, (current_fees) (block_interval) @@ -127,12 +147,7 @@ FC_REFLECT( graphene::chain::chain_parameters, (accounts_per_fee_scale) (account_fee_scale_bitshifts) (max_authority_depth) - (min_bet_multiplier) - (max_bet_multiplier) - (betting_rake_fee_percentage) - (permitted_betting_odds_increments) (witness_schedule_algorithm) - (live_betting_delay_time) (min_round_delay) (max_round_delay) (min_time_per_commit_move) diff --git a/libraries/chain/proposal_evaluator.cpp b/libraries/chain/proposal_evaluator.cpp index 2b543954..5ad2b7a6 100644 --- a/libraries/chain/proposal_evaluator.cpp +++ b/libraries/chain/proposal_evaluator.cpp @@ -21,6 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ +#include #include #include #include @@ -31,9 +32,40 @@ namespace graphene { namespace chain { +struct proposal_operation_hardfork_visitor +{ + typedef void result_type; + const fc::time_point_sec block_time; + + proposal_operation_hardfork_visitor( const fc::time_point_sec bt ) : block_time(bt) {} + + template + void operator()(const T &v) const {} + + void operator()(const graphene::chain::committee_member_update_global_parameters_operation &op) const { + if( block_time < HARDFORK_1000_TIME ) // TODO: remove after hf + FC_ASSERT( !op.new_parameters.extensions.value.min_bet_multiplier.valid() + && !op.new_parameters.extensions.value.max_bet_multiplier.valid() + && !op.new_parameters.extensions.value.betting_rake_fee_percentage.valid() + && !op.new_parameters.extensions.value.permitted_betting_odds_increments.valid() + && !op.new_parameters.extensions.value.live_betting_delay_time.valid(), + "Parameter extensions are not allowed yet!" ); + } + + // loop and self visit in proposals + void operator()(const proposal_create_operation &v) const { + for (const op_wrapper &op : v.proposed_ops) + op.op.visit(*this); + } +}; + void_result proposal_create_evaluator::do_evaluate(const proposal_create_operation& o) { try { const database& d = db(); + + proposal_operation_hardfork_visitor vtor( d.head_block_time() ); + vtor( o ); + const auto& global_parameters = d.get_global_properties().parameters; FC_ASSERT( o.expiration_time > d.head_block_time(), "Proposal has already expired on creation." ); diff --git a/libraries/chain/protocol/fee_schedule.cpp b/libraries/chain/protocol/fee_schedule.cpp index 136371ba..5c8f8795 100644 --- a/libraries/chain/protocol/fee_schedule.cpp +++ b/libraries/chain/protocol/fee_schedule.cpp @@ -189,16 +189,22 @@ namespace graphene { namespace chain { FC_ASSERT( maximum_proposal_lifetime - committee_proposal_review_period > block_interval, "Committee proposal review period must be less than the maximum proposal lifetime" ); - FC_ASSERT( min_bet_multiplier >= GRAPHENE_BETTING_MIN_MULTIPLIER && - min_bet_multiplier <= GRAPHENE_BETTING_MAX_MULTIPLIER ); - FC_ASSERT( max_bet_multiplier >= GRAPHENE_BETTING_MIN_MULTIPLIER && - max_bet_multiplier <= GRAPHENE_BETTING_MAX_MULTIPLIER ); - FC_ASSERT( min_bet_multiplier < max_bet_multiplier ); - FC_ASSERT( rake_fee_percentage >= TOURNAMENT_MINIMAL_RAKE_FEE_PERCENTAGE, - "Rake fee percentage must not be less than ${min}", ("min",TOURNAMENT_MINIMAL_RAKE_FEE_PERCENTAGE)); - FC_ASSERT( rake_fee_percentage <= TOURNAMENT_MAXIMAL_RAKE_FEE_PERCENTAGE, - "Rake fee percentage must not be greater than ${max}", ("max", TOURNAMENT_MAXIMAL_RAKE_FEE_PERCENTAGE)); + if( extensions.value.min_bet_multiplier.valid() ) + FC_ASSERT( *extensions.value.min_bet_multiplier >= GRAPHENE_BETTING_MIN_MULTIPLIER && + *extensions.value.min_bet_multiplier <= GRAPHENE_BETTING_MAX_MULTIPLIER ); + if( extensions.value.max_bet_multiplier.valid() ) + FC_ASSERT( *extensions.value.max_bet_multiplier >= GRAPHENE_BETTING_MIN_MULTIPLIER && + *extensions.value.max_bet_multiplier <= GRAPHENE_BETTING_MAX_MULTIPLIER ); + if( extensions.value.min_bet_multiplier.valid() && extensions.value.max_bet_multiplier.valid() ) + FC_ASSERT( *extensions.value.min_bet_multiplier < *extensions.value.max_bet_multiplier ); + if( extensions.value.betting_rake_fee_percentage.valid() ) + { + FC_ASSERT( *extensions.value.betting_rake_fee_percentage >= TOURNAMENT_MINIMAL_RAKE_FEE_PERCENTAGE, + "Rake fee percentage must not be less than ${min}", ("min",TOURNAMENT_MINIMAL_RAKE_FEE_PERCENTAGE)); + FC_ASSERT( *extensions.value.betting_rake_fee_percentage <= TOURNAMENT_MAXIMAL_RAKE_FEE_PERCENTAGE, + "Rake fee percentage must not be greater than ${max}", ("max", TOURNAMENT_MAXIMAL_RAKE_FEE_PERCENTAGE)); + } } } } // graphene::chain diff --git a/libraries/plugins/bookie/bookie_api.cpp b/libraries/plugins/bookie/bookie_api.cpp index 798fe474..aacbb277 100644 --- a/libraries/plugins/bookie/bookie_api.cpp +++ b/libraries/plugins/bookie/bookie_api.cpp @@ -102,13 +102,13 @@ binned_order_book bookie_api_impl::get_binned_order_book(graphene::chain::bettin if (bet_odds_iter->back_or_lay == bet_type::back) { current_bin->backer_multiplier = (bet_odds_iter->backer_multiplier + bin_size - 1) / bin_size * bin_size; - current_bin->backer_multiplier = std::min(current_bin->backer_multiplier, current_params.max_bet_multiplier); + current_bin->backer_multiplier = std::min(current_bin->backer_multiplier, current_params.max_bet_multiplier()); current_bin->back_or_lay = bet_type::back; } else { current_bin->backer_multiplier = bet_odds_iter->backer_multiplier / bin_size * bin_size; - current_bin->backer_multiplier = std::max(current_bin->backer_multiplier, current_params.min_bet_multiplier); + current_bin->backer_multiplier = std::max(current_bin->backer_multiplier, current_params.min_bet_multiplier()); current_bin->back_or_lay = bet_type::lay; } diff --git a/tests/betting/betting_tests.cpp b/tests/betting/betting_tests.cpp index 60c3804f..6a3459e2 100644 --- a/tests/betting/betting_tests.cpp +++ b/tests/betting/betting_tests.cpp @@ -454,7 +454,7 @@ BOOST_AUTO_TEST_CASE( peerplays_sport_create_test ) generate_blocks(1); - uint16_t rake_fee_percentage = db.get_global_properties().parameters.betting_rake_fee_percentage; + uint16_t rake_fee_percentage = db.get_global_properties().parameters.betting_rake_fee_percentage(); uint32_t rake_value = (-1000000 + 2000000) * rake_fee_percentage / GRAPHENE_1_PERCENT / 100; BOOST_TEST_MESSAGE("Rake value " + std::to_string(rake_value)); BOOST_CHECK_EQUAL(get_balance(alice_id, asset_id_type()), 10000000 - 1000000 + 2000000 - rake_value); @@ -1430,7 +1430,7 @@ BOOST_AUTO_TEST_CASE( win ) GET_ACTOR(alice); GET_ACTOR(bob); - uint16_t rake_fee_percentage = db.get_global_properties().parameters.betting_rake_fee_percentage; + uint16_t rake_fee_percentage = db.get_global_properties().parameters.betting_rake_fee_percentage(); uint32_t rake_value; //rake_value = (-100 + 1100 - 1100) * rake_fee_percentage / GRAPHENE_1_PERCENT / 100; // alice starts with 10000, pays 100 (bet), wins 1100, then pays 1100 (bet), wins 0 @@ -1456,7 +1456,7 @@ BOOST_AUTO_TEST_CASE( not_win ) GET_ACTOR(alice); GET_ACTOR(bob); - uint16_t rake_fee_percentage = db.get_global_properties().parameters.betting_rake_fee_percentage; + uint16_t rake_fee_percentage = db.get_global_properties().parameters.betting_rake_fee_percentage(); uint32_t rake_value = (-100 - 1100 + 2200) * rake_fee_percentage / GRAPHENE_1_PERCENT / 100; // alice starts with 10000, pays 100 (bet), wins 0, then pays 1100 (bet), wins 2200 BOOST_TEST_MESSAGE("Rake value " + std::to_string(rake_value)); @@ -1573,7 +1573,7 @@ BOOST_AUTO_TEST_CASE(event_group_update_test) generate_blocks(1); - uint16_t rake_fee_percentage = db.get_global_properties().parameters.betting_rake_fee_percentage; + uint16_t rake_fee_percentage = db.get_global_properties().parameters.betting_rake_fee_percentage(); uint32_t rake_value = (-1000000 + 2000000) * rake_fee_percentage / GRAPHENE_1_PERCENT / 100; BOOST_TEST_MESSAGE("Rake value " + std::to_string(rake_value)); BOOST_CHECK_EQUAL(get_balance(alice_id, asset_id_type()), 10000000 - 1000000 + 2000000 - rake_value); @@ -1621,7 +1621,7 @@ BOOST_AUTO_TEST_CASE(event_update_test) generate_blocks(1); - uint16_t rake_fee_percentage = db.get_global_properties().parameters.betting_rake_fee_percentage; + uint16_t rake_fee_percentage = db.get_global_properties().parameters.betting_rake_fee_percentage(); uint32_t rake_value = (-1000000 + 2000000) * rake_fee_percentage / GRAPHENE_1_PERCENT / 100; BOOST_TEST_MESSAGE("Rake value " + std::to_string(rake_value)); BOOST_CHECK_EQUAL(get_balance(alice_id, asset_id_type()), 10000000 - 1000000 + 2000000 - rake_value); @@ -1685,7 +1685,7 @@ BOOST_AUTO_TEST_CASE(betting_market_group_update_test) generate_blocks(1); - uint16_t rake_fee_percentage = db.get_global_properties().parameters.betting_rake_fee_percentage; + uint16_t rake_fee_percentage = db.get_global_properties().parameters.betting_rake_fee_percentage(); uint32_t rake_value = (-1000000 + 2000000) * rake_fee_percentage / GRAPHENE_1_PERCENT / 100; BOOST_TEST_MESSAGE("Rake value " + std::to_string(rake_value)); BOOST_CHECK_EQUAL(get_balance(alice_id, asset_id_type()), 10000000 - 1000000 + 2000000 - rake_value); @@ -1722,7 +1722,7 @@ BOOST_AUTO_TEST_CASE(betting_market_update_test) {blackhawks_win_market.id, betting_market_resolution_type::not_win}}); generate_blocks(1); - uint16_t rake_fee_percentage = db.get_global_properties().parameters.betting_rake_fee_percentage; + uint16_t rake_fee_percentage = db.get_global_properties().parameters.betting_rake_fee_percentage(); uint32_t rake_value = (-1000000 + 2000000) * rake_fee_percentage / GRAPHENE_1_PERCENT / 100; BOOST_TEST_MESSAGE("Rake value " + std::to_string(rake_value)); BOOST_CHECK_EQUAL(get_balance(alice_id, asset_id_type()), 10000000 - 1000000 + 2000000 - rake_value); @@ -2504,7 +2504,7 @@ BOOST_FIXTURE_TEST_CASE( another_event_group_update_test, database_fixture) {blackhawks_win_market.id, betting_market_resolution_type::not_win}}); generate_blocks(1); - uint16_t rake_fee_percentage = db.get_global_properties().parameters.betting_rake_fee_percentage; + uint16_t rake_fee_percentage = db.get_global_properties().parameters.betting_rake_fee_percentage(); uint32_t rake_value = (-1000000 + 2000000) * rake_fee_percentage / GRAPHENE_1_PERCENT / 100; BOOST_TEST_MESSAGE("Rake value " + std::to_string(rake_value)); BOOST_CHECK_EQUAL(get_balance(alice_id, asset_id_type()), 10000000 - 1000000 + 2000000 - rake_value); @@ -2524,7 +2524,7 @@ BOOST_AUTO_TEST_CASE( wimbledon_2017_gentelmen_singles_sf_test ) CREATE_TENNIS_BETTING_MARKET(); generate_blocks(1); - uint16_t rake_fee_percentage = db.get_global_properties().parameters.betting_rake_fee_percentage; + uint16_t rake_fee_percentage = db.get_global_properties().parameters.betting_rake_fee_percentage(); transfer(account_id_type(), alice_id, asset(10000000)); transfer(account_id_type(), bob_id, asset(10000000)); @@ -2585,7 +2585,7 @@ BOOST_AUTO_TEST_CASE( wimbledon_2017_gentelmen_singles_final_test ) ACTORS( (alice)(bob) ); CREATE_TENNIS_BETTING_MARKET(); - uint16_t rake_fee_percentage = db.get_global_properties().parameters.betting_rake_fee_percentage; + uint16_t rake_fee_percentage = db.get_global_properties().parameters.betting_rake_fee_percentage(); transfer(account_id_type(), alice_id, asset(10000000)); transfer(account_id_type(), bob_id, asset(10000000));