asset_evaluator.cpp: Implement TODO, move feed validation checks from evaluate() to validate()

This commit is contained in:
theoreticalbts 2015-10-15 17:59:46 -04:00
parent 704f943181
commit 0e41933003
2 changed files with 15 additions and 17 deletions

View file

@ -463,24 +463,7 @@ void_result asset_publish_feeds_evaluator::do_evaluate(const asset_publish_feed_
const asset_bitasset_data_object& bitasset = base.bitasset_data(d);
FC_ASSERT( !bitasset.has_settlement(), "No further feeds may be published after a settlement event" );
//
// many of these checks should be moved to price_feed.validate()
// or the operation validator when new network is started
//
if( !o.feed.core_exchange_rate.is_null() )
{
o.feed.core_exchange_rate.validate();
}
if( (!o.feed.settlement_price.is_null()) && (!o.feed.core_exchange_rate.is_null()) )
{
FC_ASSERT( o.feed.settlement_price.base.asset_id == o.feed.core_exchange_rate.base.asset_id );
FC_ASSERT( o.feed.settlement_price.quote.asset_id == o.feed.core_exchange_rate.quote.asset_id );
}
FC_ASSERT( !o.feed.settlement_price.is_null() );
FC_ASSERT( !o.feed.core_exchange_rate.is_null() );
FC_ASSERT( o.feed.settlement_price.quote.asset_id == bitasset.options.short_backing_asset );
FC_ASSERT( o.feed.is_for( o.asset_id ) );
//Verify that the publisher is authoritative to publish a feed
if( base.options.flags & witness_fed_asset )

View file

@ -127,6 +127,21 @@ void asset_publish_feed_operation::validate()const
{
FC_ASSERT( fee.amount >= 0 );
feed.validate();
// maybe some of these could be moved to feed.validate()
if( !feed.core_exchange_rate.is_null() )
{
feed.core_exchange_rate.validate();
}
if( (!feed.settlement_price.is_null()) && (!feed.core_exchange_rate.is_null()) )
{
FC_ASSERT( feed.settlement_price.base.asset_id == feed.core_exchange_rate.base.asset_id );
FC_ASSERT( feed.settlement_price.quote.asset_id == feed.core_exchange_rate.quote.asset_id );
}
FC_ASSERT( !feed.settlement_price.is_null() );
FC_ASSERT( !feed.core_exchange_rate.is_null() );
FC_ASSERT( feed.is_for( asset_id ) );
}
void asset_reserve_operation::validate()const