fix zero all fees #144

This commit is contained in:
Daniel Larimer 2015-07-09 10:15:53 -04:00
parent c8f0ea4abe
commit c8f200868c
2 changed files with 7 additions and 3 deletions

View file

@ -193,7 +193,9 @@ namespace graphene { namespace chain {
const auto& op = o.get<typename DerivedEvaluator::operation_type>(); const auto& op = o.get<typename DerivedEvaluator::operation_type>();
prepare_fee(op.fee_payer(), op.fee); prepare_fee(op.fee_payer(), op.fee);
FC_ASSERT( core_fee_paid >= db().current_fee_schedule().calculate_fee( op ).amount ); FC_ASSERT( core_fee_paid >= db().current_fee_schedule().calculate_fee( op ).amount,
"Insufficient Fee Paid",
("core_fee_paid",core_fee_paid)("required",db().current_fee_schedule().calculate_fee( op ).amount) );
return eval->do_evaluate(op); return eval->do_evaluate(op);
} }

View file

@ -72,22 +72,24 @@ namespace graphene { namespace chain {
template<typename ParamType> template<typename ParamType>
result_type operator()( ParamType& op )const result_type operator()( ParamType& op )const
{ {
memset( (char*)&op, sizeof(op), 0 ); memset( (char*)&op, 0, sizeof(op) );
} }
}; };
void fee_schedule::zero_all_fees() void fee_schedule::zero_all_fees()
{ {
*this = get_default(); *this = get_default();
for( auto& i : parameters ) for( fee_parameters& i : parameters )
i.visit( zero_fee_visitor() ); i.visit( zero_fee_visitor() );
} }
asset fee_schedule::calculate_fee( const operation& op, const price& core_exchange_rate )const asset fee_schedule::calculate_fee( const operation& op, const price& core_exchange_rate )const
{ {
//idump( (op)(core_exchange_rate) );
fee_parameters params; params.set_which(op.which()); fee_parameters params; params.set_which(op.which());
auto itr = parameters.find(params); auto itr = parameters.find(params);
if( itr != parameters.end() ) params = *itr; if( itr != parameters.end() ) params = *itr;
//idump( (params) );
auto base_value = op.visit( calc_fee_visitor( params ) ); auto base_value = op.visit( calc_fee_visitor( params ) );
auto scaled = fc::uint128(base_value) * scale; auto scaled = fc::uint128(base_value) * scale;
scaled /= GRAPHENE_100_PERCENT; scaled /= GRAPHENE_100_PERCENT;