diff --git a/src/common/util.cpp b/src/common/util.cpp index f5d4baa9..1fdbe537 100644 --- a/src/common/util.cpp +++ b/src/common/util.cpp @@ -684,12 +684,8 @@ std::string get_nix_version_display_string() // got v_major, v_minor, v_revision - // allow 1.1.x and greater - - if (v_major < 1) - return false; - - if (v_major == 1 && v_minor < 1) + // allow 2.x and greater + if (v_major < 2) return false; return true; diff --git a/src/currency_core/blockchain_storage.cpp b/src/currency_core/blockchain_storage.cpp index d19bb381..c378b5cc 100644 --- a/src/currency_core/blockchain_storage.cpp +++ b/src/currency_core/blockchain_storage.cpp @@ -2093,7 +2093,14 @@ bool blockchain_storage::is_reorganize_required(const block_extended_info& main_ main_chain_bei.this_block_tx_fee_median * main_chain_bei.bl.tx_hashes.size()) { //with the rest equal, alt block has more fees in it, prefer it + LOG_PRINT_L1("[is_reorganize_required]:TRUE, \"by order of tx_hashes.size()\" main_stake_hash:" << &main_chain_bei.stake_hash << ", alt_stake_hash" << proof_alt); return true; + }else if (alt_chain_bei.this_block_tx_fee_median * alt_chain_bei.bl.tx_hashes.size() < + main_chain_bei.this_block_tx_fee_median * main_chain_bei.bl.tx_hashes.size()) + { + //with the rest equal, alt block has more fees in it, prefer it + LOG_PRINT_L1("[is_reorganize_required]:FALSE, \"by order of tx_hashes.size()\" main_stake_hash:" << &main_chain_bei.stake_hash << ", alt_stake_hash" << proof_alt); + return false; } } if (!is_pos_block(main_chain_bei.bl)) diff --git a/src/currency_core/currency_core.cpp b/src/currency_core/currency_core.cpp index 876c2d17..7658f4da 100644 --- a/src/currency_core/currency_core.cpp +++ b/src/currency_core/currency_core.cpp @@ -163,6 +163,8 @@ namespace currency r = m_blockchain_storage.init(m_config_folder, vm); CHECK_AND_ASSERT_MES(r, false, "Failed to initialize blockchain storage"); + m_mempool.remove_incompatible_txs(); + r = m_miner.init(vm); CHECK_AND_ASSERT_MES(r, false, "Failed to initialize miner"); diff --git a/src/currency_core/tx_pool.cpp b/src/currency_core/tx_pool.cpp index 3f133932..1307e31f 100644 --- a/src/currency_core/tx_pool.cpp +++ b/src/currency_core/tx_pool.cpp @@ -1303,6 +1303,27 @@ namespace currency return true; } //--------------------------------------------------------------------------------- + void tx_memory_pool::remove_incompatible_txs() + { + std::vector invalid_tx_ids; + + m_db_transactions.enumerate_items([&](uint64_t i, const crypto::hash& h, const tx_details &tx_entry) + { + if (!m_blockchain.validate_tx_for_hardfork_specific_terms(tx_entry.tx, h)) + invalid_tx_ids.push_back(h); + return true; + }); + + for(const auto& id : invalid_tx_ids) + { + transaction tx{}; + size_t blob_size = 0; + uint64_t fee = 0; + take_tx(id, tx, blob_size, fee); + LOG_PRINT_L0("tx " << id << " was incompatible with the hardfork rules and removed"); + } + } + //--------------------------------------------------------------------------------- bool tx_memory_pool::load_keyimages_cache() { CRITICAL_REGION_LOCAL(m_key_images_lock); diff --git a/src/currency_core/tx_pool.h b/src/currency_core/tx_pool.h index df604f59..b837f28f 100644 --- a/src/currency_core/tx_pool.h +++ b/src/currency_core/tx_pool.h @@ -139,6 +139,8 @@ namespace currency bool remove_stuck_transactions(); // made public to be called from coretests + void remove_incompatible_txs(); // made public to be called after the BCS is loaded and hardfork info is ready + private: bool on_tx_add(crypto::hash tx_id, const transaction& tx, bool kept_by_block); bool on_tx_remove(const crypto::hash &tx_id, const transaction& tx, bool kept_by_block); diff --git a/src/p2p/net_node.inl b/src/p2p/net_node.inl index 22c2e457..46a39ee5 100644 --- a/src/p2p/net_node.inl +++ b/src/p2p/net_node.inl @@ -525,7 +525,7 @@ namespace nodetool if (!tools::check_remote_client_version(rsp.payload_data.client_version)) { - LOG_ERROR_CCONTEXT("COMMAND_HANDSHAKE Failed, wrong client version: " << rsp.payload_data.client_version << ", closing connection."); + LOG_PRINT_CC_YELLOW(context, "COMMAND_HANDSHAKE Failed, wrong client version: " << rsp.payload_data.client_version << ", closing connection.", LOG_LEVEL_1); return; } diff --git a/src/version.h.in b/src/version.h.in index 49405629..6bfc64f8 100644 --- a/src/version.h.in +++ b/src/version.h.in @@ -8,6 +8,6 @@ #define PROJECT_REVISION "0" #define PROJECT_VERSION PROJECT_MAJOR_VERSION "." PROJECT_MINOR_VERSION "." PROJECT_REVISION -#define PROJECT_VERSION_BUILD_NO 279 +#define PROJECT_VERSION_BUILD_NO 282 #define PROJECT_VERSION_BUILD_NO_STR STRINGIFY_EXPAND(PROJECT_VERSION_BUILD_NO) #define PROJECT_VERSION_LONG PROJECT_VERSION "." PROJECT_VERSION_BUILD_NO_STR "[" BUILD_COMMIT_ID "]"