Skip to main content

Bitcoin Core Developer Jonas Schnelli Explains Controversial Transaction Replace-by-Fee Feature

Op-ed - Bitcoin Core Developer Jonas Schnelli Explains Controversial Transaction Replace-by-Fee Feature

Although the block size debate has been the main point of conflict within the Bitcoin community over the past year, the reality is that this conversation is more about the larger topic of scalability. Different Bitcoin users would like to see the network scale via specific methods, and the two main parties in this debate are now Bitcoin Core and Bitcoin Classic.

Along with the block size limit, the Lightning Network, and Segregated Witness, another Bitcoin feature that has been covered in controversy is Replace-by-Fee (RBF). Bitcoin Core Contributor Jonas Schnelli recently discussed this new feature, which has been implemented in Bitcoin Core 0.12, during a presentation at a Bitcoin Meetup Switzerland.

Satoshi Originally Implemented Full RBF

Schnelli started his talk by pointing out that Bitcoin creator Satoshi Nakamoto originally implemented RBF.

Although transaction replacement was disabled by Nakamoto in 2010, the commit disabling the feature came with the comment that it was only being turned off “for now.” The comment next to the code related to transaction replacement in Nakamoto’s original code reads, “Allow replacing with a newer version of the same transaction.”

Schnelli described how transaction replacement once worked on the Bitcoin network:

“It was always possible – or back then it was possible – that if you did a transaction, until that transaction ended up in a block, you could change the transaction fully by just doing something different.”

RBF Helps Avoid Transaction Delays

There are advantages to being able to replace a Bitcoin transaction with a new, updated one. For example, if a user has included a transaction fee that is too low, the ability to replace the transaction with another one containing a higher fee allows users to make sure their transactions do not get stuck with a status of “unconfirmed” for long periods of time. Users are also able to correct errors made when creating a transaction via RBF.

Jonas Schnelli noted that this functionality makes sense to him:

“This makes sense, in my opinion. If I do a payment and I find out, ‘Oh, no – wrong amount,’ or, ‘Oh, no. The fees are wrong,’ I can change it.”

0-Confirmation Doesn’t Work with RBF

The controversial aspect of RBF is that it does not work well with 0-confirmation transactions. When users are able to replace transactions before they are placed into a block, that essentially makes unconfirmed transactions much riskier. Many merchants and payment processors rely on unconfirmed transactions for real-world commerce.

Schnelli described this issue during his talk:

“0-confirmation by Satoshi’s whitepaper was always insecure, but because people have built systems on it, we have to make sure that it’s stable, that people can buy stuff instantly. I mean, you can’t wait ten minutes when you pay for a coffee; I agree.”

On the issue of the security of 0-confirmation transactions, Bitcoin Core contributor Peter Todd recently wrote a blog post where he outlined the current inability of bitcoin wallets to properly protect users against double spends.

Merchants Shouldn’t Be Afraid of RBF

Even with the security concerns often pointed out by Todd and others, it should be noted that the current version of RBF is opt-in.

Jonas Schnelli explained the optional nature of RBF during his talk at Bitcoin Meetup Switzerland:

“When you create a transaction, you can decide, ‘Should I be able to replace a transaction or not?’ If you just create transactions as you did in the past, it’s not replaceable. Nothing is broken; everything works as it was before. But now we can opt in – set the flag on that transaction – and then it gives you the chance to replace a transaction until it’s mined.”

In other words, merchants should not be vulnerable to an RBF-powered double spend because RBF transactions can be differentiated from traditional Bitcoin transactions.

As Schnelli explained during his presentation:

“Merchants can reject RBF transactions … If somebody pays you with a replace-by-fee transaction, you don’t want to accept it if it’s a 0-confirmation [transaction].”

Kyle Torpey is a freelance journalist who has been following Bitcoin since 2011. His work has been featured on VICE Motherboard, Business Insider, RT’s Keiser Report and many other media outlets. You can follow @kyletorpey on Twitter.