A debate is going on right now about how to scale bitcoin.

Most of the debate so far has focused on written proposals, conferences, signed letters, and Twitter name calling, but let us not forget that bitcoin already has a built in upgrade mechanism with an elegant design. If a majority of bitcoin miners “vote” for a particular upgrade then by definition this is the new version of bitcoin. The number of votes each miner gets is proportional to the amount of computational power they are adding to the network (so votes can’t be faked). These votes can happen at any time and you can watch them slowly changing in real time.

To me, this is one of the most brilliant features of bitcoin. It ensures that bitcoin can evolve over time and that it can’t be controlled or encumbered by any one group. (If you compare this to how other protocols like HTTP or IP have progressed, it feels like a vast improvement).

Some people seem to have forgotten that this mechanism exists, preferring to resort to design by committee and endless debate. Luckily we’ve just recently seen some forks of bitcoin come on the scene that people can start to experiment with and vote on (if you’re a bitcoin miner).

What we’re witnessing right now is an election in the bitcoin space, and like all elections (the U.S. presidential race being one prime example) things can get a bit heated even though they are part of a healthy process.

Despite the drama, I think bitcoin’s upgrade mechanism is working and we should embrace voting on hard forks (instead of waiting for consensus around the current bitcoin core). Let’s take a look at why.

Isn’t a divided community a bad thing for bitcoin?

No. Would it be better if a country had only one political party? If there was only one smartphone manufacturer?

Competition is a huge driver of progress.

We elect a president every four years in the U.S. Would it be better if one stayed in power forever and we had to try to change their mind about every issue that was important to us?

If politics isn’t a good example for you, then think about free markets. The competing forks we’re seeing come up in bitcoin are much like competing products we can choose from (whether it is Android vs iOS, Tesla vs BMW, or Italian restaurants in your home town). Each bitcoin fork is like a small company competing for your business (with it’s own team, product, CEO, and track record). Instead of voting with your dollars, the miners will be voting with their computational power.

Seeing competing forks emerge in bitcoin is great for the health of the ecosystem. And just like in free markets, even if a competitor doesn’t succeed in taking a customer away from the incumbent, often just a credible threat of competition is enough to make the incumbent improve.

But hard forks are dangerous — won’t they split bitcoin in two and cause people to lose bitcoin?

I don’t think so.

It’s true that there is some overhead to having a hard fork (a number of companies and individuals will have to upgrade their backend software) so we probably shouldn’t have hard forks every month. But if they happened every few years (again, the political election analogy) then this would probably be a good thing overall.

Many of the recent proposals are designed in a way where each mined block has a vote attached to it, but nothing changes until a super-majority of votes are reached. This makes it possible for wallet providers (or other bitcoin service providers) to upgrade at their convenience and things will switch over automatically when a majority is reached. It is actually quite convenient.

I have yet to see a fork that would “destroy” bitcoin or prevent bitcoin from being used on another fork, so I think this is largely unfounded (certainly any fork with this property would be very unlikely to win the required votes).

The truth is that most end users would never notice a hard fork happening because the provider of their software would handle the upgrade for them in the background.

It’s also unlikely for hashing power to be substantially divided across competing forks for very long. Once a competing fork captured 51% or more of hashing power, I think the rest of the miners would flee the losing fork. This would probably happen in a matter of hours, not days or weeks. Miners may be split in terms of the vote they are attaching to each block, but their hashing power will not be for the simple reason that miners won’t get the block reward unless their blocks end up on the longest chain.

In this way, bitcoin will be a bit different than Android vs iOS. You will see the vast majority of hashing power on a single fork, even if miners are split on votes.

It’s remarkable that in bitcoin, of all places, some people are hesitant to embrace free market competition (hard forks) in favor of a centrally planned committee. If you are in favor of decentralization, you should be in favor of competing hard forks in bitcoin. They are the best mechanism we have to ensure that bitcoin continues to evolve, and can’t be controlled or encumbered by any one group.

Shouldn’t there be broad consensus before making big changes?

Yes, and no.

