21Relay
Advanced curriculum
Lesson 2125 minReviewed July 2026

Mempool Policy, Package Relay and Pinning

Advanced transaction systems must reason about both consensus validity and the local, version-dependent policies nodes use to accept, replace and relay unconfirmed transaction packages.

Learning outcomes

By the end of this lesson, you should be able to

  • Consensus validity does not guarantee mempool acceptance or relay.
  • Unconfirmed parents and children form dependency packages.
  • CPFP relies on combined package economics and applicable policy.
  • Pinning exploits relay or replacement constraints to obstruct a preferred spend.
1

Policy and consensus answer different questions

Consensus determines whether a transaction may appear in a valid block. Mempool and relay policy determines whether a particular node will hold or forward that transaction before confirmation. A consensus-valid transaction can therefore be rejected from a local mempool.

Policy can change between Bitcoin Core releases without a consensus change. Wallet design must qualify assumptions by the node software, version and configuration actually used rather than describing one policy snapshot as a permanent network rule.

2

Unconfirmed dependencies form packages

A child transaction may spend an output created by an unconfirmed parent. Nodes evaluate dependency order, ancestor and descendant relationships, fees and resource limits when deciding whether the transactions can enter the mempool.

Package submission lets related transactions be considered together in supported workflows. It does not guarantee network-wide relay, shared mempools or future confirmation; peers can run different versions and policies.

3

Package economics enable CPFP

A high-fee child can raise the combined fee rate of itself and a low-fee parent, giving a miner an incentive to include both. This child-pays-for-parent logic depends on the transactions forming an acceptable package and on the relevant node or miner policy.

The combined fee rate is not a magic override. Missing inputs, consensus failures, conflicting transactions or package-policy limits can still prevent acceptance.

4

Replacement and pinning interact

Replacement policies decide when a conflicting transaction may displace mempool entries. A protocol that depends on fee bumping must understand which party can create descendants, conflicts or resource usage that makes the preferred replacement difficult or expensive to relay.

Pinning is the use of policy constraints to obstruct another participant's transaction or fee-bump path. Designs should limit untrusted parties' ability to attach problematic transactions and should test replacement behaviour under adversarial states.

5

Design against a documented version

Current Bitcoin Core package and replacement documentation describes the behaviour implemented by that release family. BIP431 describes version-3 transaction policy and topology restrictions intended to make some pinning-resistant protocols easier to reason about.

Use the RPCs and test framework of the deployment version to reproduce each state: original transaction, child, conflict, replacement and confirmation. Monitor release notes because policy engineering is active and operational behaviour can improve without changing block validity.

Visual recap

From one transaction to a relay package

Fees, dependencies and conflicts are evaluated under local policy before miners consider inclusion.

01

Create parent

02

Attach child

03

Order dependencies

04

Evaluate package fees

05

Check conflicts and limits

06

Accept, reject or replace

Key vocabulary

Terms worth knowing

Package
A related set of unconfirmed transactions considered with their dependency relationships.
Replacement
A policy-governed process where a conflicting transaction displaces one or more mempool entries.
Pinning
Using relay or replacement constraints to obstruct another party's preferred transaction or fee bump.

Worked example

A fee-bump path works locally but not at a peer

A wallet submits a low-fee parent and high-fee child. Its own current node accepts the package, while an older peer rejects it.

  1. 1Confirm both transactions are consensus valid
  2. 2Record software versions and configuration
  3. 3Inspect ancestor, descendant and fee rules
  4. 4Test direct submission to the intended broadcaster or miner interface
  5. 5Avoid claiming network-wide acceptance

Package relay is local and version-dependent. Protocols need documented assumptions and fallback paths rather than a global-mempool model.

Common misconceptions

What learners often get wrong

Misconception

A high enough child fee overrides every rejection.

More accurate

Fees cannot repair missing inputs, consensus failures, conflicts or unsupported package topology.

Misconception

All Bitcoin nodes implement identical mempool policy.

More accurate

Consensus must align for blocks, while relay policy and software versions can differ.

Try it yourself

Build an adversarial package test matrix.

  • Create parent and child cases
  • Add one conflicting replacement
  • Vary software version and policy
  • Record local acceptance and relay separately
  • State which result is consensus and which is policy

Use fictional values and public information only. Never enter seed words, private keys or other wallet secrets into a learning exercise.

Key takeaways

  • Consensus validity does not guarantee mempool acceptance or relay.
  • Unconfirmed parents and children form dependency packages.
  • CPFP relies on combined package economics and applicable policy.
  • Pinning exploits relay or replacement constraints to obstruct a preferred spend.
  • Package and replacement behaviour must be tested against a named software version.

Lesson recap

Check what you learned

Reveal each model answer, then honestly mark whether you understood it or need another review.

1 of 3

Recall

If a node rejects a transaction package from its mempool, does that prove the transactions could never appear in a valid block?

References

Further reading

Lesson progress

Loading progress...

Rate this lesson

Was this lesson helpful?

No name or financial information is collected.

Found inaccurate or outdated information? Report a correction