From 672309ba5f5cd96908da8498c70bef030808d972 Mon Sep 17 00:00:00 2001 From: sowle Date: Fri, 14 Feb 2025 03:21:24 +0100 Subject: [PATCH] fixed an issue in alt block miner tx validation --- src/currency_core/blockchain_storage.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/currency_core/blockchain_storage.cpp b/src/currency_core/blockchain_storage.cpp index 65c0bb1d..c13f8cbd 100644 --- a/src/currency_core/blockchain_storage.cpp +++ b/src/currency_core/blockchain_storage.cpp @@ -8373,10 +8373,19 @@ bool blockchain_storage::validate_alt_block_txs(const block& b, const crypto::ha CHECK_AND_ASSERT_MES(r, false, "miner tx " << get_transaction_hash(b.miner_tx) << ": validation failed"); ki_lookup_time_total += ki_lookup; - // check stake age - uint64_t coinstake_age = height - max_related_block_height - 1; - CHECK_AND_ASSERT_MES(coinstake_age >= m_core_runtime_config.min_coinstake_age, false, - "miner tx's coinstake age is " << coinstake_age << ", that is less than minimum required " << m_core_runtime_config.min_coinstake_age << "; max_related_block_height == " << max_related_block_height); + + if (is_hardfork_active_for_height(ZANO_HARDFORK_04_ZARCANUM, height)) + { + CHECK_AND_ASSERT_MES(height - max_related_block_height >= CURRENCY_HF4_MANDATORY_MIN_COINAGE, false, "Coinage rule broken (altblock): h = " << + abei.height << ", max_related_block_height=" << max_related_block_height << ", miner tx: " << get_transaction_hash(b.miner_tx)); + } + else + { + // legacy check of stake age (consider removing old hardforks alt block checks -- sowle) + uint64_t coinstake_age = height - max_related_block_height - 1; + CHECK_AND_ASSERT_MES(coinstake_age >= m_core_runtime_config.min_coinstake_age, false, + "miner tx's coinstake age is " << coinstake_age << ", that is less than minimum required " << m_core_runtime_config.min_coinstake_age << "; max_related_block_height == " << max_related_block_height); + } } update_alt_out_indexes_for_tx_in_block(b.miner_tx, abei);