My Thoughts On Opt-In Replace-by-Fee
When I read about Todd's "opt-in" replace-by-fee, my initial thought was that it was harmless because it was optional. This morning, I think it will do damage to Bitcoin's reputation as a payment system. Here's how...
Firstly, it's important to understand what the "opt-in" means. The "opt-in" isn't on a node-by-node basic; it's on a transaction-by-transaction basis. What this means is that if an attacker "opts-in" on a payment to a vendor, and later tries to double spend that payment, that all the nodes and miners running Blockstream's implementation of the protocol will work to facilitate the double spend attack.
So why will this cause problems? There are several ways:
1. Local Bitcoins
Core has just made it very easy for scammers to operate on Local Bitcoins: the scammer will simply trade bitcoins for cash and then double spend it a bit later. The newbie buying the coins won't understand that "since this TX was flagged for double-spending, he should have waited for a confirmation." Instead of double-spending being a low-probabiliy attack that required a knowledgable person to even attempt, Core is making it easy and reliable for your average run-of-the-mill scammer.
The idea that Bitcoin now has a payment type to make double-spending easier will not make sense to newbies. In fact, it makes no sense to me! We can unstick stuck transactions with child-pays-for-parent, after all.
2. Merchants Running Custom Payment Systems
The same problem will happen at merchants running their own payment systems: many won't get around to upgrading to detect these transactions (they might not even realize they need to). After they get scammed a few times, they will be more reluctant to accept Bitcoin at all. Explaining to them that "well you should have noted that the transaction was double-spendable" would just seem ridiculous: "you're telling me that Bitcoin now facilitates double spending!?"
3. Extra Work for Payment Processors
Payment processors like Bitpay will get around to making sure they can detect the double-spendable transactions. However, this means they'll need to put engineers on the job and take them off of other projects. In other words, Core has effectively forced these payment processors to spend more money to support a "feature" that there was no demand for anyways.
The Good News
There is a silver lining to this! Once industry wraps their heads around how silly this "opt-in RBF" is, then I think we'll see more backlash. Perhaps this will be the proverbial straw that broke Core's back, pushing people into XT, btcd, Unlimited and other clients that don't support any form of RBF.
Why Did Core Add "Opt-in" Replace By Fee?
My hunch is that Blockstream already realized that this would cause damage to Bitcoin's reputation as a payment system, and that by selling it as "optional" they could allow the damage to occur without taking the blame ("it was the free market at work!"). When the problems I described above start to happen, it will give them more ammunition to say "We told you we need Lightning Network because Bitcoin isn't reliable as a payment network!"
Posted as comment: