test: remove rbf carveout test from mempool_limit.py
What changed, and why it matters
This commit simply removes one test case from a Bitcoin Core functional test file. It does not change any production code, network rules, or wallet behavior. There is no indication this is a security fix.
No action needed. This is a test-only change. If reviewing, confirm the removed test is covered elsewhere or intentionally obsolete, but no security response is warranted.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff deletes the test_rbf_carveout_disallowed method and its invocation from test/functional/mempool_limit.py. The removed test verified that an individually-evaluated RBF replacement in a package does not increase descendant limits for other parts of the package. No consensus, mempool policy, or node logic code is modified.
Changed components
test/functional/mempool_limit.pyInspect captured patch +0 / −52
diff --git a/test/functional/mempool_limit.py b/test/functional/mempool_limit.py
index 72696062..8b9fd381 100755
--- a/test/functional/mempool_limit.py
+++ b/test/functional/mempool_limit.py
@@ -32,57 +32,6 @@ class MempoolLimitTest(BitcoinTestFramework):
"-maxmempool=5",
]]
- def test_rbf_carveout_disallowed(self):
- node = self.nodes[0]
-
- self.log.info("Check that individually-evaluated transactions in a package don't increase package limits for other subpackage parts")
-
- # We set chain limits to 2 ancestors, 1 descendant, then try to get a parents-and-child chain of 2 in mempool
- #
- # A: Solo transaction to be RBF'd (to bump descendant limit for package later)
- # B: First transaction in package, RBFs A by itself under individual evaluation, which would give it +1 descendant limit
- # C: Second transaction in package, spends B. If the +1 descendant limit persisted, would make it into mempool
-
- self.restart_node(0, extra_args=self.extra_args[0] + ["-limitancestorcount=2", "-limitdescendantcount=1"])
-
- # Generate a confirmed utxo we will double-spend
- rbf_utxo = self.wallet.send_self_transfer(
- from_node=node,
- confirmed_only=True
- )["new_utxo"]
- self.generate(node, 1)
-
- # tx_A needs to be RBF'd, set minfee at set size
- A_vsize = 250
- mempoolmin_feerate = node.getmempoolinfo()["mempoolminfee"]
- tx_A = self.wallet.send_self_transfer(
- from_node=node,
- fee_rate=mempoolmin_feerate,
- target_vsize=A_vsize,
- utxo_to_spend=rbf_utxo,
- confirmed_only=True
- )
-
- # RBF's tx_A, is not yet submitted
- tx_B = self.wallet.create_self_transfer(
- fee=tx_A["fee"] * 4,
- target_vsize=A_vsize,
- utxo_to_spend=rbf_utxo,
- confirmed_only=True
- )
-
- # Spends tx_B's output, too big for cpfp carveout (because that would also increase the descendant limit by 1)
- non_cpfp_carveout_vsize = 10001 # EXTRA_DESCENDANT_TX_SIZE_LIMIT + 1
- tx_C = self.wallet.create_self_transfer(
- target_vsize=non_cpfp_carveout_vsize,
- fee_rate=mempoolmin_feerate,
- utxo_to_spend=tx_B["new_utxo"],
- confirmed_only=True
- )
- res = node.submitpackage([tx_B["hex"], tx_C["hex"]])
- assert_equal(res["package_msg"], "transaction failed")
- assert "too-long-mempool-chain" in res["tx-results"][tx_C["wtxid"]]["error"]
-
def test_mid_package_eviction_success(self):
node = self.nodes[0]
self.log.info("Check a package where each parent passes the current mempoolminfee but a parent could be evicted before getting child's descendant feerate")
@@ -336,7 +285,6 @@ class MempoolLimitTest(BitcoinTestFramework):
self.test_mid_package_eviction_success()
self.test_mid_package_replacement()
- self.test_rbf_carveout_disallowed()
if __name__ == '__main__':
Why this scored 12/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.