virtual operation_result evaluate( const operation& o ) final override { auto* eval = static_cast<DerivedEvaluator*>(this); const auto& op = o.get<typename DerivedEvaluator::operation_type>(); prepare_fee(op.fee_payer(), op.fee); FC_ASSERT( core_fee_paid >= op.calculate_fee(db().current_fee_schedule()) ); return eval->do_evaluate( op ); }
virtual operation_result evaluate(const operation& o) final override { auto* eval = static_cast<DerivedEvaluator*>(this); 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, "Insufficient Fee Paid", ("core_fee_paid",core_fee_paid)("required",db().current_fee_schedule().calculate_fee( op ).amount) ); return eval->do_evaluate(op); }