Hard fork, soft fork; Bitcoin's scalability struggles explained with Star Wars
This article was extended three times to follow the various twists of the bitcoin forking adventure. To the point it needs a freaking TOC:
- A divided galaxy: Exposition (like when the yellow text is rolling backwards)
- The Phantom Menace: Bitcoin Unlimited
- A New Hope: The UASF
- The force awakens: Segwit2x
- That Reddit theory about Jar Jar Binks being a sith, but for real this time: Bitcoin Cash
- Aftermath: Who actually won the stupid war
Original article, written on the 17th of June :
Bitcoin transaction costs have skyrocketed in the past two months. What gives? Well, it so happens that we have finally hit a major milestone. Bitcoin is so popular that we now have between 2 and 3 transactions a second. A second! That's huge ain't it? That's also very bad news. Each block on the blockchain can be no larger than one megabyte. There are only so many transactions you can fit in that much. And one new block are added to the blockchain every 10 minutes. So there's a limit to how many transactions we can have per second. And that limit is 3.
Since there are more transactions than can be verified, there's a long backlog of transaction verification. In order to skip the queue, you must offer higher transaction fees. That's why transaction fees are through the roof.
A divided galaxy
Didn't anyone see that coming? Oh, everyone did. Bitcoin's scalability problem has been the focus of many debates. There are two ways of fixing the problem, and which one we should implement has been the source of much division.
- We could make the limit on block size flexible. So the block size can increase to match the needs of the users. The code's already written, it's called "Bitcoin Unlimited".
- We could optimize the block better so that more transactions fit on it. The code's already written, it's called "Segwit", for "Segregated Witness".
Now, obviously, optimizing the block is just kicking the can down the road. We'd only be buying ourselves time. In a year or two, we'd be facing the same problems. Transaction numbers are rising pretty steadily and are unlikely to stop doing so.
Except maybe not. Ever heard of the Lightning Network? It's a new tech on top of Bitcoin that allows transactions to happen off-chain, which will have the collateral effect of rendering the block size issue moot. Prophecy has it that the Lightning Network will bring balance back in the Force, if you will.
If, for some reason, the Lightning Network doesn't deliver, it'll always be time to increase the block size.
Still, why not just shortcut to making the block bigger? Well, there are two reasons. For one:
A bigger block makes mining more difficult.
Increasing block size is equivalent to driving small miners out of business. It would concentrate power in the hands of the big server farms. "Concentrating power" is a four-letter word, as far as the maintainers of Bitcoin are concerned. They'd much rather keep the block as small as possible.
A bigger block requires a hard fork.
The larger block will simply not be compatible with the old chain. We need every miner, and every node operator to update to the new bigger-block software, which will branch off the blockchain, and everyone must recognize the new one as legitimate, and the old one as obsolete, and then only will the old one die off and the new one be the only real bitcoin blockchain. As you see, it requires a very high amount of consensus. We totally don't have consensus right now. However, we need a solution fast. Enter Bitcoin Unlimited.
Rise of the Empire
"The hell with consensus" said one Bitcoin investor. "We have a long-term solution right now: Bitcoin Unlimited, and the miners are willing to implement it. Let's hardfork already" To which the very cautious team of maintainers replied: "Who the fuck are you, and what's your agenda exactly?" You see, Bitcoin Unlimited looks a lot like a coup attempt by a lobby of big miners, when everyone else would much rather try the optimization / Lightning Network route first. So it went full-political.
The new guy, Roger Ver, managed to rally a lot of support because of two reasons: He's rich as fuck, and he owns bitcoin.com. Miners are quite happy with him because it forces their favourite solution on everyone.
The community reacted in a dividedly fashion, as befits a good consensocracy. On the one hand, no one likes the way Ver was strong-arming the decision; on the other hand, we need a solution right now. Better hardfork than nothing. And since the miners are unwilling to implement Segwit...
The threat of a contentious hard fork does seem totally overkill to solve the scalability problem. But that's the only weapon Bitcoin Unlimited has, and they seem to be willing to use it.
But then, some bugs were found in the Bitcoin Unlimited code, that resulted in some downtime and the loss of a few bitcoins. Which is just terrible, in a context where the Bitcoin maintainers have a long running tradition of releasing spotless code.
But with the backing of miners in the Outer Rim, it seemed like the galaxy was about to fall under the rule of Bitcoin Unlimited...
The Republic strikes back
...until some reckless elements in the ranks decided that, if the miners weren't going to willingly activate Segwit, we'd just have to make them. Enter the User Activated Soft Fork (UASF).
The UASF is an update for the Bitcoin node software (BIP 148) that will make the nodes blind to miners who haven't activated Segwit after the 1st of August. It is an ultimatum, basically: "To all miners: You have until the 1st of August to activate Segwit, or else our clone army will ignore you." If enough nodes ignore the segwit-resistant miners, those miners will mine on a chain that is no longer recognized as valid. Which is cypherlingo for "losing money".
Miners are typically the profit-minded kind. The UASF basically paradigm-shifts from It's less profitable to support Segwit to It's more profitable to support Segwit. If every miner is like the guys in the prisoner's dilemma, they'll activate Segwit.
But what if they don't? Well, if more than half the miners insist on mining the invalid chain, it might become valid actually, meaning we'll have two chains. Congrats, rebels! Your attempt at preventing a Bitcoin fork just caused one. However, this is a rather unlikely. The UASF has a very wide support from everyone who isn't a miner. It will happen. And when it does, it would require for a quite large majority of miners choosing to lose money to make the UASF fail. Miners are particularly averse to losing money. In particular in the context of Bitcoin Unlimited having received a separate ultimatum from the Bitcoin Exchanges (where you buy bitcoins): "If you go ahead with the hard fork, We'll list your currency not as "BTC", but as a separate new currency called "BTU".
At that point, Bitcoin Unlimited is as good as dead.
What should you do?
First of all: rejoice! You're living in a fascinating time, when you can witness the growing pains of what might very well become a building block (← see what I did here?) of the future tomorrow. And you get to vote! The community is hammering out the very tools it will shape itself with. I'm very excited, and I want you to be as well.
Then, don't panic. Like I said, whoever wins this struggle, the value of your coins is just fine. It will fluctuate for sure, because that's what Bitcoin does, but once the dust settles, everyone will see that there was nothing to worry about, and they'll want in again. What I mean is, if you sell ahead of the 1st of august, let the storm pass, and buy again after, you'll find that the price has gone up significantly. Also, speculation is for losers.
Given that UASF has support across the board, its success is a near certainty. Given the choice between fixing the stalemate and breaking Bitcoin, you'll find that most miners will go with the first option. They have more to lose than anyone else.
Get your bitcoins back home
If your bitcoins are in the cloud somewhere. Stop everything you're doing and get them home already. Haven't they told you? There's no cloud. Just other people's computer. As long as you don't have the keys to your bitcoins, you don't actually own it.
Figure out if you're running a node.
Some Bitcoin wallet are also nodes. The official Bitcoin client for example. You know you run a node if:
- Your wallet takes ages to sync up with the blockchain when you start it up and it's been a few days.
- The wallet's occupying 200 Gb on your harddrive (that's the entire blockchain you're storing, yes).
If you're your own node, kudos, you're participating in the decentralization of Bitcoin. Also, you get to participate in pointing a LOIC at the miners or not. Figure out if your wallet defaults to supporting the UASF or not, and change the config according to your wishes.
If your wallet outsources the node part, you can point it to a node-server that supports the UASF if you support it, and vice versa.
If you can't do that, just check the blog of the wallet developers to find out whether they support it. If you're using Mycelium, I did your homework for you:
If you disagree with the developers, switch to another wallet whose developers agree with you.
But, whatever you do, don't panic. No bitcoin is going to magically disappear.
Rise of the first order
It couldn't end there, could it? No it couldn't. A new thread looms over the galaxy again. I'm kind of glad. I like the Disney Star Wars. Now I can add them to this story!
But it starts with seemingly good news: The New York Agreement.
A consortium of mostly Chinese miners met up in New York in order to have an agreement that's called the New York Agreement (what's wrong with a Hong Kong Agreement, I'm not sure) to propose a defense against the UASF: Segwit2x. It is a miner-sponsored initiative that's meant to quickly adopt Segwit, and if you've been paying attention at all, you're all: WTF? right now: Miners have resisted Segwit with everything they had so far, so what gives? Well, Segwit2x is seen by the miners as a necessary compromise. They'll implement Segwit, but in exchange, they get to have a bigger block later. Remember how I said that Segwit doesn't preclude block increase? This is it.
Under the conditions of the New York Agreement, Segwit would be implemented as soon as 80% of mining power signals readiness for it. The plan is to reach that goal before August 1st. Then, when the UASF deadline comes, nothing happens because everything is already Segwit. The rebels and the republic win.
But, as soon as Segwit is implemented, the miners would get their hard fork, with a 2 MB block. Twice as big as now. Segwit2x. See.
Now, while Segwit activation is trivial and only requires 80% of the mining pool to start supporting it before it goes live, the increase to a 2 MB block still require a hard fork, that still requires everyone to be on board. What's preventing those who don't like miner-power-centralization to not jump ship when the hard fork happens? Nothing really. That's why the miners behind segwit2x are also scrambling to release an alternative Bitcoin node software that always agrees with them.
"Scrambling", "Bitcoin Node" and "Release" are clearly words that should never be in the same sentence. Miners producing the Bitcoin Node software is as bad an idea as Donald Trump writing a climate change regulation.
But, if miners do go with it, we'll have avoided the UASF, we'll have Segwit, and D Day has simply been pushed back to the day the miners try to hard fork. The miners are trying to buy time and see if they can gather enough support for a bigger block.
All in all, this is quite close to the ideal scenario I offered above. Segwit now, block size increase later if needed. The miners are only trying to get the "if needed" backspaced. We'll see about that.
A new menace
Independently to the NYA, the mother of all miner club, Bitmain, spearheaded by the above mentioned Jihan, came up with an actual weapon against the UASF. The imaginatively named UAHF, HF being of course Hard Fork.
Bitmain has pledged that, 12 hours after the UASF has activated (that's lunchtime on the 1st of august), it would just go ahead with a hard fork and basically break bitcoin.
Yeah, right. We totaly believe you Jihan. You're going to sink your own ship in order to prove a point. Let's see that happen.
With the current recent developments, it seems that the UASF will not have to trigger, since the miners will indeed implement Segwit ahead of time. Which is just great, because I would not have slept well on the night of the 31st of July. Meanwile, the tug-of-war over the block increase will resume when it's time to implement the "2x" part of "Segwit2x". If Segwit doesn't deliver, it is possible that we reach consensual hard fork, where everyone wins except small miners. If Segwit does succeed in unblocking (lol) the buildup, block increase will probably not happen.
And the UAHF? It absolutely certainly is a dud. Bitmain is bluffing, and they suck at it.
Rise of the village idiot
Will you believe it! It's D-5, Segwit2x is locked in a ready to roll out, and there a new twist.
Clearly inspired by Bitmain's saber-rattling of UAHF (which, as prophesized above, turned out to be threatening language backed by farts), another mining pool called ViaBTC has gone ahead and decided that they were unilaterally going to hard-fork Bitcoin on the 1st of August. The most hilarious is that they control 4% of the mining power, so it's a bit like Lichtenstein trying to strong-arm the EU into making their schnapps the official drink of the union. They'll call it Bitcoin Cash, and it'll have a huuuge block increase to 8MB per block, or 8 times what we have now. If they succeed, the effects would be equivalent to the contentious fork that Bitcoin Unlimited once threatened the community with, except with what army?
Now, the actually scary thing is that the fork topic is really hot right now. There hasn't been much to report of a while since we seem to have found a compromise that seems acceptable to all parties, even though it's not everyone's favorite. You know what happens when the news are hungry and there's nothing to report, right? Donald Trump, that's what. Bitcoin Cash is getting a lot more coverage than it deserves. Everyone is freaking out again over how to survive the fork, and here's me again telling you not to worry:
From the noise I'm hearing right now, it seems that miners are hedging their bets. They went with Segwit2x, because the risk that they'd lose the UASF arm wrestling match was too high to their tastes. But they understand that implementing the 2x part of Segwit2x will be another wrestling match of its own. Once we have Segwit, and if the Lightning Network delivers, we might not need to increase the block. So, in my humble opinion, Bitcoin Cash is a way for them to remind us what kind of power they lord over us. They can hard-fork the blockchain anytime they want! See, on the 1st of August, they'll do it just to say Fuck You. However, I believe they still are the risk-averse profit-oriented kind that we've been dealing with so far, and they will not go all in. Bitcoin Cash will hard-fork, but its blockchain will probably die out after a few days/weeks. And when the time comes for the real hard-fork of Segwit2x, they'll have something to point at: "Remember Bitcoin Cash. We did it once. We could do it again."
What can we do? Well, I don't like to tell people what to do with their money. But here's what I'll do. If they fork, I'll have some Bitcoin Cash. Well, I'm going to sell it.
Thanks Jar Jar.
It's one month after D day, and I'm happy to announce that I was wrong about Bitcoin Cash dying out quickly. Bitcoin Cash is still a thing, its blockchain is still being mined. Its value is above zero. So it turns out I'm not an infallible cryptomancer that can tell the future after all. That'd be way too much pressure.
'Cause, really, everything else that I had predicted actually happened.
But let's first look at what happened to Bitcoin proper.
How Bitcoin weathered the storm
Plus 80% between mid-july and mid-august. Kind of what I was expecting. Speculators doing their thing.
On the technical side of thing, Segwit has been agreed upon, lock-in was a few weeks ago (that's the point of no return), activation is tomorrow. We'll likely start feeling the effects of it some time after that. Because, right now, the transaction costs are still sky-high.
I suppose I'll have to come and add another freaking edit to this in September. But, as techie things stand right now, everything is going according to the Segwit2x plan.
The controversial "2x" bit, that calls for a hard fork to a twice-as-big block is planned for November. I don't have a prediction yet on how seamless the hardfork will be. Factors are:
- Will Segwit bring fees back down to a tolerable level?
- Will the Lightning Network come online and does multiply the network capacity millionfold while lowering fees to the point they become negligible, all that before November? (I ain't kidding, this is what's at stake here.)
- The fate of Bitcoin Cash
If Segwit does what it predicted AND if the Lightning Network does turn out to be the game changer it claims to be AND if Bitcoin Cash crashes down in flames, then it's quite likely that the community will resist a risky hard fork that's a fix for a problem we no longer have and an obvious present from the big miners to themselves. We might end up with a contentious hard fork that leaves us with yet another coin. Talking of which, how's Bitcoin Cash doing?
Bitcoin Cash' inexplicable success
Success is quite relative here. Bitcoin Cash's own vision is to be "the best money in the world", and basically replace Bitcoin. Of course, that didn't happen. The Bitcoin Cash coin is worth one tenth of a bitcoin. Meanwhile, Bitcoin remains unperturbed.
But Bitcoin Cash, somehow, refuses to wither and die, which is totally what I was expecting it to do. It's continued existence is what earns it the "success" qualifier.
I found this quite inexplicable at first, because I think I understand what money is, and I know that creating money does not give it value. If Bitcoin Cash has any sort of value, it must have taken it from somewhere. And it surely didn't take it from Bitcoin, since Bitcoin, far from losing value, has increased meteoritically. So, what?
Well, obviously, the 10 billion dollars that Bitcoin Cash is cumulatively worth comes from the fiat currencies. Bitcoin Cash is worth money because lots of people are willing to buy it with dollars and euros. Who would be dumb enough to do that? People who don't really understand what's going on, but they still want a piece of the cake because it'll make them rich. Like they read on that Buzzfeed story. Speculators.
Single bitcoin tokens are priced scary numbers. Too many zeros. They don't dig that we actually count in mB. So they wanted in on the quick ticket to Ferrari and escort, but they were put off by the perceivedly too high entry bar. Suddenly, appears something that's got "Bitcoin" in its name, and that goes for one tenth of the price. Yay, right? Right.
Those guys rushed in as soon as BCH was available to buy. Which wasn't really on the first day. Rather, as soon as big exchanges started supporting it. Check it out:
Before the clueless get-rich-quickers were able to move in, the value of BCH was locked up in the futures that even more reckless speculators had bought up, and had started to decline already.
I'm afraid we're in an Ethereum Classic situation, where Bitcoin Cash will never disappear. On the one hand, the early speculators might hang on to their coins on the off chance that it spikes up in the future. On the other hand, there will always be some morons willing to part themselves from their hard earned money in order to get "Bitcoins at one tenth of the price".
But actually using it as money? Nope. Call it a bubble that just wont burst.
Enough already with blog articles?