Mythbusting: 10-minute confirmation time makes Bitcoin unsuitable as a 'cash' method of payment
(Article also available in Spanish)
Bitcoin Core (BTC) supporters say that Bitcoin isn't meant for buying coffee. They argue Bitcoin's purpose is to be a store of value, not a currency. Digital gold, they say, not digital cash.
Bitcoin Cash (BCH) supporters, on the other hand, believe Bitcoin is meant to be used as a medium of exchange, as well as a store of value. BCH proponents want their currency to be used to pay for coffee, for meals, for taxi rides, and anything else you can imagine.
So why the difference in opinion?
In order to answer this question properly, we must explain some of the technical differences between BTC and BCH. On August 1, 2017, the Bitcoin network forked and gave birth to Bitcoin Cash. This means that both BTC and BCH share the same identical transaction history from the genesis block to block height 478557, but any transactions made after that are not shared between the two networks . The below diagram is a good outline of the major forks that have happened over the years:
In addition to having different transaction sets after August 2017, the real main difference between BTC and BCH is that while BTC maintained its 1 MB block size limit, BCH increased this limit from 1 MB to 8 MB initially, and then to 32 MB, which is where it currently stands.
So why is block size so important? The way Bitcoin works is that when transactions are first broadcast to the network, they remain "unconfirmed" and sit in a kind of "waiting area" called the mempool until they get included in a mined block. Only after they are included in a block do they become "confirmed" and thus leave the mempool. The more blocks that are mined on top of the block a transaction is included in, the more unlikely it is that the transaction can be reversed. This is why exchanges typically require several "confirmations" before they credit you with your Bitcoin.
Since BTC has smaller blocks, and for the moment, more transactions, there might not be enough space in the next block for all the transactions that are waiting to confirm. This means that any leftover transactions will have to wait for a block that does have space to include them. As a result, the Bitcoin Core developers created a "fee market" whereby those transactions with the highest fees would get priority over lower fee transactions. They implemented new software known as Replace By Fee (RBF). This way, if you send a BTC transaction during a period of heavy network traffic, and the transaction fails to confirm, you can send the same coins in another transaction but with a higher fee hoping it will get into a block faster.
Unfortunately, RBF comes with a fatal flaw that essentially kills BTC's use case as cash. This is because RBF makes it easy for people to perform what's called a double-spend on the BTC network. Let's say you're in a cafe and order coffee. You make a transaction, which gets detected by the point of sale system, and you're immediately handed your drink. Then once you leave the store, you send a new transaction using the same coins but with a higher fee, not to the cafe's wallet address but to one you yourself control. Due to RBF, the higher fee transaction is the one that gets included in the next block, and the original lower fee transaction gets dropped altogether. The cafe never receives the funds, and you get to keep your coffee. This is what's known as a double-spend. Watch the video below to see how easily this can be exploited on BTC:
As you have just witnessed, due to the activation of RBF, BTC is no longer suitable as a cash method of payment. An attacker could easily double-spend a merchant virtually at will. If you're a merchant accepting BTC, it would be wise to wait for at least one confirmation to make sure your funds are secured, though of course no one is willing to sit in a store for ten minutes (or more) just waiting for a payment to go through.
But there's good news. Bitcoin Cash preserves Bitcoin's use case as cash because BCH does not have RBF. Instead, the network follows the "first seen" rule where miners accept the first transaction they see as opposed to the transaction with the highest fee. This means that trying to successfully perform a double-spend on the BCH network is significantly more difficult. Merchants can accept transactions that have not yet been confirmed in a block relatively safely as they don't have to worry about customers leaving the store and making a higher-fee transaction to replace the one they just made. Transactions that have still not been confirmed are known as zero-confirmation transactions (0-conf). With 0-conf enabled, users can send and receive BCH instantly without having to wait for the transaction to be confirmed in a block.
But wait, what about the stats on doublespend.cash? Good question.
Technically speaking, it is still possible to perform a double-spend on BCH. It's just much more difficult. You'd have to send two transactions at virtually the same time and hope that the fraudulent transaction ends up being the one that gets confirmed. But if the attempted double-spend transaction is sent even a couple of seconds after the original, the chances of it being included in a block drop dramatically due to the first transaction having likely already propagated throughout the network.
Here is a tweet from the creator of doublespend.cash that states that when a double-spend attempt is not broadcast simultaneously, the chances of success were only 1 out of 3992.
Therefore, a merchant's point of sale system only has to wait a couple of seconds to check the network and insure another transaction using the same coins wasn't broadcast subsequently. If another transaction is seen, they can simply decline the sale. If you're selling $5 cups of coffee, are you willing to risk that a bad actor has a 1 out of 4,000 (.025%) chance of defrauding you? Assuming most of your customers are regular people not trying to scam you with highly technical software, the likelihood of getting cheated is going to be orders of magnitude less than .025%.
Perhaps this is not what you wanted to hear. Perhaps what you wanted to hear is that 0-conf on BCH is absolutely safe, but the reality is that you can never be 100% sure that any transaction is safe. Even with confirmed transactions, it is theoretically possible that the network can be rolled back, undoing previously mined blocks. Therefore, the real question is how much risk are you willing to accept in your business? If you're trying to sell a house for $1M, it's probably a good idea to wait for a number of confirmations before finalizing the sale. But if you're talking about selling cups of coffee, instant 0-conf transactions should pose no risk.
With that said, the BCH protocol developers continue to work on ways to improve 0-conf security so that in the future, the risk of accepting unconfirmed payments should be even lower.
In summary, while the 10-minute confirmation time might make BTC unsuitable as a cash method of payment, the same rules don't apply to BCH, which was created to be used as cash for everyday payments, as a store of value, and one day, as a unit of account.
Thanks for reading.
Thank you to the folks in the Coinspice telegram channel for helping me answer some of my questions about 0-conf and double-spending, as well as the illustrious Jonald Fyookball who was generous enough to offer to read my submission to make sure there were no glaring mistakes.
...and you will also help the author collect more tips.
Thanks! I'll have a good read through in a short while and update this comment with suggestions if I come up with any.
Meanwhile, what's the SLP address that you'd want tokens delivered to?