A tale of differing visions
So this is it. Here we are. The community is divided and Bitcoin is forking: both the software and, perhaps, the block chain too. The two sides of the split are Bitcoin Core and a slight variant of the same program, called Bitcoin XT. As of August 15th, there is now a full release available.
Such a fork has never happened before. I want to explain things from the perspective of the Bitcoin XT developers: let it not be said there was insufficient communication.
Bitcoin forking is a topic that may interest many people, so this article is meant for a general audience. It doesn’t assume previous knowledge of the debate.
The founding vision for Bitcoin was carefully laid out by Satoshi, and has always been crystal clear. This dispute is about growth. In 2008 he responded to the first question ever asked about Bitcoin’s design with a simple statement:
Visa processed 37 billion transactions in FY2008, or an average of 100 million transactions per day. That many transactions would take 100GB of bandwidth, or the size of 12 DVD or 2 HD quality movies, or about $18 worth of bandwidth at current prices.
If the network were to get that big, it would take several years, and by then, sending 2 HD movies over the Internet would probably not seem like a big deal.
He was in many ways more blasé about scaling Bitcoin up than any of us have ever been. He planned for Bitcoin to become popular right from the start, and knew that success would change how people used his system. In 2010 he said this:
It would be nice to keep the [block chain] files small as long as we can.
The eventual solution will be to not care how big it gets.
But for now, while it’s still small, it’s nice to keep it small so new users can get going faster. When I eventually implement client-only mode, that won’t matter much anymore.
In 2011 I fleshed out Satoshi’s scaling intuitions with a series of calculations: what if Bitcoin became so popular it replaced VISA completely? The answer was that his plan is credible — you’d never need more than a single computer, even with such a large amount of traffic. I also implemented the mode he talked about, as he left before finishing the work.
Satoshi’s plan brought us all together. It changed the lives of hundreds of thousands of us across the globe. Some of us quit our jobs, others devoted their spare time to the project, still others founded companies and even moved across the world. It’s the idea of ordinary people paying each other via a block chain that created and united this global community.
That’s the vision I signed up for. That’s the vision Gavin Andresen signed up for. That’s the vision so many developers and startup founders and evangelists and users around the world signed up for.
That vision is now in jeopardy. In recent months it’s become clear that a small group of people have a radically different plan for Bitcoin. These people have never really been comfortable with Satoshi’s intentions because they fear success — what if technology never improved, what if people couldn’t run Bitcoin on their home computers any more? Would that not somehow make Bitcoin less peer-to-peer, and more like banking? What if people start to rely on Bitcoin even though it’s imperfect?
So now Satoshi is gone they want to make drastic changes — networks of payment routing hubs, sharp rises in fees, ending support for mobile P2P wallets, giving up on unconfirmed transactions, and many other things that never appeared in any of our project’s founding documents.
The so-called “Lightning network” that is being pushed as an alternative to Satoshi’s design does not exist. The paper describing it was only published earlier this year. If implemented, it would represent a vast departure from the Bitcoin we all know and love. To pick just one difference amongst many, Bitcoin addresses wouldn’t work. What they’d be replaced with has not been worked out (because nobody knows). There are many other surprising gotchas, which I published an article about. It’s deeply unclear that whatever is finally produced would be better than the Bitcoin we have now.
What happened to the free market?
In theory, none of this should be a problem. The Lightning Network builds on top of the block chain but needs only fairly trivial upgrades to it for best functioning. So people who would like to explore this direction are free to do so. If what they built worked better than plain vanilla Bitcoin then the market should prefer payments being made that way, and if so … fair play to them! Bitcoin’s current design is unlikely to be the last word in making payments. It’s reasonable to think that one day it will be outcompeted or augmented by something else.
But the system we have today works. It has an ecosystem, it has developers. It has exchanges and wallets and people buying and selling and ATMs and books and apps and conferences and a large base of people who have learned how it works.
Would people decide to migrate to a radically different system, if given a free choice?
We don’t know, and the people pushing for these things don’t want to let the market decide. This is what’s gone wrong.
A long time ago, Satoshi put in place a temporary kludge: he limited the size of each block to one megabyte. He did this in order to keep the block chain small in the early days, until what we now call SPV wallets were built (‘client only mode’). As seen in the quote above, it was never meant to be permanent and he talked about phasing it out when the time came. In the end it wasn’t needed — I wrote the first SPV implementation in 2011 and with my esteemed colleague Andreas Schildbach, together we built the first and still most popular Android wallet. Since then SPV wallets have been made for every platform. So Satoshi’s reason for the temporary limit has been resolved a long time ago.
As Bitcoin has grown, so have the blocks. Reasonable traffic projections indicate that as Bitcoin spreads via word of mouth, we will reach the limit of the current system some time next year, or by 2017 at the absolute latest. And another bubble or press cycle could push us over the limit before even that. The result might not be pretty.
So it is now time to raise the limit, or remove it entirely. That was always the plan. This is where the problem starts: those who don’t want to see Bitcoin scale up as Satoshi intended have decided to stall the process of doing so. They see a golden, one-time opportunity to forcibly divert Bitcoin from its intended path and onto a wildly different technical trajectory. They don’t know exactly what the alternative design will be, and certainly haven’t built it — but that doesn’t matter. They think that by blocking the blockchain’s growth they can “incentivise” (i.e. force) the Bitcoin community to switch to something different, something more in line with their personal technical tastes.
Why limit the block chain?
So far I have not elaborated much on these people’s arguments, or who they are. I thought long and hard about naming names in this article, but in the end it seemed unproductive. Those who care enough to follow this drama already know, and those who don’t wouldn’t recognise the people involved anyway.
Suffice it to say they are a handful of people who either have commit access to the Bitcoin Core source repository, work for people who do, people who have been persuaded by their arguments, and a few others who arrived at similar conclusions on their own.
So let us instead discuss those arguments. There have been many. As each one came up, Gavin and myself have written articles analysing them and rebutting them. Sometimes the answers were common sense, other times they were deeper and required more work, like doing network simulations.
The best repository to learn about these arguments is Gavin’s blog. I wish I could link you to a similar collection of rebuttal’s to Gavin’s writings, but there isn’t one.
To summarise a long and exhausting debate, the objections fall into a few different groups:
- If Bitcoin breaks we’ll be incentivised to make something better.
- The limit should be raised, but not yet (actual time left unspecified).
- If Bitcoin scales up, it might become less decentralised and then it wouldn’t be Bitcoin anymore.
There are others: if your favourite objection isn’t listed above, go read Gavin’s blog to find it.
The first point might be true one day — it’s tough to compare Bitcoin to theoretical systems which exist only on paper. But nobody who looked at any alternative designs on the table think they they could be implemented within the 12 months we probably have before the Bitcoin network runs out of capacity (example, see last paragraph, another example) ….. even assuming they were better. It is an example of the Nirvana Fallacy:
The nirvana fallacy is a name given to the informal fallacy of comparing actual things with unrealistic, idealized alternatives. It can also refer to the tendency to assume that there is a perfect solution to a particular problem. A closely related concept is the perfect solution fallacy.
By creating a false dichotomy that presents one option which is obviously advantageous — while at the same time being completely implausible — a person using the nirvana fallacy can attack any opposing idea because it is imperfect. Under this fallacy, the choice is not between real world solutions; it is, rather, a choice between one realistic achievable possibility and another unrealistic solution that could in some way be “better”.
The second objection is too vague to answer; there are credible reasons to believe that a full upgrade of every Bitcoin node might take a year, and actually running out of capacity would cause serious disruption. We should really have started before now. There are two people on the bitcoin-development mailing list with professional capacity planning experience and both think the process must start right now. Demanding it be delayed until some unspecified future date is not sound engineering.
The final point is the most troublesome and heated by far. It is based in two assumptions:
- If Bitcoin can grow, it will grow, and it will grow faster than technological progress reduces costs.
- A Bitcoin that is tiny but in some abstract sense more “decentralised” is better than a Bitcoin that is a large global success.
It would be great if Bitcoin was so compelling that demand for it was infinite: I could just stop improving my software and wait for the rising price to make me rich. Back here in reality Bitcoin exists in a competitive marketplace. Growth is not a god-given right. Every user we win takes effort, every person persuaded takes time. Bitcoin is currently growing, but only at a gentle pace. I wish I could confidently say the cost of running a full Bitcoin node will go up in future: that would imply our success is outstripping the combined efforts of the entire hardware industry. That industry is astonishing: in 2007 the iPhone launched to the world, it cost $500. Just 7 years later the Forme P9 smartphone launched for $30. It matches every feature the iPhone had and then goes significantly beyond.
With the second assumption, we reach the hard core of this debate: Should Bitcoin grow, even if the network changes its structure as a result?
The current system where every user is a network node is not the intended configuration for large scale. That would be like every Usenet user runs their own NNTP server. The design supports letting users just be users.
The founder of the project gave a clear answer to this question — YES
We have been working on this plan ever since. To try and change that answer to “no” not only violates the Bitcoin social contract, but goes against the wishes of many, many people in the Bitcoin community.
Those who really believe that an über-niche currency is better should create an alt coin with a limited size block chain as part of the founding vision. Not try and convert Bitcoin into one by exploiting the casual nature of an old, quick kludge.
Why can this dispute not be resolved in some more civilised manner than an outright split?
Put simply, the decision making process in Bitcoin Core has broken.
In theory, like almost all open source projects, Core has a “maintainer”. The job of a maintainer is to shepherd the project and make decisions about what goes in and what doesn’t. The maintainer is the boss. A good maintainer gathers feedback, weighs arguments and then makes decisions. But in the case of Bitcoin Core the block size debate has been allowed to drag on for years.
The problem is that any change, no matter how obvious, can be nixed entirely if it becomes “controversial”, meaning another person with commit access objects. As there are five committers and many other non-committers who can also make changes “controversial” this is a recipe for deadlock. The fact that the block size was never meant to be permanent has ceased to matter: the fact that removing it is debated, is, by itself, enough to ensure it will not happen. Like a committee with no chairman, the meeting never ends. To quote the committer who has pushed hardest for stasis, “Bitcoin needs a leader like a fish needs a bicycle”.
What about everyone else?
Compounding this problem is an absolute disinterest in listening to the wider community.
Raising the block size is supported by, amongst others:
- The developers of the most popular wallets on iOS, Android and one of the most popular web wallets. Between them they have served millions of users.
- Several of the biggest Bitcoin exchanges.
- The two biggest payment processors, which between them have most of the market.
- Several major mining pools, including all the Chinese pools.
- Two of the five Bitcoin Core committers (Gavin and Jeff)
- User polling shows about 75–80% support from people in online forums.
This list is far from complete. Many other key players in the ecosystem haven’t commented publicly, but have expressed support to Gavin and myself in private.
So you can see that this isn’t some strange campaign of conquest by Gavin and myself. If we weren’t preparing for this change, others would.
How did those pushing for 1mb blocks respond to all these people?
They didn’t, because they never asked for their views at all. To quote one influential member of the Bitcoin Core community:
As an aside, a risk with using companies as a sounding board, is that
you can get a misleading sense of consensus.
Companies represent many of Bitcoin’s most passionate, devoted and technical people. They provide critical infrastructure. Yet the views of the people who build them are considered “misleading to the sense of consensus”.
What about wallet developers? They are the people most exposed to the needs of day to day users.
Never asked. When they spoke up anyway, it made no difference; their views are considered irrelevant.
That isn’t surprising: this group measures the relevance of someone’s opinions by how many commits to Core they have. It’s become clearer and clearer that the “consensus” that’s so often talked about in the Bitcoin Core community really means the views of a tiny handful of people, regardless of what anyone else in the wider community might think, how much work they have done, or how many users their products have.
Put another way, “developer consensus” is marketing, wool pulled over the eyes of Bitcoin users to blind them from the truth: just two or three people acting in concert can break Bitcoin in whatever way they see fit.
Do they even recognise that a large number of critical people disagree? No. Quoting one of the committers again:
Gavin stands more or less alone in the Bitcoin Core technical community on this. That there are are many of people at my company who are concerned about the impact on the survivability of Bitcoin as a decenteralized [sic] system is a product of the fact that these concerns are the overwhelming majority in the technical community
This can only be true if you classify vast numbers of the engineers building the Bitcoin ecosystem as “non technical”.
How can the dispute be resolved?
Clearly, there is a serious problem here. Communication has broken down, both sides feel they are vigorously defending decentralisation and the One True Bitcoin Vision. The community is divided.
This leaves one last mechanism for resolving the dispute. We can make a modified version of the software, and put it to a vote of miners via the usual chain fork logic used for upgrades. If a majority upgrade to the new version and produce a larger than 1mb block, the minority would reject it and be put onto a parallel block chain. To get back in sync with the rest of the network they would then have to adopt the fork, clearly resolving the system in favour. If the majority never upgrade, the fork would never happen and the 1mb limit would be hit.
It would seem like all participants should support such a move: clearly, consensus cannot be reached via the usual mechanisms and thus putting it to something resembling a vote should look like a good way to make progress.
Here we come to the last and most fatal source of disagreement.
Of the 5 Bitcoin Core committers, Gavin and Jeff support a fork but the other three appear to believe that any controversial hard fork is unthinkable, madness, reckless, should never ever happen and doing it would seriously harm Bitcoin, perhaps even fatally. If any of them are in favour of resolving via a fork, I haven’t seen them express that anywhere.
We strongly disagree with this assessment. We don’t think the sky will fall if the chain forks. We think people on the small-blocks side of the chain will upgrade and continue on the bigger-blocks side. There will be plenty of time for them to know about the change and prepare. But of course, this has made no difference to the belief of the Bitcoin Core developers who dislike hard forks. They are steadfastly against.
In short, they believe that the only mechanism that Bitcoin has to keep them in check should never be used.
I don’t think they really mean it to come across this way, but it does. Their view is that there shouldn’t be any alternative to their decisions. That anything they object to, for whatever reason, is killed forever … and that Bitcoin is thus their toy to do with as they please.
This state of affairs cannot go on. The Bitcoin Core project has shown it cannot reform and so it must be abandoned.
That is why Bitcoin has forked.
We hope everyone understands.