Governance

So, we have a decentralized network, that no one entity can control. How do we make changes and upgrades to that network?

How are changes made on a network that no one controls? This dilemma we call governance.

While governance solutions have been built into some blockchain protocols, Bitcoin is fairly simple in this regard. There are only a few built-in methods for decisions making. Let’s take a look at how things get done.

The BIP process.

BIP stands for Bitcoin Improvement Proposal. This is a process for submitting changes to the repo.

A description of the process and a complete list of BIP’s can be found here.

Proposed changes should first be discussed on the mailing list, then a pull request submitted.

Once a proposed change becomes a BIP it goes through peer review and the below process.

After a BIP is accepted, then the real fun of network implementation begins.

How a BIP becomes network protocol.

How difficult the process is depends a lot on the type of change or BIP that is being implemented.

Types of BIP’s or Tracks.

  • Standards
    • Changes that affect network protocol
    • Changes in block or transaction validity rules
    • Changes or additions that affect the interoperability of applications using Bitcoin
    • Requires community consensus
  • Informational
    • Changes in general guidelines or information to the Bitcoin community
    • Does not require community consensus
  • Process
    • Proposes a change to a process
    • Usually requires community consensus

It’s very important to note the difference between a simple code change and a consensus change. Any change affecting the consensus rules on the network will require either a soft fork or a hard fork.

In this context “fork” has a different meaning from software fork or a fork in a repo. Here we mean a chain split or a network partition that can result in separate networks.

Hard forks vs. soft forks

A soft fork is a network upgrade which can be thought of a non-mandatory. Nodes running old versions of the software will still be able to interact with and maintain consensus on the network.

A hard fork is a network upgrade or change that either forces nodes on the network to upgrade or results in a permanent split in the network.

Temporary Forks: The most common way in which a fork occurs is when there are separate groups of nodes that have different copies of the blockchain ledger. This can happen when there’s a high transaction volume, and nodes find multiple new blocks which can be confirmed within the rules of the system. In Proof of Work models, the longest chain will always win, so the network will ultimately return to a global consensus quite quickly.

Balance of power: There are many different groups in the bitcoin ecosystem that have influence. Miners, developers, wallets & users, exchanges, merchants. It’s important to remember that while bitcoin core developers can release changes to the protocol, no one has to upgrade to run the new software. That is a choice made by every individual who has a machine running bitcoin.

The process of transitioning to new consensus rules is called activation.

There have been a number of methods used in Bitcoin to activate a change.

Flag date: this is a very simple activation method where a new rule becomes active on a specific date.

ISM IsSuperMajority: This uses miner signaling and was the first version of MASF. This bit of code activates changes once 950 of the last 1000 blocks have signaled for activating the new change.

BIP9 – Version bits: Miner signalling, a way for miners to signal readiness for a soft fork by setting bits in the block header nVersion field.

MASF – Miner Activated Soft Fork: In this scenario blocks signal a version and a soft fork is activated through this signaling.

UASF – User Activated Soft Fork: This scenario involves non-mining full nodes updating their software to a version that requires certain rules on the network, behaps beginning at a flag date after which blocks that do not meet those requirements are not propagated on the network.

The above is a rough summary as this is a rather complicated situation. Other networks employ more sophisticated methods for determining consensus and activating changes. The Decred project has an interesting model which you can read about here.

There has been an evolution of methods used to bring about change in Bitcoin. The well-distributed balance of power in the ecosystem has done a good job of preventing any hostile takeovers, it has also made the system very conservative with only the most tried and test and overwhelmingly approved of changes making it to activation.

The activation process on the bitcoin network is a complicated and constantly evolving process.

Further reading can be found here:

https://medium.com/@elombrozo/forks-signaling-and-activation-d60b6abda49a

https://bitcoincore.org/en/2016/06/08/version-bits-miners-faq/

https://medium.com/@bergealex4/uasf-user-driven-protocol-development-da4e886832d

 

In the next section we’ll get into technical specifics starting with setting up a node.