It’s hot in Israel in August, but not nearly as hot as the global debate surrounding the release of Bitcoin-XT and the contentious hard fork that would ensue if enough people adopt it. It seems that both proponents and opponents of Bitcoin-XT dread the possibility of the network splitting in two, and focus on making sure everyone switches to their side to prevent this from happening. Contrary to this post’s title, I don’t actually like the prospect of a fork; but I do claim that having two networks coexist side-by-side is a real possibility, that it is not the end of the world, and that we should spend more energy on preparing for this contingency.
Let’s start with the feasibility of this. The ways this could unfold, in decreasing order of my estimate for their likelihood, are:
- Bitcoin-XT will not reach the threshold required to actually diverge from the current Bitcoin on the blockchain level within a reasonable time, and we will meet again for round two of the debate.
- Bitcoin-XT will form a separate blockchain and network in or near January 2016.
- A compromise will be reached which will make Bitcoin-XT obsolete as a separate initiative.
- Bitcoin users will, virtually unanimously, switch to Bitcoin-XT.
Option #4 was included for completeness, but in my opinion is pretty much impossible. There is too much disagreement about the technical issues, the change in governance, and the bold forking attempt for everyone to just drop everything and tag along. The prospects for compromise (#3) look grim at the moment, the gap in philosophies seems too large to bridge. #1 is highly likely – Bitcoin-XT has support, but I don’t think enough to pass the 75% threshold. But if it does have enough… We find ourselves in scenario #2 – the unprecedented event of a significant cryptocurrency having its network, blockchain and community split in two.
It’s (relatively) safe
Is it bad? Well, yeah. First, Vires in Numeris – Bitcoin is subject to strong network effects, and two networks of roughly half the size are not as strong as one big network. Second, there’s bound to be confusion all around, with two separate currencies each claiming to be the one true Bitcoin. Third, people will think that it is bad (for both real and imagined reasons) and lose faith, stunting Bitcoin’s growth.
How bad? Let’s analyze the short-term effects from the point of view of four types of Bitcoin users:
- The merchant that accepts Bitcoin payments. He doesn’t have to do anything about this, at all. He teams up with his favorite payment processor, as he did before, and lets the processor, and the Bitcoin enthusiast that will pay him, work out the details.
- The Bitcoin investor. If she bought bitcoins before the fork, she needn’t do anything at all. If she bought 1000 bitcoins, she will now have 1000 coins on the Bitcoin core network and 1000 coins on the Bitcoin-XT network. Whether the currency that will survive is one, the other, or both, her investment is safe. If she considers investing after the fork, she should probably buy both, or maybe even an ETF which tracks their sum.
- The Bitcoin enthusiast. He will probably have to carry two Bitcoin wallets around (or a special wallet that separately manages funds for both networks), and whenever he wants to pay with Bitcoin, he may have to figure out which version of Bitcoin the recipient expects. That’s extra work and trouble. But it’s okay, he can deal with it. He’s an enthusiast.
- The Bitcoin miner. To a first order approximation, mining hashrate will be distributed between the chains in proportion to the exchange rate of each coin. This will result in an equilibrium, where it is as profitable to mine on either chain. The problem is that this is not a stable equilibrium – the way Bitcoin’s difficulty retarget mechanism works means that profit-maximizing miners can hop between chains on every retarget, making the hashrate (and block intervals) oscillate wildly. Working around this is still an open problem; it will be alleviated if miners commit, in appropriate timescales, to one chain or the other; or resolved with the painful move of switching to a different hash function.
I will talk more about longer-term prospects in the section about preparing for the fork. But for now I’d like to say a few more words about confusion. Often I’m frustrated by the obscene amount of misinformation about Bitcoin that is spread around, and then I realize that… That’s not a unique problem for Bitcoin. The world is full of ignorance, misinformation, disinformation, persistent myths, propaganda, misnomers, downright confusion, and simply people who are wrong. Humanity still hasn’t figured out an efficient way to organize the world’s knowledge to be accessible and reliable. And yet earth hasn’t exploded. We get by. We study the things we truly care about, we understand meaning from context, and we make the most out of the information available to us. So I doubt making the Bitcoin ecosystem a bit more confusing will make it collapse.
This and other concerns will, of course, have a negative impact – but they’re little more than bumps on Bitcoin’s road to success, of which Bitcoin has already had plenty and will have many more.
Furthermore, a fork was in some ways inevitable. Remember that nothing like Bitcoin was ever done before. We had physical currencies, where the rules were determined by physical laws; and we had centralized currencies, where the rules were set by a predetermined, trusted (even if untrustworthy) 3rd party. But a decentralized digital currency? That’s a strange beast, and we all signed up to the notion that what keeps it intact is consensus among people. But it is presumptuous to expect that all of humanity will agree on all the rules all the time. There are differing opinions and philosophies, and when those manifest, camps will part ways. Much like living organisms, cryptocurrencies will replicate. They will compete. They will die. They will survive. They will evolve. And in so doing, they will become stronger.
And I’m not saying, of course, that it’s good that we’re forking right now. We should still try to prevent it if at all possible. But a fork is bound to happen sometime (even if for wholly unrelated reasons), so we may as well gain some experience about the process. We could learn that forks are terrible and we should never let them happen again… Or that forks are great and we should do them all the time… We could learn how to prevent or prepare for future forks, Or we may learn something else entirely. It may be more chaotic than hoping that the mere fear of a fork will keep everyone together, but it’s certainly less rigid and fragile, and more flexible.
So how should the fork unfold? Ideally, the changed version (Bitcoin-XT in this case) will have a different transaction structure for txs that take place after the blockchain split, so that transactions on one network will never be valid on the other, and vice versa. Unfortunately, I have seen no indication that such a thing exists or is planned for Bitcoin-XT (a major red mark for its developers, by the way, assuming there is nothing I missed), so things might get a bit messier. Left to their own devices, transactions might be accepted by one network, the other, or both, and it’s difficult to control which.
A prudent user will consider the currencies as separate, starting from the block where the chain splits. Each will have its own balances, its own exchange rate against other currencies, its own list of places that accept it, etc. But he will need to be careful not to send currency A, and have his transaction accidentally picked up by network B, which will result in him losing his coins B without compensation from the receiver, who never requested coins B.
To do this he will need to decouple his coins into their components. The way to do this is to get some coins generated as coinbase in a post-split block (or coins that can have some trace of those) – those will function as a collapse agent, since they are valid in only one of the networks, say A. Then he will send all his coins – both pre-split UTXOs with his savings, and the post-split collapse agent – to himself. This transaction will only be vaild in network A, so in the receiving address he will have a coin (UTXO) with the total of his balance, that is strictly of currency A. Once this transaction is confirmed, his original UTXO is collapsed into currency B, since in network A they were already spent. Then he can manage his currency with two separate wallets, knowing for certain which currency he sends at any given time.
If he stores coins in a paper wallet, he needn’t worry about it at first. He can extract and decouple the coins at any time. Waiting has the added benefit that one of the networks might die by then, meaning he can claim the coins in the only network that matters without extra effort.
Of course, all of this might be too cumbersome for typical users. Ideally, there will be exchanges and wallet services supporting both currencies which can facilitate the process. Users of these services will have a separate balance for coin A and coin B. The user can simply send coins to his deposit address for the service. The wallet will credit the user’s balance for coin A, B or both depending on which networks acknowledge the transaction. The wallet will then hold superposed coins, and will decouple them as above. When the user wishes to withdraw funds, he will separately withdraw each currency to different wallets, and the service will make to sure to send him only decoupled coins. Then, again, he can know for certain which coins he has in which wallet, and use each to pay when appropriate.
If the user has strong beliefs favoring one currency or another, he can use the exchange to sell just the other currency. He can then even use the funds to buy more of his favorite currency.
The Bitcoin URI for requesting payments should include information about which coin is expected. This will be used by merchants and so on, according to the preference of their payment services provider. The user who wishes to pay can use the information to pay with the correct wallet.
Ideally, smart wallets will be developed which hold both coins A and coins B, and when given a payment request, automatically send the correct type. For example, if we are buying a product worth $280, a bitcoin A is worth $140, and a Bitcoin B is worth $70, the merchant will display either a request for 2 bitcoins A (worth $280) or a request for 4 bitcoins B (worth $280), according to the merchant’s preference. The user will just scan it as normal and have the wallet send it. Users doesn’t really need to worry about it – it suffices to make sure he always carries around both types, assuming he’s expecting to find merchants accepting either type.
Going forward, one of two things can happen:
- One of the currencies will be significantly less popular than the other. It will see less merchants accepting it, its exchange rate will drop, and its technology will develop slowly. Users will be disillusioned by this and migrate to the other currency. Eventually it will for all intents and purposes disappear, and the popular currency will rise as the one true pretender to the Bitcoin throne.
- Both currencies will enjoy a significant following, forever (or until the heat death of the universe, or whatever). Each will have its own advantages and disadvantages, and people can freely choose between using one, the other, or both. In this case, it is not sufficient to have software and services to handle the plurality seamlessly – the name ambiguity should be resolved, and it will be prudent for the less popular currency (measured by market cap if no better metric is found) to give way, change its name, and finish its cycle of separating from the other currency.
It will be a bit messy, but we can handle it. A fork in the road is not the end of the world.