<p>It's been over six years and I've done entirely too little research to state the below with confidence, but what I can roughly piece together quickly between cursory research and from what I remember:</p>
<p>There was a big debate about the merits of RBF since at least 2013, when Peter Todd and John Dillon provided a <a href="https://bitcointalk.org/index.php?topic=199947.0" rel="nofollow noreferrer">Full RBF patch</a>. Gavin Andresen <a href="https://bitcointalk.org/index.php?topic=199947.msg2090345#msg2090345" rel="nofollow noreferrer">described</a> it as anti-social and among others pushed for a <a href="https://bitcoin.stackexchange.com/q/38320/5406">First-seen-safe RBF</a> variant which would require a replacement transaction to include all outputs of the replaced transaction. It was pointed out that FSS RBF would only protect transactions that only spent confirmed inputs (since transactions that spent unconfirmed inputs could be invalidated by replacing the parent) and that each replacement would add another change output to the transaction adding UTXO bloat.</p>
<p>Regardless, the full RBF proposal saw strong push-back, especially by a number of services built around zero confirmation payments (IIRC e.g. Satoshi Dice, BitPay). The 2015 compromise was then to require transactions to <a href="https://bitcoincore.org/en/faq/optin_rbf/" rel="nofollow noreferrer">opt-in</a> to Full RBF and to require that replacements pay not only more fees than the replaced transactions but more than their entire descendant tree to curb DOS attacks. Standard transactions were left unchanged in their behavior.</p>
<p>Obviously, RBF is just a mempool policy and cannot be enforced, so nothing would prevent nodes (or even miners) from individually switching to running a Full RBF mempool policy.</p>
<hr />
<p>Expanding on this in 2024: Per popular demand, a startup option <code>mempoolfullrbf</code> was introduced in 2022 with Bitcoin Core v24.0.1. Nodes with this startup option will accept replacements for any transactions whether the original has signaled replaceability or not.
Starting with Bitcoin Core v28.0 <code>mempoolfullrbf</code> released in 2024, this option is on by default after it was adopted by a supermajority of the hashrate, making it the defacto expected behavior on the network. The startup option was deprecated and will be removed with Bitcoin Core v29.0.</p>

CC BY-SA 4.0
2021-04-20T13:08:00.777Z
2024-12-07T23:59:31.000Z
2024-12-07T23:59:31.000Z
Murch
<p>I know it's a wallet implementation and a flag, but when it was introduced why wasn't this change a rule for all transactions so that anyone could <a href="https://en.bitcoin.it/wiki/Replace_by_fee" rel="nofollow noreferrer">RBF</a> if they wanted to instead having had to set the mandatory flag?</p>

<replace-by-fee>
Why isn't Replace by fee default for all transactions?
zndtoshi
# Why isn't Replace by fee default for all transactions?

(Asked by: username_0 on 2021-04-20)

I know it's a wallet implementation and a flag, but when it was introduced why wasn't this change a rule for all transactions so that anyone could [RBF](https://en.bitcoin.it/wiki/Replace_by_fee) if they wanted to instead having had to set the mandatory flag?

**Tags:** replace-by-fee


---

## 1 answers

### Answer by username_1 on 2021-04-20. Score: 4 | Accepted answer

It's been over six years and I've done entirely too little research to state the below with confidence, but what I can roughly piece together quickly between cursory research and from what I remember:

There was a big debate about the merits of RBF since at least 2013, when Peter Todd and John Dillon provided a [Full RBF patch](https://bitcointalk.org/index.php?topic=199947.0). Gavin Andresen [described](https://bitcointalk.org/index.php?topic=199947.msg2090345#msg2090345) it as anti-social and among others pushed for a [First-seen-safe RBF](https://bitcoin.stackexchange.com/q/38320/5406) variant which would require a replacement transaction to include all outputs of the replaced transaction. It was pointed out that FSS RBF would only protect transactions that only spent confirmed inputs (since transactions that spent unconfirmed inputs could be invalidated by replacing the parent) and that each replacement would add another change output to the transaction adding UTXO bloat.

Regardless, the full RBF proposal saw strong push-back, especially by a number of services built around zero confirmation payments (IIRC e.g. Satoshi Dice, BitPay). The 2015 compromise was then to require transactions to [opt-in](https://bitcoincore.org/en/faq/optin_rbf/) to Full RBF and to require that replacements pay not only more fees than the replaced transactions but more than their entire descendant tree to curb DOS attacks. Standard transactions were left unchanged in their behavior.

Obviously, RBF is just a mempool policy and cannot be enforced, so nothing would prevent nodes (or even miners) from individually switching to running a Full RBF mempool policy.

---

Expanding on this in 2024: Per popular demand, a startup option `mempoolfullrbf` was introduced in 2022 with Bitcoin Core v24.0.1. Nodes with this startup option will accept replacements for any transactions whether the original has signaled replaceability or not.
Starting with Bitcoin Core v28.0 `mempoolfullrbf` released in 2024, this option is on by default after it was adopted by a supermajority of the hashrate, making it the defacto expected behavior on the network. The startup option was deprecated and will be removed with Bitcoin Core v29.0.


---

