relax child-with-unconfirmed-parents rule
This rule was originally introduced along with a very early proposal for package relay as a way to verify that the "correct" child-with-unconfirmed-parents package was provided for a transaction, where correctness was defined as all of the transactions unconfirmed parents. However, we are not planning to introduce a protocol where peers would be asked to send these packages. This rule has downsides: if a transaction has multiple parents but only 1 that requires package CPFP to be accepted, the current rule prevents us from accepting that package. Even if the other parents are already in mempool, the p2p logic will only submit the 1p1c package, which fails this check. See the test in p2p_1p1c_network.py
This commit is contained in:
1 parent
73e754bd01
commit
f24771af05
7 files changed
+32
-81
No files matched your search
@@ -271,9 +271,11 @@ class RPCPackagesTest(BitcoinTestFramework):
|
||||
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
|
||||
# without the in-mempool ancestor tx1 included in the call, tx2 can be submitted, but
|
||||
# tx_child is missing an input.
|
||||
submitres = node.submitpackage([tx2["hex"], tx_child["hex"]])
|
||||
assert_equal(submitres, {'package_msg': 'package-not-child-with-unconfirmed-parents', 'tx-results': {}, 'replaced-transactions': []})
|
||||
assert_equal(submitres["tx-results"][tx_child["wtxid"]], {"txid": tx_child["txid"], "error": "bad-txns-inputs-missingorspent"})
|
||||
assert tx2["txid"] in node.getrawmempool()
|
||||
|
||||
# Regardless of error type, the child can never enter the mempool
|
||||
assert tx_child["txid"] not in node.getrawmempool()
|
||||
|
||||
Reference in new issue
Block a user