mirror of
https://github.com/oxen-io/oxen-core.git
synced 2023-12-14 02:22:56 +01:00
Add workaround for non-existent miner fee in HF16
HF16 removes the miner fee. This breaks a lot of assumptions in the testing code which blanket mines are bunch of blocks to fund the miner wallet which we use throughout the test. Instead, on tests that require use of hardforks later than HF16, the generated hard-fork table allocates at least 60 blocks prior to the block reward changes in HF15 and 16. The 60 blocks was chosen as it's the largest number of blocks that tests use to accumulate funds for the miner meaning all tests should continue working with this change. We could also opt for generating a Service Node for the default miner so that they get funds, but this brough up additional testing suite errors. In the interest of time, this is the least intrusive but working way to get tests running for the upcoming hard fork.
This commit is contained in:
parent
a493386664
commit
77e1b0e135
2 changed files with 16 additions and 34 deletions
|
@ -70,7 +70,17 @@ loki_generate_sequential_hard_fork_table(uint8_t max_hf_version)
|
|||
std::vector<std::pair<uint8_t, uint64_t>> result = {};
|
||||
uint64_t version_height = 0;
|
||||
for (uint8_t version = cryptonote::network_version_7; version <= max_hf_version; version++)
|
||||
result.emplace_back(std::make_pair(version, version_height++));
|
||||
{
|
||||
if (version == cryptonote::network_version_15_lns)
|
||||
{
|
||||
version_height += 60;
|
||||
result.emplace_back(std::make_pair(version, version_height++));
|
||||
}
|
||||
else
|
||||
{
|
||||
result.emplace_back(std::make_pair(version, version_height++));
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -1539,7 +1549,9 @@ void fill_tx_sources_and_multi_destinations(const std::vector<test_event_entry>&
|
|||
total_amount += amount[i];
|
||||
|
||||
if (!fill_tx_sources(sources, events, blk_head, from, total_amount, nmix))
|
||||
{
|
||||
throw std::runtime_error("couldn't fill transaction sources");
|
||||
}
|
||||
|
||||
for (int i = 0; i < num_amounts; ++i)
|
||||
{
|
||||
|
@ -1912,7 +1924,9 @@ bool construct_tx_to_key(const std::vector<test_event_entry>& events, cryptonote
|
|||
uint64_t amount = sum_amount(destinations);
|
||||
|
||||
if (!fill_tx_sources(sources, events, blk_head, from, amount + fee, nmix))
|
||||
{
|
||||
throw std::runtime_error("couldn't fill transaction sources");
|
||||
}
|
||||
|
||||
fill_tx_destinations(from, destinations, fee, sources, destinations_all, true);
|
||||
|
||||
|
|
|
@ -57,7 +57,6 @@ bool loki_checkpointing_alt_chain_handle_alt_blocks_at_tip::generate(std::vector
|
|||
loki_chain_generator gen(events, hard_forks);
|
||||
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(40);
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
int constexpr NUM_SERVICE_NODES = service_nodes::CHECKPOINT_QUORUM_SIZE;
|
||||
|
@ -130,7 +129,6 @@ bool loki_checkpointing_alt_chain_more_service_node_checkpoints_less_pow_overtak
|
|||
loki_chain_generator gen(events, hard_forks);
|
||||
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(40);
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
int constexpr NUM_SERVICE_NODES = service_nodes::CHECKPOINT_QUORUM_SIZE;
|
||||
|
@ -178,7 +176,6 @@ bool loki_checkpointing_alt_chain_receive_checkpoint_votes_should_reorg_back::ge
|
|||
loki_chain_generator gen(events, hard_forks);
|
||||
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(40);
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
int constexpr NUM_SERVICE_NODES = service_nodes::CHECKPOINT_QUORUM_SIZE;
|
||||
|
@ -252,7 +249,6 @@ bool loki_checkpointing_alt_chain_too_old_should_be_dropped::generate(std::vecto
|
|||
std::vector<std::pair<uint8_t, uint64_t>> hard_forks = loki_generate_sequential_hard_fork_table();
|
||||
loki_chain_generator gen(events, hard_forks);
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(40);
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
int constexpr NUM_SERVICE_NODES = service_nodes::CHECKPOINT_QUORUM_SIZE;
|
||||
|
@ -300,7 +296,6 @@ bool loki_checkpointing_alt_chain_with_increasing_service_node_checkpoints::gene
|
|||
loki_chain_generator gen(events, hard_forks);
|
||||
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(40);
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
int constexpr NUM_SERVICE_NODES = service_nodes::CHECKPOINT_QUORUM_SIZE;
|
||||
|
@ -378,7 +373,6 @@ bool loki_checkpointing_service_node_checkpoint_from_votes::generate(std::vector
|
|||
loki_chain_generator gen(events, hard_forks);
|
||||
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(40);
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
int constexpr NUM_SERVICE_NODES = service_nodes::CHECKPOINT_QUORUM_SIZE;
|
||||
|
@ -461,7 +455,6 @@ bool loki_checkpointing_service_node_checkpoints_check_reorg_windows::generate(s
|
|||
loki_chain_generator gen(events, hard_forks);
|
||||
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(40);
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
int constexpr NUM_SERVICE_NODES = service_nodes::CHECKPOINT_QUORUM_SIZE;
|
||||
|
@ -519,7 +512,6 @@ bool loki_core_block_reward_unpenalized::generate(std::vector<test_event_entry>&
|
|||
uint8_t newest_hf = hard_forks.back().first;
|
||||
assert(newest_hf >= cryptonote::network_version_13_enforce_checkpoints);
|
||||
|
||||
gen.add_n_blocks(60);
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
cryptonote::account_base dummy = gen.add_account();
|
||||
|
@ -559,7 +551,6 @@ bool loki_core_fee_burning::generate(std::vector<test_event_entry>& events)
|
|||
uint8_t newest_hf = hard_forks.back().first;
|
||||
assert(newest_hf >= cryptonote::network_version_14_blink);
|
||||
|
||||
gen.add_n_blocks(60);
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
using namespace cryptonote;
|
||||
|
@ -628,7 +619,7 @@ bool loki_core_fee_burning::generate(std::vector<test_event_entry>& events)
|
|||
|
||||
bool loki_core_governance_batched_reward::generate(std::vector<test_event_entry>& events)
|
||||
{
|
||||
std::vector<std::pair<uint8_t, uint64_t>> hard_forks = loki_generate_sequential_hard_fork_table();
|
||||
std::vector<std::pair<uint8_t, uint64_t>> hard_forks = loki_generate_sequential_hard_fork_table(cryptonote::network_version_10_bulletproofs);
|
||||
const cryptonote::config_t &network = cryptonote::get_config(cryptonote::FAKECHAIN, cryptonote::network_version_count - 1);
|
||||
|
||||
uint64_t hf10_height = 0;
|
||||
|
@ -932,7 +923,6 @@ bool loki_core_test_deregister_zero_fee::generate(std::vector<test_event_entry>
|
|||
loki_chain_generator gen(events, hard_forks);
|
||||
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(20); /// give miner some outputs to spend and unlock them
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
size_t const NUM_SERVICE_NODES = 11;
|
||||
|
@ -958,7 +948,6 @@ bool loki_core_test_deregister_on_split::generate(std::vector<test_event_entry>
|
|||
loki_chain_generator gen(events, hard_forks);
|
||||
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(20); /// generate some outputs and unlock them
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
std::vector<cryptonote::transaction> reg_txs;
|
||||
|
@ -1025,7 +1014,6 @@ bool loki_core_test_state_change_ip_penalty_disallow_dupes::generate(std::vector
|
|||
loki_chain_generator gen(events, hard_forks);
|
||||
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(20); /// generate some outputs and unlock them
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
std::vector<cryptonote::transaction> reg_txs;
|
||||
|
@ -1068,7 +1056,6 @@ bool loki_name_system_disallow_reserved_type::generate(std::vector<test_event_en
|
|||
|
||||
cryptonote::account_base miner = gen.first_miner_;
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(10); /// generate some outputs and unlock them
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
lns::mapping_value mapping_value = {};
|
||||
|
@ -1122,7 +1109,6 @@ bool loki_name_system_expiration::generate(std::vector<test_event_entry> &events
|
|||
cryptonote::account_base miner = gen.first_miner_;
|
||||
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(10); /// generate some outputs and unlock them
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
lns_keys_t miner_key = make_lns_keys(miner);
|
||||
|
@ -1201,7 +1187,6 @@ bool loki_name_system_get_mappings_by_owner::generate(std::vector<test_event_ent
|
|||
|
||||
// NOTE: Fund Bob's wallet
|
||||
{
|
||||
gen.add_n_blocks(10); /// generate some outputs and unlock them
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
cryptonote::transaction transfer = gen.create_and_add_tx(miner, bob.get_keys().m_account_address, MK_COINS(400));
|
||||
|
@ -1314,7 +1299,6 @@ bool loki_name_system_get_mappings_by_owners::generate(std::vector<test_event_en
|
|||
|
||||
// NOTE: Fund Bob's wallet
|
||||
{
|
||||
gen.add_n_blocks(10); /// generate some outputs and unlock them
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
cryptonote::transaction transfer = gen.create_and_add_tx(miner, bob.get_keys().m_account_address, MK_COINS(400));
|
||||
gen.create_and_add_next_block({transfer});
|
||||
|
@ -1404,7 +1388,6 @@ bool loki_name_system_get_mappings::generate(std::vector<test_event_entry> &even
|
|||
|
||||
// NOTE: Fund Bob's wallet
|
||||
{
|
||||
gen.add_n_blocks(10); /// generate some outputs and unlock them
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
cryptonote::transaction transfer = gen.create_and_add_tx(miner, bob.get_keys().m_account_address, MK_COINS(400));
|
||||
|
@ -1452,7 +1435,6 @@ bool loki_name_system_handles_duplicate_in_lns_db::generate(std::vector<test_eve
|
|||
cryptonote::account_base bob = gen.add_account();
|
||||
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(10); /// generate some outputs and unlock them
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
cryptonote::transaction transfer = gen.create_and_add_tx(miner, bob.get_keys().m_account_address, MK_COINS(400));
|
||||
|
@ -1548,7 +1530,6 @@ bool loki_name_system_handles_duplicate_in_tx_pool::generate(std::vector<test_ev
|
|||
cryptonote::account_base bob = gen.add_account();
|
||||
{
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(10); /// generate some outputs and unlock them
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
cryptonote::transaction transfer = gen.create_and_add_tx(miner, bob.get_keys().m_account_address, MK_COINS(400));
|
||||
|
@ -1582,7 +1563,6 @@ bool loki_name_system_invalid_tx_extra_params::generate(std::vector<test_event_e
|
|||
|
||||
cryptonote::account_base miner = gen.first_miner_;
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(10); /// generate some outputs and unlock them
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
lns_keys_t miner_key = make_lns_keys(miner);
|
||||
|
@ -1716,7 +1696,6 @@ bool loki_name_system_large_reorg::generate(std::vector<test_event_entry> &event
|
|||
lns_keys_t const bob_key = make_lns_keys(bob);
|
||||
{
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(10); /// generate some outputs and unlock them
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
cryptonote::transaction transfer = gen.create_and_add_tx(miner, bob.get_keys().m_account_address, MK_COINS(400));
|
||||
|
@ -1963,7 +1942,6 @@ bool loki_name_system_name_renewal::generate(std::vector<test_event_entry> &even
|
|||
|
||||
{
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(10); /// generate some outputs and unlock them
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
}
|
||||
|
||||
|
@ -2041,7 +2019,6 @@ bool loki_name_system_name_value_max_lengths::generate(std::vector<test_event_en
|
|||
|
||||
cryptonote::account_base miner = gen.first_miner_;
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(10); /// generate some outputs and unlock them
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
auto make_lns_tx_with_custom_extra = [&](loki_chain_generator &gen,
|
||||
|
@ -2116,7 +2093,6 @@ bool loki_name_system_update_mapping_after_expiry_fails::generate(std::vector<te
|
|||
cryptonote::account_base miner = gen.first_miner_;
|
||||
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(10); /// generate some outputs and unlock them
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
lns_keys_t miner_key = make_lns_keys(miner);
|
||||
|
@ -2165,7 +2141,6 @@ bool loki_name_system_update_mapping::generate(std::vector<test_event_entry> &ev
|
|||
std::vector<std::pair<uint8_t, uint64_t>> hard_forks = loki_generate_sequential_hard_fork_table();
|
||||
loki_chain_generator gen(events, hard_forks);
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(10); /// generate some outputs and unlock them
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
cryptonote::account_base miner = gen.first_miner_;
|
||||
|
@ -2223,7 +2198,6 @@ bool loki_name_system_update_mapping_non_existent_name_fails::generate(std::vect
|
|||
std::vector<std::pair<uint8_t, uint64_t>> hard_forks = loki_generate_sequential_hard_fork_table();
|
||||
loki_chain_generator gen(events, hard_forks);
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(5); /// generate some outputs and unlock them
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
cryptonote::account_base miner = gen.first_miner_;
|
||||
|
@ -2238,7 +2212,6 @@ bool loki_name_system_update_mapping_invalid_signature::generate(std::vector<tes
|
|||
std::vector<std::pair<uint8_t, uint64_t>> hard_forks = loki_generate_sequential_hard_fork_table();
|
||||
loki_chain_generator gen(events, hard_forks);
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(5); /// generate some outputs and unlock them
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
cryptonote::account_base miner = gen.first_miner_;
|
||||
|
@ -2260,7 +2233,6 @@ bool loki_name_system_update_mapping_replay::generate(std::vector<test_event_ent
|
|||
std::vector<std::pair<uint8_t, uint64_t>> hard_forks = loki_generate_sequential_hard_fork_table();
|
||||
loki_chain_generator gen(events, hard_forks);
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(5); /// generate some outputs and unlock them
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
cryptonote::account_base miner = gen.first_miner_;
|
||||
|
@ -2313,7 +2285,6 @@ bool loki_name_system_wrong_burn::generate(std::vector<test_event_entry> &events
|
|||
|
||||
// NOTE: Fund Miner's wallet
|
||||
{
|
||||
gen.add_n_blocks(10); /// generate some outputs and unlock them
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
}
|
||||
|
||||
|
@ -2368,7 +2339,6 @@ bool loki_name_system_wrong_version::generate(std::vector<test_event_entry> &eve
|
|||
|
||||
cryptonote::account_base miner = gen.first_miner_;
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(10); /// generate some outputs and unlock them
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
std::string name = "lns_name";
|
||||
|
@ -2406,7 +2376,6 @@ bool loki_service_nodes_alt_quorums::generate(std::vector<test_event_entry>& eve
|
|||
loki_chain_generator gen(events, hard_forks);
|
||||
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(40);
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
int constexpr NUM_SERVICE_NODES = service_nodes::STATE_CHANGE_QUORUM_SIZE + 3;
|
||||
|
@ -2460,7 +2429,6 @@ bool loki_service_nodes_checkpoint_quorum_size::generate(std::vector<test_event_
|
|||
loki_chain_generator gen(events, hard_forks);
|
||||
|
||||
gen.add_blocks_until_version(hard_forks.back().first);
|
||||
gen.add_n_blocks(35);
|
||||
gen.add_mined_money_unlock_blocks();
|
||||
|
||||
std::vector<cryptonote::transaction> registration_txs(service_nodes::CHECKPOINT_QUORUM_SIZE - 1);
|
||||
|
|
Loading…
Reference in a new issue