Bitcoin development: who can change the core protocol?

Bitcoin has solved the byzantine general problem for computer science, allowing for a trustless payment system with no double spending. But how trustless is it really, if there is a group of individuals who have power to change the core software?

Image for post
Publicly visible users involved with Bitcoin on Github https://github.com/orgs/bitcoin/people

It turns out that nothing is really trustless, but Bitcoin certainly comes close.

Read on to learn about how consensus is determined for updates to the bitcoin core protocol. We discuss BIPs and highlight their role in the recent SegWit update.

The consensus story begins with final line of the 2008 whitepaper:

They [the miners] vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism.
- Satoshi Nakamoto

I interpret the final line to mean that successfully mined blocks can be used a means of deciding consensus on arbitrary decisions unrelated to transactions. In any case, regardless of Satoshi’s intent here, that’s exactly what happens in Bitcoin today. Let’s take a look at how this came about.

Over the years we’ve seen various methods emerge for finding consensus on protocol changes. In particular, BIP-34 in 2012 and BIP-9 in 2015.

BIP stands for Bitcoin Improvement Proposal, and a BIP instance is essentially a document that proposes changes to the core bitcoin technology. They are the standard way of communicating ideas — given that Bitcoin has no formal structure.

How exactly do Bitcoin Improvement Proposals work?

The first BIP was submitted by Amir Taaki in 2011. Here’s a link to the file itself:

Amir’s BIP-1 defined the structure for such a proposal, and in pretty gory detail too. Since then there’s been 110 BIPs pulled to the master branch.

Here’s a list of them:

The BIPs are assigned a status, as seen in the ‘Status’ column above. It must pass the first editor to become a Draft, from which it can be Deferred or Withdrawn by the author, or (more excitingly) accepted or Rejected by the community.

Image for post
As defined in BIP-1: https://github.com/bitcoin/bips/blob/master/bip-0001/process.png

In order for a BIP to become accepted and labeled as Final, each of the following conditions must be met:

  • Follows the correct format as specified by BIP-1
  • Includes code implementations of the proposed changes to the protocol
  • Has 95% support from the last 2,016 miners (~14 days worth of mining with 10 min blocks)

Miners can vote for or against a BIP by including the appropriate data in their hashed block.

Depending on the BIP “Layer” specification, a BIP acceptance may signal a “soft fork” upgrade wherein the community members (exchanges, companies building payment technologies, exchanges, miners, etc..) must upgrade their versions of the protocol to allow for the newly built functionality.

A notable example is the recent Segregated Witness soft fork (see BIP-141 and BIP-148). Here’s a historical chart tracking the miners votes for this software change:

Image for post
Source: https://coin.dance/blocks/proposals

As can be seen, 95% consensus was reached among miners around mid September 2017, signalling the acceptance of the SegWit soft fork.

In general, a soft fork must only make changes that are compatible with previous versions of the software, allowing older versions to continue functioning as normal. In this case, the developers significantly changed the way in which UTXOs should be created and spent, but in such a way that existing UTXOs would be unaffected.

Conclusion

In summary, there exists the following high-level structure of control:

  • Anyone can submit a BIP that aims to change bitcoin core
  • The BIP must be approved by an editor
  • The BIP must be voted in with 95% confidence from the miners
  • The community must upgrade to the new software version

The above-described consensus model ensures that no one bad-actor or minority group thereof can control the fate of Bitcoin.

For more on governance, check out this interview with Pierre Rochard. He is lightyears more qualified than I am on the subject:

Stephan Livera Podcast SLP11 — Bitcoin’s Decentralised Governance, with Pierre Rochard

But the question still remains: Who controls Bitcoin?

Let’s start at the base layer and work our way up.

In essence, anybody has the ability to change Bitcoin. This is true because anyone can submit a BIP. However, since BIPs can be censored at the discretion of the editors, one could argue that they are in control. But then, since miners need to pass any BIP with 95% confidence, one could argue that miners are able to censor the editors. So it would seem the miners have ultimate control. However this ignores the final layer: community.

In the end, the community as a whole can never be forced to adopt undesirable changes to Bitcoin. Should a bad actor or group thereof take Bitcoin in a poor direction, the community can rally behind the better version of the project and choose their software. With the community’s economic activity taking place on the better version of the project, the bad actors would find themselves maintaining an empty blockchain while their supporting miners waste computational resources on worthless coins.

So we find that Bitcoin is controlled by the majority community in terms of economic activity. Like any community, however, the members must stay aware, knowledgable and vigilant to avoid following the advice of bad actors.

Disclaimer: I’m not claiming to be an expert on this subject. My purpose is to learn and pass that knowledge on to others. If you notice any mistakes in the above article, please let me know in a comment or personal message.

Thanks for reading 👏.

If you want to chat, please reach out to me on twitter here:

Written by

Python Data Engineer, MSc. Physics

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store