Historically accurate visualization of centralization efforts vs Bitcoin

August 1, 2018 marked the one year anniversary of a major enhancement in Bitcoin called Segregated Witness (SegWit). This upgrade fixed a longstanding bug in Bitcoin that made it difficult to create additional scaling solutions, and allowed Bitcoin to increase the amount of transactions that it can process per second. Additionally, its activation showed the community that Bitcoin refuses to yield to centralization efforts. This post uses the activation of Segregated Witness as a case study for Bitcoin’s decentralization. I’ll try to keep it as high level as possible for those of us who are less technical, but it assumes a basic understanding of the different players involved in the Bitcoin network.

Bitcoin is an international, non-inflationary money that is outside any individuals’ control. It hasn’t been shut down by a government yet because it’s decentralized. Decentralization is a buzzword thrown around quite a bit these days, but only Bitcoin has shown that it is currently decentralized and continues to grow more decentralized over time. Prior to 2017, many upgrades to the network were activated by Bitcoin miners. These upgrades are referred to as miner activated soft forks (MASF). “Soft forks” are upgrades that make the rules that the software follows more specific. This means that old software views the new rules as valid, since more specific rules still fit under the broader old ruleset. Nobody is forced to run new software to remain on the network when an upgrade is released as a soft fork.

SegWit followed a similar strategy as many previous upgrades. The talented developers contributing to the most popular implementation of Bitcoin, Bitcoin Core, wrote the code after gaining overwhelming consensus for the upgrade from major businesses, users, and miners. In the case of SegWit, however, once the code was released, miners delayed signaling for the upgrade.

Bitcoin is ruled by between 9,500 and 115,000 full node operators. Node operators are anybody who chooses to run software that fully validates the entire database of transactions, verifies the validity of new transactions, and relays data around the network. Sometimes node operators are also developers who contribute code to the different implementations of the Bitcoin network, such as Bitcoin Core. Node operators might be large companies that transact millions to billions of dollars of Bitcoin per day. Sometimes node operators are miners who contribute computational power to checking that no Bitcoin have been counterfeited before proposing blocks of transactions to the rest of the node operators to verify, and sometimes node operators are just nerds running the software from a Raspberry Pi in their basement (me). Regardless of your level of commitment to Bitcoin, if you are a full node operator, you function with the same power as every other node in the network. You get to decide the direction Bitcoin takes by running the software of your choice and by achieving consensus.

After SegWit was released in Bitcoin Core 0.13.1, a vast majority of node operators chose to run the software that included the upgrade. Since SegWit was released to be miner activated, however, the non-mining node operators were left at the mercy of the mining node operators to ultimately activate it, and some mining node operators chose to block the upgrade instead. This left the Bitcoin network in a very interesting position. A wide majority of the node operators were voting to include the upgrade by choosing to run the newest software, but a small percentage of node operators (the miners) had the ability to veto the upgrade against consensus!

The Bitcoin network proved its decentralization in this moment though. While the developers contributing to the official implementation of Bitcoin were busy trying to gain consensus about how to move forward, an anonymous developer, Shaolinfry, proposed a change to the software (BIP148) that would reject any miner proposed transaction blocks that did not include the upgrade by August 1, 2017. BIP148 was too contentious to be supported by a majority of the developers who contribute to Bitcoin Core, but the code was out there and unstoppable. “Unofficial” copies of Bitcoin Core were created with the BIP148 upgrade included despite the protest of multiple developers and miners, and node operators began running the BIP148 software regardless, reaching roughly 20% of total nodes!

This may seem like a strong-arm move by a minority of node operators, but at that time, an overwhelming majority of node operators were running compatible software with BIP148, so it was more like a group of people who were ruthlessly enforcing the consensus that had already been established. This left the dissenting miners with a very, very tough decision. They could either activate SegWit according to consensus and avoid any problems, or refuse to mine SegWit blocks and risk their blocks not being accepted by a substantial portion of the network, thus not receiving their payment for the electricity they spent.

Not wanting to completely cede to the BIP148 node operators, a group of miners and businesses developed and ran an alternative implementation of Bitcoin! They created another copy of Bitcoin core that they could activate before August 1. SegWit activated and the rest is history. We celebrated August 1 this year because 2017 made it absolutely apparent that no singular force can control or stop Bitcoin’s slow but steady march forward.

Bitcoin works because it is decentralized, meaning it’s controlled by consensus, not by miners, developers, or wealthy participants. The network was in consensus about SegWit, but its activation was being blocked by a small minority of participants. The network routed around the minority by using creative code, and leveraging economic incentives through game theory. Miners had to stop blocking SegWit because the network and economics demanded it. Node operators have equal power across the board.

Become a “de-Central Bank of Bitcoin” by running this software.