diff --git a/src/common/variant_helper.h b/src/common/variant_helper.h index 7fcf996b..9f98cbaa 100644 --- a/src/common/variant_helper.h +++ b/src/common/variant_helper.h @@ -14,6 +14,7 @@ #define VARIANT_SWITCH_END() } } +#define VARIANT_OBJ_TYPENAME local_reference_eokcmeokmeokcm.type().name() /* diff --git a/src/currency_core/blockchain_storage.cpp b/src/currency_core/blockchain_storage.cpp index 6179559a..1d9ee976 100644 --- a/src/currency_core/blockchain_storage.cpp +++ b/src/currency_core/blockchain_storage.cpp @@ -1314,8 +1314,8 @@ wide_difficulty_type blockchain_storage::get_next_difficulty_for_alternative_cha //------------------------------------------------------------------ bool blockchain_storage::prevalidate_miner_transaction(const block& b, uint64_t height, bool pos) const { - CHECK_AND_ASSERT_MES((pos ? (b.miner_tx.vin.size() == 2) : (b.miner_tx.vin.size() == 1)), false, "coinbase transaction in the block has no inputs"); - CHECK_AND_ASSERT_MES(b.miner_tx.vin[0].type() == typeid(txin_gen), false, "coinbase transaction in the block has the wrong type"); + CHECK_AND_ASSERT_MES((pos ? (b.miner_tx.vin.size() == 2) : (b.miner_tx.vin.size() == 1)), false, "coinbase transaction in the block has incorrect inputs number: " << b.miner_tx.vin.size()); + CHECK_AND_ASSERT_MES(b.miner_tx.vin[0].type() == typeid(txin_gen), false, "input #0 of the coinbase transaction in the block has the wrong type : " << b.miner_tx.vin[0].type().name()); if(boost::get(b.miner_tx.vin[0]).height != height) { LOG_PRINT_RED_L0("The miner transaction in block has invalid height: " << boost::get(b.miner_tx.vin[0]).height << ", expected: " << height); @@ -1341,8 +1341,6 @@ bool blockchain_storage::prevalidate_miner_transaction(const block& b, uint64_t } else { - //------------------------------------------------------------------ - //bool blockchain_storage:: // pre-hard fork rules that don't allow different unlock time in coinbase outputs uint64_t max_unlock_time = 0; uint64_t min_unlock_time = 0; diff --git a/src/currency_core/currency_format_utils.cpp b/src/currency_core/currency_format_utils.cpp index 5c406e4d..5f4fa38f 100644 --- a/src/currency_core/currency_format_utils.cpp +++ b/src/currency_core/currency_format_utils.cpp @@ -3118,12 +3118,12 @@ namespace currency return true; } //----------------------------------------------------------------------------------------------- - bool check_money_overflow(const transaction& tx) + bool check_bare_money_overflow(const transaction& tx) { - return check_inputs_overflow(tx) && check_outs_overflow(tx); + return check_bare_inputs_overflow(tx) && check_bare_outs_overflow(tx); } //--------------------------------------------------------------- - bool check_inputs_overflow(const transaction& tx) + bool check_bare_inputs_overflow(const transaction& tx) { uint64_t money = 0; for(const auto& in : tx.vin) @@ -3160,7 +3160,7 @@ namespace currency return true; } //--------------------------------------------------------------- - bool check_outs_overflow(const transaction& tx) + bool check_bare_outs_overflow(const transaction& tx) { uint64_t money = 0; for(const auto& o : tx.vout) diff --git a/src/currency_core/currency_format_utils.h b/src/currency_core/currency_format_utils.h index 7b769e6a..312eff34 100644 --- a/src/currency_core/currency_format_utils.h +++ b/src/currency_core/currency_format_utils.h @@ -414,9 +414,9 @@ namespace currency uint64_t get_alias_coast_from_fee(const std::string& alias, uint64_t fee_median); //const crypto::public_key get_offer_secure_key_by_index_from_tx(const transaction& tx, size_t index); - bool check_money_overflow(const transaction& tx); - bool check_outs_overflow(const transaction& tx); - bool check_inputs_overflow(const transaction& tx); + bool check_bare_money_overflow(const transaction& tx); + bool check_bare_outs_overflow(const transaction& tx); + bool check_bare_inputs_overflow(const transaction& tx); uint64_t get_block_height(const transaction& coinbase); uint64_t get_block_height(const block& b); std::vector relative_output_offsets_to_absolute(const std::vector& off); diff --git a/src/currency_core/tx_semantic_validation.cpp b/src/currency_core/tx_semantic_validation.cpp index 26d95916..d358edf2 100644 --- a/src/currency_core/tx_semantic_validation.cpp +++ b/src/currency_core/tx_semantic_validation.cpp @@ -60,7 +60,7 @@ namespace currency return false; } - if (!check_money_overflow(tx)) + if (!check_bare_money_overflow(tx)) { LOG_PRINT_RED_L0("tx has money overflow, rejected for tx id= " << get_transaction_hash(tx)); return false;