bitcoin/test/functional/test_framework
Andrew Chow 5aa67eb365
Merge bitcoin/bitcoin#28199: test: tx orphan handling
9eac5a0529 [functional test] transaction orphan handling (glozow)
61e77bb901 [test framework] make it easier to fast-forward setmocktime (glozow)

Pull request description:

  I was doing some mutation testing (through reckless refactoring) locally and found some specific behaviors in orphan handling that weren't picked up by tests. Adding some of these test cases now can maybe help with reviewing refactors like #28031.

  - Parent requests aren't sent immediately. A delay is added and the requests are filtered by AlreadyHaveTx before they are sent, which means you can't use fake orphans to probe precise arrival timing of a tx.
  - Parent requests include all that are not AlreadyHaveTx. This means old confirmed parents may be requested.
  - The node does not give up on orphans if the peer responds to a parent request with notfound. This means that if a parent is an old confirmed transaction (in which notfound is expected), the orphan should still be resolved.
  - Rejected parents can cause an orphan to be dropped, but it depends on the reason and only based on txid.
  - Rejected parents can cause an orphan to be rejected too, by both wtxid and txid.
  - Requests for orphan parents should be de-duplicated with "regular" txrequest. If a missing parent has the same hash as an in-flight request, it shouldn't be requested.
  - Multiple orphans with overlapping parents should not cause duplicated parent requests.

ACKs for top commit:
  instagibbs:
    reACK 9eac5a0529
  dergoegge:
    reACK 9eac5a0529
  achow101:
    ACK 9eac5a0529
  fjahr:
    Code review ACK 9eac5a0529

Tree-SHA512: 85488dc6a3f62cf0c38e7dfe7839c01215b44b172d1755b18164d41d01038f3a749451241e4eba8b857fd344a445740b21d6382c45977234b21460e3f53b1b2a
2023-08-22 17:03:37 -04:00
..
__init__.py Rename rpc-tests directory to functional 2017-03-20 10:40:31 -04:00
address.py refactor: move address_to_scriptpubkey to address.py 2023-03-28 16:54:28 +01:00
authproxy.py test: Rename EncodeDecimal to serialization_fallback 2023-06-29 19:51:43 +02:00
bdb.py scripted-diff: Bump copyright headers 2021-11-10 11:10:24 +01:00
bip340_test_vectors.csv tests: add BIP340 Schnorr signature support to test framework 2020-10-12 17:18:47 -07:00
blockfilter.py test: add compact block filter (BIP158) helper routines 2022-10-20 01:33:17 +02:00
blocktools.py refactor: use address_to_scriptpubkey to retrieve addresses scriptpubkey 2023-03-28 16:58:16 +01:00
coverage.py test: fix PEP484 no implicit optional argument types errors 2023-06-29 16:14:07 -06:00
descriptors.py Output a descriptor in createmultisig and addmultisigaddress 2020-01-30 23:55:36 -05:00
ellswift.py test: add ellswift test vectors from BIP324 2023-06-29 23:32:56 +05:30
ellswift_decode_test_vectors.csv test: add ellswift test vectors from BIP324 2023-06-29 23:32:56 +05:30
key.py test: add secp256k1 module with FE (field element) and GE (group element) classes 2023-06-27 09:34:48 -04:00
messages.py test: add support for all networks in CAddress in messages.py 2023-07-10 10:07:40 -04:00
muhash.py test: remove modinv python util helper function 2023-04-28 14:19:18 +02:00
netutil.py scripted-diff: Bump copyright headers 2022-12-24 23:49:50 +00:00
p2p.py [functional test] transaction orphan handling 2023-08-14 15:54:31 +01:00
psbt.py test: PSBT: eliminate magic numbers for global unsigned tx key (0) 2023-03-04 12:43:38 +01:00
ripemd160.py Add pure Python RIPEMD-160 2021-12-08 14:29:34 -05:00
script.py test: refactor: deduplicate legacy ECDSA signing for tx inputs 2023-07-03 17:33:41 +02:00
script_util.py scripted-diff: Bump copyright headers 2022-12-24 23:49:50 +00:00
secp256k1.py test: EC: optimize scalar multiplication of G by using lookup table 2023-06-27 09:34:52 -04:00
segwit_addr.py Use Bech32m encoding for v1+ segwit addresses 2021-03-16 10:48:36 -07:00
siphash.py test: python E721 updates 2023-07-31 12:13:46 -06:00
socks5.py test: add keep_alive option to socks5 proxy in test_framework 2023-07-10 10:07:45 -04:00
test_framework.py script, test: add missing python type annotations 2023-06-29 16:13:51 -06:00
test_node.py Merge bitcoin/bitcoin#28199: test: tx orphan handling 2023-08-22 17:03:37 -04:00
test_shell.py scripted-diff: Bump copyright headers 2022-12-24 23:49:50 +00:00
util.py test: fix PEP484 no implicit optional argument types errors 2023-06-29 16:14:07 -06:00
wallet.py test: refactor: deduplicate legacy ECDSA signing for tx inputs 2023-07-03 17:33:41 +02:00
wallet_util.py test: refactor: introduce generate_keypair helper with WIF support 2023-06-19 17:38:14 +02:00
xswiftec_inv_test_vectors.csv test: add ellswift test vectors from BIP324 2023-06-29 23:32:56 +05:30