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

View file

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