From b8e4511232474c1fd5bcbf7b67aad449d90eee32 Mon Sep 17 00:00:00 2001 From: sierra19XX <15652887+sierra19XX@users.noreply.github.com> Date: Wed, 23 Jun 2021 00:53:32 +0000 Subject: [PATCH] reserve tokens --- libraries/chain/asset_evaluator.cpp | 5 +++-- libraries/chain/db_getter.cpp | 17 +++++++++++++++++ .../chain/include/graphene/chain/database.hpp | 1 + 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/libraries/chain/asset_evaluator.cpp b/libraries/chain/asset_evaluator.cpp index 1ffcf3bc..0591da54 100644 --- a/libraries/chain/asset_evaluator.cpp +++ b/libraries/chain/asset_evaluator.cpp @@ -42,8 +42,7 @@ void_result asset_create_evaluator::do_evaluate( const asset_create_operation& o database& d = db(); - if (d.head_block_time() < HARDFORK_SON_TIME) - FC_ASSERT(op.symbol != "BTC", "BTC asset creation before SON hardfork"); + FC_ASSERT(d.is_asset_creation_allowed(op.symbol), "Asset creation not allowed at current time"); const auto& chain_parameters = d.get_global_properties().parameters; FC_ASSERT( op.common_options.whitelist_authorities.size() <= chain_parameters.maximum_asset_whitelist_authorities ); @@ -191,6 +190,8 @@ void_result lottery_asset_create_evaluator::do_evaluate( const lottery_asset_cre database& d = db(); + FC_ASSERT(d.is_asset_creation_allowed(op.symbol), "Lottery asset creation not allowed at current time"); + const auto& chain_parameters = d.get_global_properties().parameters; FC_ASSERT( op.common_options.whitelist_authorities.size() <= chain_parameters.maximum_asset_whitelist_authorities ); FC_ASSERT( op.common_options.blacklist_authorities.size() <= chain_parameters.maximum_asset_whitelist_authorities ); diff --git a/libraries/chain/db_getter.cpp b/libraries/chain/db_getter.cpp index cb7e1bc0..ba2fed98 100644 --- a/libraries/chain/db_getter.cpp +++ b/libraries/chain/db_getter.cpp @@ -315,6 +315,23 @@ bool database::is_son_active( son_id_type son_id ) return (it_son != active_son_ids.end()); } +bool database::is_asset_creation_allowed(const string &symbol) +{ + time_point_sec now = head_block_time(); + if (symbol == "BTC") + { + if (now < HARDFORK_SON_TIME) + return false; + } + + if (symbol == "ETH" || symbol == "EOS" || symbol == "BNB" || symbol == "ADA" || symbol == "FIL" || symbol == "DOT") + { + if (now >= HARDFORK_SON_TIME) + return false; + } + return true; +} + vector database::get_random_numbers(uint64_t minimum, uint64_t maximum, uint64_t selections, bool duplicates) { FC_ASSERT( selections <= 100000 ); diff --git a/libraries/chain/include/graphene/chain/database.hpp b/libraries/chain/include/graphene/chain/database.hpp index 9e154347..50975174 100644 --- a/libraries/chain/include/graphene/chain/database.hpp +++ b/libraries/chain/include/graphene/chain/database.hpp @@ -312,6 +312,7 @@ namespace graphene { namespace chain { signed_transaction create_signed_transaction( const fc::ecc::private_key& signing_private_key, const operation& op ); bool is_son_dereg_valid( son_id_type son_id ); bool is_son_active( son_id_type son_id ); + bool is_asset_creation_allowed(const string& symbol); time_point_sec head_block_time()const; uint32_t head_block_num()const;