TRUC

From Bitcoin Wiki
Jump to navigation Jump to search

TRUC (Topologically Restricted Until Confirmation) is an opt-in Bitcoin Core mempool policy for transactions that set nVersion = 3. It is described in BIP 431. An unconfirmed TRUC transaction may have at most one unconfirmed parent and one unconfirmed child. The parent is limited to 10,000 vB and the child to 1,000 vB. A TRUC parent may pay below the minimum relay feerate if a package with its child meets the node's feerate rules. The policy is not a consensus change.

Pinning context

TRUC exists mainly to make child-pays-for-parent fee bumping more reliable for contracting protocols such as the Lightning Network. Without tight topology limits, an adversary can attach many low-feerate descendants or large children that consume a node's descendant budget and block replacements. BIP 431 frames that class of attacks as package-limit pinning and as RBF pinning through absolute fees or conflict counts.

Signaling version 3 opts the transaction into those limits on nodes that enforce BIP 431 policy. Contracting protocols that pre-sign zero-fee or low-fee parents rely on a later child to carry fees. TRUC makes that topology the mempool rule rather than an informal convention. The same design also replaces several roles that CPFP carve-out previously filled for two-party shared transactions.

Policy rules

Unconfirmed TRUC ancestors and descendants must themselves be TRUC. CPFP carve-out is not granted to TRUC transactions. A TRUC transaction signals replaceability even without BIP 125 signaling. Bitcoin Core may evict an existing TRUC child when a more incentive-compatible sibling is submitted. Limited opportunistic one-parent-one-child package relay in Core 28.0 can pair a low-feerate parent with its child over ordinary transaction relay. The experimental submitpackage RPC can submit such packages to a local node.

Sibling eviction and inherited replaceability matter when two counterparties race to attach different fee-bumping children to the same TRUC parent. The node keeps the child that improves incentive compatibility under BIP 431-oriented policy. Because only one unconfirmed child is allowed, a counterparty cannot fill a large descendant budget with junk outputs before the honest fee-bump lands.

Ephemeral anchors and Pay-to-anchor outputs pair naturally with TRUC parents. The parent can be below the floor while the child carries fees, and the one-parent-one-child shape matches package relay in current Bitcoin Core releases.

Deployment

Bitcoin Core 28.0 treats version 3 transactions as standard on all networks and applies the TRUC rules. Cluster mempool in Bitcoin Core 31.0 removes CPFP carve-out entirely, so TRUC plus package relay is the supported path for many shared-transaction fee bumps that formerly depended on carve-out.

Nodes that have not upgraded still treat version-3 transactions under older standardness rules. TRUC's pinning benefits therefore apply only on the subset of the network that enforces BIP 431 policy. BIP 431 itself remains an informational draft. Wallet and Lightning authors should treat topology limits as policy that can tighten or loosen slightly across releases while the nVersion = 3 signal stays stable.

Mining and relay still follow ordinary incentive ranking inside the allowed topology. TRUC does not guarantee confirmation. It only removes several mempool shapes that previously made fee bumps unreliable against a malicious counterparty.

See also

External links