Child pays for parent (CPFP)
Also covering Ancestor feerate mining
Child Pays For Parent (CPFP) is a fee bumping technique where a user spends an output from a low-feerate unconfirmed transaction in a child transaction with a high feerate in order to encourage miners to include both transactions in a block.
Bitcoin consensus rules require that the transaction which creates an output must appear earlier in the block chain than the transaction which spends that outputs—including having the parent transaction appear earlier in the same block than the child transaction if both are included in the same block.
This means that an unconfirmed transaction with a high feerate can incentivize miners to mine any of its ancestor transactions that are also unconfirmed. Nodes such as Bitcoin Core that implement such transaction selection policies for their block templates call this ancestor feerate mining. As long as a moderate percentage of miners implement ancestor feerate mining, wallets can use CPFP as a fee bumping technique.
Primary code and documentation
Optech newsletter and website mentions
2022
- Suggestion for LN to provide an alternative to using CPFP for most HTLC fee bumping
- Suggestion to use CPFP to address RBF-related free option problem
- BIP proposed for package relay that can make CPFP bumping more reliable
- Bitcoin Core #24152 begins accepting low-feerate transactions that are paid for by their children
- BTCPay Server 1.4.5 adds support for CPFP fee bumping
2021
- Proposal of initial CPFP rules for mempool package acceptance before implementing package relay
- Candidate set block templates may make some CPFP fee bumps more effective
- Sparrow 1.4.0 adds support for CPFP fee bumping from transaction list
- Bitcoin Core #21359 allows CPFP fee bumping incoming payments
- Challenges of using CPFP fee bumps for LN commitment transactions
2020
2019
- Refactor preparing for ancestor relay
- LND #3140 adds support for RBF and CPFP fee bumping sweep transactions
2018
See also
Previous Topic:
CPFP carve out
Next Topic:
CVE-2018-17144