mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-25 02:33:24 -03:00
test: add conflicting topology test case
We want to ensure that even if topologies that are acceptable are relaxed, like removing package-not-child-with-unconfirmed-parents, that we don't end up accepting packages we shouldn't.
This commit is contained in:
parent
43a66c55ec
commit
9365baa489
1 changed files with 32 additions and 0 deletions
|
@ -21,6 +21,7 @@ from test_framework.util import (
|
|||
fill_mempool,
|
||||
)
|
||||
from test_framework.wallet import (
|
||||
COIN,
|
||||
DEFAULT_FEE,
|
||||
MiniWallet,
|
||||
)
|
||||
|
@ -237,6 +238,37 @@ class RPCPackagesTest(BitcoinTestFramework):
|
|||
{"txid": tx2["txid"], "wtxid": tx2["wtxid"], "package-error": "conflict-in-package"}
|
||||
])
|
||||
|
||||
# Add a child that spends both at high feerate to submit via submitpackage
|
||||
tx_child = self.wallet.create_self_transfer_multi(
|
||||
fee_per_output=int(DEFAULT_FEE * 5 * COIN),
|
||||
utxos_to_spend=[tx1["new_utxo"], tx2["new_utxo"]],
|
||||
)
|
||||
|
||||
testres = node.testmempoolaccept([tx1["hex"], tx2["hex"], tx_child["hex"]])
|
||||
|
||||
assert_equal(testres, [
|
||||
{"txid": tx1["txid"], "wtxid": tx1["wtxid"], "package-error": "conflict-in-package"},
|
||||
{"txid": tx2["txid"], "wtxid": tx2["wtxid"], "package-error": "conflict-in-package"},
|
||||
{"txid": tx_child["txid"], "wtxid": tx_child["wtxid"], "package-error": "conflict-in-package"}
|
||||
])
|
||||
|
||||
submitres = node.submitpackage([tx1["hex"], tx2["hex"], tx_child["hex"]])
|
||||
assert_equal(submitres, {'package_msg': 'conflict-in-package', 'tx-results': {}, 'replaced-transactions': []})
|
||||
|
||||
# Submit tx1 to mempool, then try the same package again
|
||||
node.sendrawtransaction(tx1["hex"])
|
||||
|
||||
submitres = node.submitpackage([tx1["hex"], tx2["hex"], tx_child["hex"]])
|
||||
assert_equal(submitres, {'package_msg': 'conflict-in-package', 'tx-results': {}, 'replaced-transactions': []})
|
||||
assert tx_child["txid"] not in node.getrawmempool()
|
||||
|
||||
# ... and without the in-mempool ancestor tx1 included in the call
|
||||
submitres = node.submitpackage([tx2["hex"], tx_child["hex"]])
|
||||
assert_equal(submitres, {'package_msg': 'package-not-child-with-unconfirmed-parents', 'tx-results': {}, 'replaced-transactions': []})
|
||||
|
||||
# Regardless of error type, the child can never enter the mempool
|
||||
assert tx_child["txid"] not in node.getrawmempool()
|
||||
|
||||
def test_rbf(self):
|
||||
node = self.nodes[0]
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue