Bitcoin Consensus Process At Its Limit

It is now about a year into the Bitcoin “scaling” controversy, and, like many technical challenges, the possible roads forward are pretty well understood. Unfortunately, there is no consensus, and there is no referee to “make the call”, for better or worse. With news breaking every day, it is difficult to keep up.

In the wake of Mike Hearn’s noisy exit, there has been a renewed effort to push his favored approach, now labeled “Bitcoin Classic”. This push has come from some big players who need Bitcoin to keep working well, and to appear to be a viable technology. A year of bickering and reddit-caliber “argument” do not build confidence in the wider world.

At this point I have lost track of the competing proposals, several of which appear to be at least partly implemented. (IMO, this has gone beyond market based “choice”, and gone on to total chaos.)

As far as I can tell, “Bitcoin Classic” is a pretty straightforward change to the Bitcoin protocol to lift the maximum size of blocks. This increases capacity in an easily understood way, at the cost of bandwidth for processors. Worse, the change is incompatible with the running system, so there must be a “hard fork”.

The semi-official “core developers” are not on board, and have their own approach to twiddle some knobs without a hard fork. I totally, utterly get why they hate the idea of a hard fork, especially in a system that is running full time. This kind of update is one of the hardest software engineering feats there is, and is pretty much guaranteed to knock out some users in the process. Something to be avoided if at all possible.

I haven’t really groked the core dev’s “roadmap”—there doesn’t seem to be a single document describing it, and there are several variants out there—but I gather that it does a lot more than just increase the blocksize, including some controversial changes to the protocol.

At least some of the support for “Bitcoin Classic” stems from a visceral desire for a simple, one-change-at-a-time, approach. I totally, utterly get this. Distributed systems are complex. Making a lot of changes at the same time is very hard to understanad and often leads to serious unintended consequences. Something to be avoided if at all possible.

But “something” cannot be avoided. “Something” needs to be done, and done yesterday.

In a conventional organization—one that is, say, organized and has, for instance, leaders—it would be time to make a decision, and then try to mitigate the fallout as best possible. Bitcoin has not been able to do this, because the consensus model does not handle this case at all well.

One really bad outcome that hasn’t happened but appears very possible would be a split in the Bitcoin network, into two or more incompatible protocols. This would be really, really, really bad. You might need to have to have multiple bitcoin wallets, and there would be exchange rates between different flavors of Bitcoins. Yoiks!

If you are expecting me to have a solution, you won’t find it in this post.  I think Bitcoin is doomed to fragment into a bunch of partly incompatible sub networks, each with a zealous cadre of true believers.  I can’t imagine this will be successful.

I’m expecting Wall Street to get in the game with their own private blockchains and even private currency-like entities. We’ll see.



Big Miners Back Bitcoin Classic As Scaling Debate Evolves

Big Miners Back Bitcoin Classic As Scaling Debate Evolves,

Pete Rizzo,


Blockstream CEO: Bitcoin Creating ‘Toxic’ Environment for Developers,

Blockstream CEO: Bitcoin Creating ‘Toxic’ Environment for Developers

2 thoughts on “Bitcoin Consensus Process At Its Limit”

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s