diff --git a/libraries/chain/include/graphene/chain/protocol/fee_schedule.hpp b/libraries/chain/include/graphene/chain/protocol/fee_schedule.hpp index e250ab17..f8d16b74 100644 --- a/libraries/chain/include/graphene/chain/protocol/fee_schedule.hpp +++ b/libraries/chain/include/graphene/chain/protocol/fee_schedule.hpp @@ -71,6 +71,12 @@ namespace graphene { namespace chain { FC_ASSERT( itr != parameters.end() ); return itr->template get(); } + template + const bool exists()const + { + auto itr = parameters.find(typename Operation::fee_parameters_type()); + return itr != parameters.end(); + } /** * @note must be sorted by fee_parameters.which() and have no duplicates diff --git a/libraries/chain/proposal_evaluator.cpp b/libraries/chain/proposal_evaluator.cpp index cd7bbc82..9d55eaf6 100644 --- a/libraries/chain/proposal_evaluator.cpp +++ b/libraries/chain/proposal_evaluator.cpp @@ -46,13 +46,34 @@ struct proposal_operation_hardfork_visitor void operator()(const T &v) const {} void operator()(const committee_member_update_global_parameters_operation &op) const { - if( block_time < HARDFORK_1000_TIME ) // TODO: remove after hf + 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!" ); + && !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!" ); + FC_ASSERT( !op.new_parameters.current_fees->exists() + && !op.new_parameters.current_fees->exists() + && !op.new_parameters.current_fees->exists() + && !op.new_parameters.current_fees->exists() + && !op.new_parameters.current_fees->exists() + && !op.new_parameters.current_fees->exists() + && !op.new_parameters.current_fees->exists() + && !op.new_parameters.current_fees->exists() + && !op.new_parameters.current_fees->exists() + && !op.new_parameters.current_fees->exists() + && !op.new_parameters.current_fees->exists() + && !op.new_parameters.current_fees->exists() + && !op.new_parameters.current_fees->exists() + && !op.new_parameters.current_fees->exists() + && !op.new_parameters.current_fees->exists() + && !op.new_parameters.current_fees->exists() + && !op.new_parameters.current_fees->exists() + && !op.new_parameters.current_fees->exists() + && !op.new_parameters.current_fees->exists(), + "Bookie-specific operations not available before HARDFORK_1000_TIME" ); + } } void operator()(const graphene::chain::tournament_payout_operation &o) const {