diff --git a/libraries/chain/db_maint.cpp b/libraries/chain/db_maint.cpp index fc931113..3f68d598 100644 --- a/libraries/chain/db_maint.cpp +++ b/libraries/chain/db_maint.cpp @@ -84,7 +84,7 @@ vector> database::sort_votable_objects< std::vector> refs; for( auto& son : all_sons ) { - if(son.has_valid_config() && son.status != son_status::deregistered) + if(son.has_valid_config(head_block_time()) && son.status != son_status::deregistered) { refs.push_back(std::cref(son)); } @@ -1989,7 +1989,7 @@ void database::perform_son_tasks() }); } // create HIVE asset here because son_account is the issuer of the HIVE - if (gpo.parameters.hive_asset() == asset_id_type() && head_block_time() >= HARDFORK_SON_TIME) + if (gpo.parameters.hive_asset() == asset_id_type() && head_block_time() >= HARDFORK_SON_FOR_HIVE_TIME) { const asset_dynamic_data_object& dyn_asset = create([](asset_dynamic_data_object& a) { diff --git a/libraries/chain/include/graphene/chain/son_object.hpp b/libraries/chain/include/graphene/chain/son_object.hpp index 8c0e32dc..d0b74e79 100644 --- a/libraries/chain/include/graphene/chain/son_object.hpp +++ b/libraries/chain/include/graphene/chain/son_object.hpp @@ -76,6 +76,7 @@ namespace graphene { namespace chain { void pay_son_fee(share_type pay, database& db); bool has_valid_config()const; + bool has_valid_config(time_point_sec head_block_time)const; }; struct by_account; diff --git a/libraries/chain/son_object.cpp b/libraries/chain/son_object.cpp index e782a3e9..c94a6250 100644 --- a/libraries/chain/son_object.cpp +++ b/libraries/chain/son_object.cpp @@ -10,8 +10,18 @@ namespace graphene { namespace chain { return ((std::string(signing_key).length() > 0) && (sidechain_public_keys.size() > 0) && (sidechain_public_keys.find( sidechain_type::bitcoin ) != sidechain_public_keys.end()) && - (sidechain_public_keys.at(sidechain_type::bitcoin).length() > 0) && - (sidechain_public_keys.find( sidechain_type::hive ) != sidechain_public_keys.end()) && - (sidechain_public_keys.at(sidechain_type::hive).length() > 0)); + (sidechain_public_keys.at(sidechain_type::bitcoin).length() > 0)); + } + + bool son_object::has_valid_config(time_point_sec head_block_time)const { + bool retval = has_valid_config(); + + if (head_block_time >= HARDFORK_SON_FOR_HIVE_TIME) { + retval = retval && + (sidechain_public_keys.find( sidechain_type::hive ) != sidechain_public_keys.end()) && + (sidechain_public_keys.at(sidechain_type::hive).length() > 0); + } + + return retval; } }} diff --git a/tests/cli/son.cpp b/tests/cli/son.cpp index fed39e86..1996c267 100644 --- a/tests/cli/son.cpp +++ b/tests/cli/son.cpp @@ -39,7 +39,7 @@ public: fixture_(fixture) { fixture_.init_nathan(); - fixture_.generate_blocks(HARDFORK_SON_TIME); + fixture_.generate_blocks(HARDFORK_SON_FOR_HIVE_TIME); fixture_.generate_block(); }