doc: Update mempool_replacements.md to reflect feerate diagram checks

This commit is contained in:
Suhas Daftuar committed 2025-11-18 11:14:52 -05:00
1 parent 21693f031a
commit 72f60c877e
1 file changed
+9 -19
+9 -19
View File
@@ -12,12 +12,7 @@ other consensus and policy rules, each of the following conditions are met:
1. (Removed) 1. (Removed)
2. The replacement transaction only include an unconfirmed input if that input was included in 2. (Removed)
one of the directly conflicting transactions. An unconfirmed input spends an output from a
currently-unconfirmed transaction.
*Rationale*: When RBF was originally implemented, the mempool did not keep track of
ancestor feerates yet. This rule was suggested as a temporary restriction.
3. The replacement transaction pays an absolute fee of at least the sum paid by the original 3. The replacement transaction pays an absolute fee of at least the sum paid by the original
transactions. transactions.
@@ -38,23 +33,16 @@ other consensus and policy rules, each of the following conditions are met:
*Rationale*: Try to prevent DoS attacks where an attacker causes the network to repeatedly relay *Rationale*: Try to prevent DoS attacks where an attacker causes the network to repeatedly relay
transactions each paying a tiny additional amount in fees, e.g. just 1 satoshi. transactions each paying a tiny additional amount in fees, e.g. just 1 satoshi.
5. The number of original transactions does not exceed 100. More precisely, the sum of all 5. The number of distinct clusters corresponding to conflicting transactions does not exceed 100.
directly conflicting transactions' descendant counts (number of transactions inclusive of itself
and its descendants) must not exceed 100; it is possible that this overestimates the true number
of original transactions.
*Rationale*: Try to prevent DoS attacks where an attacker is able to easily occupy and flush out *Rationale*: Limit CPU usage required to update the mempool for so many transactions being
significant portions of the node's mempool using replacements with multiple directly conflicting removed at once.
transactions, each with large descendant sets.
6. The replacement transaction's feerate is greater than the feerates of all directly conflicting 6. The feerate diagram of the mempool must be strictly improved by the replacement transaction.
transactions.
*Rationale*: This rule was originally intended to ensure that the replacement transaction is *Rationale*: This ensures that block fees in all future blocks will go up
preferable for block-inclusion, compared to what would be removed from the mempool. This rule after the replacement (ignoring tail effects at the end of a block).
predates ancestor feerate-based transaction selection.
This set of rules is similar but distinct from BIP125.
## History ## History
@@ -79,3 +67,5 @@ This set of rules is similar but distinct from BIP125.
* Signaling for replace-by-fee is no longer required as of [PR 30592](https://github.com/bitcoin/bitcoin/pull/30592). * Signaling for replace-by-fee is no longer required as of [PR 30592](https://github.com/bitcoin/bitcoin/pull/30592).
* The incremental relay feerate default is 0.1sat/vB ([PR #33106](https://github.com/bitcoin/bitcoin/pull/33106)). * The incremental relay feerate default is 0.1sat/vB ([PR #33106](https://github.com/bitcoin/bitcoin/pull/33106)).
* Feerate diagram policy enabled in conjunction with switch to cluster mempool as of **v31.0**.