From 185419613241fb661645970e15a9f9472fb8a63f Mon Sep 17 00:00:00 2001 From: sowle Date: Sun, 6 Aug 2023 14:23:28 +0200 Subject: [PATCH] coretests: gen_alias_too_much_reward adapted for post-HF4 --- tests/core_tests/alias_tests.cpp | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/tests/core_tests/alias_tests.cpp b/tests/core_tests/alias_tests.cpp index 382d5d0d..290d5875 100644 --- a/tests/core_tests/alias_tests.cpp +++ b/tests/core_tests/alias_tests.cpp @@ -966,9 +966,32 @@ bool gen_alias_too_much_reward::generate(std::vector& events) bool r = get_aliases_reward_account(const_cast(reward_acc.get_public_address())); CHECK_AND_ASSERT_MES(r, false, "get_aliases_reward_account failed"); - MAKE_TX_FEE_MIX_ATTR_EXTRA(events, tx_0, miner_acc, reward_acc, premine, TESTS_DEFAULT_FEE, 0, blk_0r, CURRENCY_TO_KEY_OUT_RELAXED, extra, false); - MAKE_NEXT_BLOCK_TX1(events, blk_1, blk_0r, miner_acc, tx_0); - DO_CALLBACK(events, "check_alias"); + std::vector sources; + std::vector destinations; + r = fill_tx_sources_and_destinations(events, blk_0r, miner_acc, reward_acc, premine, TESTS_DEFAULT_FEE, 0, sources, destinations); + CHECK_AND_ASSERT_MES(r, false, "fill_tx_sources_and_destinations failed"); + for(auto& d : destinations) + if (d.addr.back() == null_pub_addr) + d.flags |= tx_destination_entry_flags::tdef_explicit_native_asset_id | tx_destination_entry_flags::tdef_zero_amount_blinding_mask; + transaction tx_0{}; + crypto::secret_key sk{}; + r = construct_tx(miner_acc.get_keys(), sources, destinations, std::vector({ ai }), empty_attachment, tx_0, get_tx_version_from_events(events), sk, 0); + CHECK_AND_ASSERT_MES(r, false, "construct_tx failed"); + + if (tx_0.version <= TRANSACTION_VERSION_PRE_HF4) + { + ADD_CUSTOM_EVENT(events, tx_0); + MAKE_NEXT_BLOCK_TX1(events, blk_1, blk_0r, miner_acc, tx_0); + DO_CALLBACK(events, "check_alias"); + } + else + { + // post HF4: alias reward must be precise + DO_CALLBACK(events, "mark_invalid_tx"); + ADD_CUSTOM_EVENT(events, tx_0); + DO_CALLBACK(events, "mark_invalid_block"); + MAKE_NEXT_BLOCK_TX1(events, blk_1, blk_0r, miner_acc, tx_0); + } return true; }