<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.bitcoin.it/w/index.php?action=history&amp;feed=atom&amp;title=Replace_by_fee</id>
	<title>Replace by fee - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://en.bitcoin.it/w/index.php?action=history&amp;feed=atom&amp;title=Replace_by_fee"/>
	<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Replace_by_fee&amp;action=history"/>
	<updated>2026-05-19T15:54:23Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Replace_by_fee&amp;diff=65020&amp;oldid=prev</id>
		<title>Belcher: /* Criticism */ added link to bram cohen&#039;s blog on unconfirmed transactions</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Replace_by_fee&amp;diff=65020&amp;oldid=prev"/>
		<updated>2018-03-06T15:59:37Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Criticism: &lt;/span&gt; added link to bram cohen&amp;#039;s blog on unconfirmed transactions&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:59, 6 March 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l42&quot;&gt;Line 42:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 42:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;However, this criticism does not hold up: double spend attacks are entirely possible without RBF.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;However, this criticism does not hold up: double spend attacks are entirely possible without RBF.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;A good analysis of the tradeoffs with transaction replacement can be in a blog post by Bram Cohen: https://medium.com/@bramcohen/the-inevitable-demise-of-unconfirmed-bitcoin-transactions-8b5f66a44a35&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Belcher</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Replace_by_fee&amp;diff=65013&amp;oldid=prev</id>
		<title>Sgornick: Add reference to Transaction replacement article on first use of term in this article.</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Replace_by_fee&amp;diff=65013&amp;oldid=prev"/>
		<updated>2018-03-05T23:51:57Z</updated>

		<summary type="html">&lt;p&gt;Add reference to Transaction replacement article on first use of term in this article.&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:51, 5 March 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Since Bitcoin&amp;#039;s original inception, it has supported the concept that an unconfirmed transaction may be modified and re-issued.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Since Bitcoin&amp;#039;s original inception, it has supported the concept that an unconfirmed transaction may be modified and re-issued.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This concept is known as &quot;transaction replacement&quot;, because the new transaction replaces the old one.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This concept is known as &quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/ins&gt;transaction replacement&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/ins&gt;&quot;, because the new transaction replaces the old one.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;However, since transaction replacement eliminates the cost to all previous transactions being replaced, it created a DoS risk:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;However, since transaction replacement eliminates the cost to all previous transactions being replaced, it created a DoS risk:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;attackers could produce as many transactions as they wanted, while only paying the fee for the one variant that was eventually mined.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;attackers could produce as many transactions as they wanted, while only paying the fee for the one variant that was eventually mined.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Sgornick</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Replace_by_fee&amp;diff=65011&amp;oldid=prev</id>
		<title>Luke-jr: Initial description</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Replace_by_fee&amp;diff=65011&amp;oldid=prev"/>
		<updated>2018-03-05T23:04:23Z</updated>

		<summary type="html">&lt;p&gt;Initial description&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Since Bitcoin&amp;#039;s original inception, it has supported the concept that an unconfirmed transaction may be modified and re-issued.&lt;br /&gt;
This concept is known as &amp;quot;transaction replacement&amp;quot;, because the new transaction replaces the old one.&lt;br /&gt;
However, since transaction replacement eliminates the cost to all previous transactions being replaced, it created a DoS risk:&lt;br /&gt;
attackers could produce as many transactions as they wanted, while only paying the fee for the one variant that was eventually mined.&lt;br /&gt;
&lt;br /&gt;
To solve this problem, the concept of replace-by-fee was developed:&lt;br /&gt;
by requiring replacements to pay for not only its own cost, but also the fee of the transactions being replaced, the DoS risk was strictly less than the risk of flooding with separate transactions.&lt;br /&gt;
&lt;br /&gt;
==Variants==&lt;br /&gt;
&lt;br /&gt;
Replace-by-fee is a node policy that comes in multiple variants:&lt;br /&gt;
&lt;br /&gt;
===Full RBF===&lt;br /&gt;
&lt;br /&gt;
So-called &amp;quot;full RBF&amp;quot; unconditionally allows a transaction to replace older ones so long as it pays a sufficient fee.&lt;br /&gt;
&lt;br /&gt;
===First-seen-safe RBF===&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;first-seen-safe&amp;quot; variant only allows the replacement if an additional criteria is met:&lt;br /&gt;
the replacement transaction must pay all the same outputs as the transactions being replaced.&lt;br /&gt;
&lt;br /&gt;
This variant was created to counter the [[#Criticism|accusation that RBF enabled double spend attacks]], by preventing such attacks from making use of RBF.&lt;br /&gt;
&lt;br /&gt;
One downside of this variant, is that the [[change]] output is necessarily treated as a payment, and cannot be reduced.&lt;br /&gt;
This results in larger transaction sizes (as additional inputs must be added) and therefore fees.&lt;br /&gt;
&lt;br /&gt;
===Opt-in RBF===&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;opt-in&amp;quot; variant only allows the replacement when the transactions being replaced have explicitly signalled they allow replacement.&lt;br /&gt;
This signalling is done via the &amp;quot;sequence&amp;quot; field, and defined by [https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki BIP 125].&lt;br /&gt;
&lt;br /&gt;
One downside of this variant is that users must know in advance when they may wish to replace a transaction.&lt;br /&gt;
As a result, opt-in RBF is often used as a default even when it might otherwise not be needed.&lt;br /&gt;
&lt;br /&gt;
===Delayed RBF===&lt;br /&gt;
&lt;br /&gt;
Delayed RBF is a variant which allows transactions to be replaced unconditionally, but only after a given number of blocks have been mined since the replaced transactions were first seen by the node.&lt;br /&gt;
&lt;br /&gt;
==Criticism==&lt;br /&gt;
&lt;br /&gt;
Some people believe transaction replacement harms Bitcoin by enabling double spend attacks, where an attacker sends bitcoins, but then replaces that transaction with one taking them back.&lt;br /&gt;
&lt;br /&gt;
However, this criticism does not hold up: double spend attacks are entirely possible without RBF.&lt;/div&gt;</summary>
		<author><name>Luke-jr</name></author>
	</entry>
</feed>