BitcoinMachine
TERM_DEF // TRANSACTION / PACKAGE_RELAY_BIP_331
PACKAGE RELAY
(BIP 331)
Package Relay (BIP 331). P2P messages letting miners receive parent+child as one unit so CPFP works even at the mempool edge.

This page sits in the Transaction section — How money moves: inputs, outputs, fees, signatures, sighash flags, and the formats that wrap them. Read on for what it is, why it exists, how it works under the hood, and what to watch out for.
Package Relay (BIP 331) — at a glance
TRANSACTION
Package Relay (BIP 331) is part of the FEE ECONOMY sub-family of transaction-level concepts. BIP-331 — peers can announce and accept connected ancestor/descendant tx packages atomically, fixing low-feerate-parent / high-feerate-child propagation. P2P messages letting miners receive parent+child as one unit so CPFP works even at the mempool edge.
Why it exists
DESIGN
A child tx can pay enough fee to make its low-feerate parent worth mining (CPFP), but the parent might not propagate alone if it's below the recipient's minrelaytxfee. Package relay lets peers announce the bundle so the parent travels with its bumping child.
Mechanism
HOW IT WORKS
New messages sendpackages + getpkgtxns + pkgtxns let peers negotiate which package types they support (currently 1-parent-1-child) and exchange the entire family. Packages are evaluated against ancestor-feerate at the receiver.
1. Wallet selects UTXOs whose total value covers the spend amount + estimated fee (coin selection). 2. Wallet builds the transaction body: version, inputs (each with prev txid + vout + sequence), outputs (each with value + scriptPubKey), locktime. 3. Wallet computes the sighash for each input (which parts of the tx the signature commits to — controlled by the SIGHASH flag). 4. Wallet signs each input with the right private key. Witness/scriptSig is populated with the resulting signatures + pubkeys. 5. Tx is broadcast to peers. Mempool propagation: tens of seconds globally. 6. A miner includes it in a block. Confirmation count grows by 1 per block; after ~6 the tx is effectively final.
Package Relay (BIP 331) — FEE ECONOMY
EXAMPLE
Without package relay: Parent (1 sat/vB) sent first → rejected by peer with floor 2 sat/vB Child (50 sat/vB) sent next → rejected because parent unknown Result: stuck. With package relay: Sender sends parent + child as a package Receiver evaluates ancestor feerate ≈ 25 sat/vB Both accepted in one shot.
ANCESTOR FEERATE EVAL
Packages are accepted/rejected as a unit based on their ancestor-feerate; no single member needs to clear the floor alone.
ATOMIC
A transaction is either fully accepted into a block or fully rejected. There is no partial spend.
IMMUTABLE INPUTS
A UTXO can only ever be spent once. After that, it is permanently consumed.
NO BALANCES
Bitcoin tracks UTXOs, not balances. Your wallet computes a balance by summing the UTXOs it controls.
Things that catch people out
PITFALLS
  • address-reuse/">Address reuse degrades privacy — every reuse links more of your UTXOs together publicly. Modern wallets generate a fresh address per receive.
  • Fee estimation matters: under-pay and your tx sits in the mempool for hours; over-pay and you tip the miner more than necessary. Use a fee estimator.
  • "Change outputs" must go back to a fresh address you control. A missing output/">change output sends the difference to the miner as fee — a known footgun.
  • RBF (Replace-By-Fee) lets you re-broadcast a tx with a higher fee. Useful for stuck txs but means a 0-confirmation tx is never truly final.

TERMINOLOGY
Package Relay (BIP 331)
P2P messages letting miners receive parent+child as one unit so CPFP works even at the mempool edge.
Transaction (Tx)
A signed payload spending one or more UTXOs and creating new ones; every state change in Bitcoin is a tx.
Raw Transaction
The hex-serialized bytes of a transaction, ready to broadcast or analyze.
Transaction ID (TXID)
HASH256 of a transaction's pre-witness serialization; used to reference outputs by (txid, vout).
wTXID (Witness TXID)
HASH256 of the full transaction including witness data; commits to signatures and used in the witness commitment.
Input
A reference to a previous output being spent, plus the data (scriptSig/witness) authorizing the spend.
Output
An (amount, scriptPubKey) pair created by a transaction; spendable later by a tx whose input references it.
UTXO (Unspent Transaction Output)
An output that hasn't been spent yet; your "balance" is the sum of UTXOs you can sign for.