Let’s compare the various bitcoin forks to companies competing for your business again. Inside companies, many changes are widely agreed upon (for example, the next iPhone should have a faster processor) but not all decisions are so easy (should we make the next iPhone thinner or give it more battery life?).

When a team is divided on an issue, things can reach a stalemate and forward progress stops. Should the company stop work until everyone is in agreement? Of course not. Some decisions will never get full agreement (some will never even get 50% if there are 3 or more options). This is why companies have a chain of command, with various decision makers at different levels (all the way up to a CEO) — to get things unstuck. If your company stopped making progress any time there was a disagreement, you’d quickly get beaten by more decisive competitors.

It turns out that it’s often better to make any decision (even the wrong one) in business instead of no decision at all. You may never know the right solution until you try one. Action produces information. Or as General George S. Patton said: “A good plan violently executed today is better than a perfect plan implemented tomorrow.”

This is also why the IETF (the standards body that works on internet protocols like TCP/IP) has a motto of “rough consensus, working code”.

They understood the value of moving quickly, since 100% of people rarely agree on anything. This was probably even more important for them, since they didn’t have a built in voting mechanism like bitcoin.

Should we stick with bitcoin core?

We certainly can. They are one of the forks we can vote on. I think the bitcoin core team is made up of very talented individuals (many of them smarter than I) who are truly dedicated to bitcoin. We would be worse off if any of them left.

My goal here is not to offer any opinion for or against the current bitcoin core team. It is just to say that the idea of competing forks in bitcoin is, on the whole, a good thing.

The team behind each fork is just as important as the changes they are proposing, since I think block size will be just one of many changes that the right team (and leader) will have to decide over the years.

We should be more concerned with voting on the right team and decision making framework than the hot button issue of today.

What if miners don’t want to vote?

My understanding from the Scaling Bitcoin conference (where Charlie Lee from Coinbase attended) was that many miners expressed a desire to not have to vote.

I was a bit surprised to hear about this more passive approach, since in my view it is the miners who are essential to bitcoin’s election process. Many would love to have a vote on the matter. How could the miners give up their vote?

I’m guessing the root of this could be a desire not to rock the boat, or hurt the price of bitcoin. There are two counteracting forces that are being balanced here: (1) a hard fork will likely be misinterpreted in the media as a controversy or crisis and push the price of bitcoin down in the short term and (2) finding a way for bitcoin to scale and approach Paypal or Visa transaction levels will push the bitcoin price up long term.

Miners are caught in a bind over which is the greater risk (or may have some other aversion to the process I’m not aware of).

It’s worth nothing that miners are voting whether they want to or not right now, just by choosing which version of the software they run. Every time a block is mined it has a label attached to it voting for a particular version of the software.

I’d like to propose a new way to think about measuring votes where only explicit votes are counted. Right now, default blocks are being counted as a vote for bitcoin core, but it could be that miners haven’t had a chance to upgrade or they don’t want to vote at all (as they’ve stated).

We should give miners the option of making an explicit vote for bitcoin core if they want it, or a way to abstain and not vote at all.

Some people have asked whether bitcoin needs a governance model. To this I say we already have one. I think competing forks with voting based on hashing power is a brilliant innovation that matches well with bitcoin’s ideology. We shouldn’t need to use this all the time, but it is a valuable tool that ensure bitcoin’s future. Voting will serve us far better than endless discussion hoping for consensus. Once the world sees that this elegant feature of bitcoin is a strength, not a weakness, it will help the bitcoin price grow over time.

Conclusion

It will be exciting to see progress in bitcoin as these elections happen. I think over time, people will start to become less concerned with the idea of hard forks, realizing that they are a healthy part of bitcoin when used sparingly.

My hope is that in the coming months of 2016 we’ll see an increased number of miners vote for a proposal that is then implemented. Then we can move on other potential upgrades — the block size will be the first of many.

You can follow the election here and here to see how different forks are doing (either in terms of nodes run, or blocks mined which is even stronger). Hopefully we’ll be able to see an explicit vote attached to each block in the future.

Follow the election in real time.

See also: The Great Block Size Debate.

Update: I’ve changed my views on how voting works a bit. Both miners and other actors in the ecosystem have a vote. It’s more complicated than “just miners”. Thanks!