You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit adds end-to-end integration tests for BIP 431 (TRUC) policy
enforcement using the rpctest harness. The tests verify all six TRUC rules
plus security properties using real btcd nodes and transaction submission.
The test infrastructure enhancements to rpctest include v3 transaction
creation helpers (CreateV3Transaction, CreateV3Child) that properly handle
transaction version selection through functional options. The AddUnconfirmedTx
method on MemWallet now tracks outputs by keyIndex to enable proper UTXO
management for test scenarios involving multiple children spending different
outputs from the same parent.
The TRUC policy test suite covers:
Rule 1 (replaceability): Verifies v3 transactions signal RBF even without
BIP 125 sequence numbers, enabling reliable replacement for fee-bumping.
Rule 2 (all-or-none): Tests that v3 transactions correctly reject unconfirmed
v2 parents while accepting confirmed v2 parents, enforcing the all-or-none
TRUC requirement.
Rule 3 (topology): Validates the 1-parent-1-child constraint by testing both
valid 1P1C acceptance and rejection of long v3 chains (grandparent→parent→
child) that violate the ancestor limit.
Rules 4-5 (size limits): Confirms transactions within the size limits are
accepted. Precise size testing is deferred to unit tests where exact byte
control is easier.
Rule 6 (zero-fee): Marked as pending future package relay RPC support.
Security tests verify the topology restrictions prevent common pinning
vectors, specifically that multiple children and long chains are both
rejected.
These integration tests complement the unit tests by exercising the full
mempool acceptance pipeline with real transactions, RPC submission, and
multi-node scenarios. All tests pass, confirming the TRUC implementation is
correct and ready for production use.
0 commit comments