From 1f7b295ea0472df300711a27d1616374847308a6 Mon Sep 17 00:00:00 2001 From: Jude Nelson Date: Thu, 20 Oct 2022 21:44:33 -0400 Subject: [PATCH] fix: remove mining fairness test, since this is no longer the desired behavior of mempool walks --- .github/workflows/bitcoin-tests.yml | 1 - .../src/tests/neon_integrations.rs | 129 ------------------ 2 files changed, 130 deletions(-) diff --git a/.github/workflows/bitcoin-tests.yml b/.github/workflows/bitcoin-tests.yml index 6920cc7a6..79a86531c 100644 --- a/.github/workflows/bitcoin-tests.yml +++ b/.github/workflows/bitcoin-tests.yml @@ -60,7 +60,6 @@ jobs: - tests::neon_integrations::antientropy_integration_test - tests::neon_integrations::filter_low_fee_tx_integration_test - tests::neon_integrations::filter_long_runtime_tx_integration_test - - tests::neon_integrations::mining_transactions_is_fair - tests::neon_integrations::microblock_large_tx_integration_test_FLAKY - tests::neon_integrations::block_large_tx_integration_test - tests::neon_integrations::microblock_limit_hit_integration_test diff --git a/testnet/stacks-node/src/tests/neon_integrations.rs b/testnet/stacks-node/src/tests/neon_integrations.rs index 27fe214a9..b7ac8a96c 100644 --- a/testnet/stacks-node/src/tests/neon_integrations.rs +++ b/testnet/stacks-node/src/tests/neon_integrations.rs @@ -2896,135 +2896,6 @@ fn miner_submit_twice() { channel.stop_chains_coordinator(); } -#[test] -#[ignore] -fn mining_transactions_is_fair() { - // test that origin addresses with higher-than-min-fee transactions pending will get considered - // in a round-robin fashion, even if one origin has waaaaaay more outstanding transactions than - // the other (and with higher fees). - if env::var("BITCOIND_TEST") != Ok("1".into()) { - return; - } - - let spender_sks: Vec<_> = (0..2) - .into_iter() - .map(|_| StacksPrivateKey::new()) - .collect(); - let spender_addrs: Vec = spender_sks.iter().map(|x| to_addr(x).into()).collect(); - - let mut txs = vec![]; - let recipient = StacksAddress::from_string(ADDR_4).unwrap(); - - // spender 0 sends 20 txs, at over 2000 uSTX tx fee - for i in 0..20 { - let tx = make_stacks_transfer(&spender_sks[0], i, 2000 * (21 - i), &recipient.into(), 1000); - txs.push(tx); - } - - // spender 1 sends 1 tx, that is roughly the middle rate among the spender[0] transactions - let tx = make_stacks_transfer(&spender_sks[1], 0, 20_000, &recipient.into(), 1000); - txs.push(tx); - - let (mut conf, _) = neon_integration_test_conf(); - for spender_addr in spender_addrs.iter() { - conf.initial_balances.push(InitialBalance { - address: spender_addr.clone(), - amount: 1049230, - }); - } - - // all transactions have high-enough fees... - conf.miner.min_tx_fee = 1; - conf.miner.first_attempt_time_ms = u64::max_value(); - conf.miner.subsequent_attempt_time_ms = u64::max_value(); - - test_observer::spawn(); - conf.events_observers.push(EventObserverConfig { - endpoint: format!("localhost:{}", test_observer::EVENT_OBSERVER_PORT), - events_keys: vec![EventKeyType::AnyEvent], - }); - - let mut btcd_controller = BitcoinCoreController::new(conf.clone()); - btcd_controller - .start_bitcoind() - .map_err(|_e| ()) - .expect("Failed starting bitcoind"); - - let mut btc_regtest_controller = BitcoinRegtestController::new(conf.clone(), None); - let http_origin = format!("http://{}", &conf.node.rpc_bind); - - btc_regtest_controller.bootstrap_chain(201); - - eprintln!("Chain bootstrapped..."); - - let mut run_loop = neon::RunLoop::new(conf); - let blocks_processed = run_loop.get_blocks_processed_arc(); - - let channel = run_loop.get_coordinator_channel().unwrap(); - - thread::spawn(move || run_loop.start(None, 0)); - - // give the run loop some time to start up! - wait_for_runloop(&blocks_processed); - - // first block wakes up the run loop - next_block_and_wait(&mut btc_regtest_controller, &blocks_processed); - - // first block will hold our VRF registration - next_block_and_wait(&mut btc_regtest_controller, &blocks_processed); - - // second block will be the first mined Stacks block - next_block_and_wait(&mut btc_regtest_controller, &blocks_processed); - - for tx in txs.iter() { - submit_tx(&http_origin, tx); - } - - // mine a couple more blocks -- all 21 transactions should get mined; the same origin should be - // considered more than once per block, but all origins should be considered - next_block_and_wait(&mut btc_regtest_controller, &blocks_processed); - next_block_and_wait(&mut btc_regtest_controller, &blocks_processed); - next_block_and_wait(&mut btc_regtest_controller, &blocks_processed); - - let blocks = test_observer::get_blocks(); - - let mut found_sender_1 = false; - let mut sender_1_is_last = true; - - for block in blocks.iter() { - let transactions = block.get("transactions").unwrap().as_array().unwrap(); - for tx in transactions.iter() { - let raw_tx = tx.get("raw_tx").unwrap().as_str().unwrap(); - if raw_tx == "0x00" { - continue; - } - let tx_bytes = hex_bytes(&raw_tx[2..]).unwrap(); - let parsed = StacksTransaction::consensus_deserialize(&mut &tx_bytes[..]).unwrap(); - if let TransactionPayload::TokenTransfer(..) = parsed.payload { - if parsed.auth().origin().address_testnet() == to_addr(&spender_sks[1]) { - found_sender_1 = true; - } else if found_sender_1 { - // some tx from sender 0 got mined after the one from sender 1, which is what - // we want -- sender 1 shouldn't monopolize mempool consideration - sender_1_is_last = false; - } - } - } - } - - assert!(found_sender_1); - assert!(!sender_1_is_last); - - // all transactions mined - let account_0 = get_account(&http_origin, &spender_addrs[0]); - assert_eq!(account_0.nonce, 20); - - let account_1 = get_account(&http_origin, &spender_addrs[1]); - assert_eq!(account_1.nonce, 1); - - channel.stop_chains_coordinator(); -} - #[test] #[ignore] fn size_check_integration_test() {