Further Reading

So this is it. Here we are. The community is divided and Bitcoin is forking: both the software and, perhaps, the blockchain, too. The two sides of the split are Bitcoin Core and a slight variant of the same program, called Bitcoin XT. As of August 15, 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.

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 [blockchain] 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 blockchain 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 has become clear that a small group of people has 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 that 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 blockchain but needs only fairly trivial upgrades 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 has 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 blockchain 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 “incentivize” (i.e. force) the Bitcoin community to switch to something different, something more in line with their personal technical tastes.

Why limit the blockchain?

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 recognize 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 I have written articles analyzing 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 rebuttals to Gavin’s writings, but there isn’t one.

To summarize a long and exhausting debate, the objections fall into a few different groups:

If Bitcoin breaks we’ll be incentivized to make something better.

The limit should be raised, but not yet (actual time left unspecified).

If Bitcoin scales up, it might become less decentralized and then it wouldn’t be Bitcoin any more.

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 that 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.[1] 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 “decentralized” 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 the 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 seven 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.

—Satoshi Nakamoto, July 2010

The founder of the project gave a clear answer to this question — YES.

We have been working on this plan ever since. To try to 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 blockchain as part of the founding vision. Not try to convert Bitcoin into one by exploiting the casual nature of an old, quick kludge.

Indecision making

Why can this dispute not be resolved in some more civilized manner than an outright split?

Put simply, the decision-making process in Bitcoin Core is 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.

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 has 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.

Gavin stands more or less alone in the Bitcoin Core technical community on this. That there 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 decentralization 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 upgrades to the new version and produces a larger than 1mb block, the minority would reject it and be put onto a parallel blockchain. To get back in sync with the rest of the network they would then have to adopt the fork, clearly resolving the system in favor. If the majority never upgrades, 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 five 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 favor 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.