diff --git a/libraries/chain/asset_evaluator.cpp b/libraries/chain/asset_evaluator.cpp index 9a467bec..25daa7cd 100644 --- a/libraries/chain/asset_evaluator.cpp +++ b/libraries/chain/asset_evaluator.cpp @@ -252,9 +252,12 @@ void_result asset_update_evaluator::do_evaluate(const asset_update_operation& o) } } - // new issuer_permissions must be subset of old issuer permissions - FC_ASSERT(!(o.new_options.issuer_permissions & ~a.options.issuer_permissions), - "Cannot reinstate previously revoked issuer permissions on an asset."); + if( (d.head_block_time() < HARDFORK_572_TIME) || (a.dynamic_asset_data_id(d).current_supply != 0) ) + { + // new issuer_permissions must be subset of old issuer permissions + FC_ASSERT(!(o.new_options.issuer_permissions & ~a.options.issuer_permissions), + "Cannot reinstate previously revoked issuer permissions on an asset."); + } // changed flags must be subset of old issuer permissions FC_ASSERT(!((o.new_options.flags ^ a.options.flags) & ~a.options.issuer_permissions), diff --git a/libraries/chain/hardfork.d/572.hf b/libraries/chain/hardfork.d/572.hf new file mode 100644 index 00000000..f054225f --- /dev/null +++ b/libraries/chain/hardfork.d/572.hf @@ -0,0 +1,4 @@ +// #572 Allow asset to update permission flags when no supply exists +#ifndef HARDFORK_572_TIME +#define HARDFORK_572_TIME (fc::time_point_sec( 1450378800 )) +#endif