A quick history lesson on SegWit activation via User Activated Soft Fork (UASF), the Bitcoin scaling debate, and who really is in control of Bitcoin’s future (miners vs. users).
Bitcoin’s Independence Day is a historic event for community consensus — the moment that Bitcoin proved itself to truly be the People’s Money.
With millions of new Bitcoiners joining the space or going down the technical rabbithole since mid-2017, we decided to roll back the clock to give a brief history of this significant event. The anniversary is a great opportunity for people to better understand the different roles of miners and nodes in the Bitcoin network and how they have evolved over the years.
On August 1, 2017, a user-activated soft fork (UASF) was scheduled to upgrade the Bitcoin network. A fork means that there is a change to the consensus rules of the Bitcoin network. The upgrade being a “soft” fork means that it tightens the rules and requires it to be backwards compatible so that nodes running older versions of the software can still validate new blocks. The “user-activated” aspect was what made it unlike any upgrade before it, as we’ll explain below.
There were strong proponents on opposite sides, causing a split among the community. On one side, a group led by prominent miners including Bitmain proposed to increase the block size limit along with implementing SegWit, a proposal called SegWit2x. Meanwhile, the broader community looked to solely implement SegWit, which still included an increase in transaction throughput due to technical reasons with SegWit but not directly changing the block size limit.
It became apparent that rolling out new consensus rules on the Bitcoin network can be difficult. With each node being a sovereign entity, no one can enforce what Bitcoin software other people should run. But how much power do nodes have, anyway?
To answer that, we have to go back to a Bitcoin Improvement Proposal (BIP) from 2017. (In case you haven’t heard of them, BIPs are proposals used to formally communicate ideas amongst developers. Some BIPs are adopted, others aren’t.)
Up until BIP141 (SegWit), most noncritical updates to Bitcoin consensus rules had been made via miner-activated soft forks. This approach was meant to ensure that miners would be well-coordinated so as not to mine invalid blocks, but it also enabled miners to dictate which consensus rules to implement. From a governance standpoint, it meant that large miners could veto certain upgrades despite said upgrades having broad community support.
Users began seeking alternative ways to move the power back into the hands of the community. This led to the development of user-activated soft forks (UASF).
First proposed by a pseudonymous user named Shaolinfry, a USAF was used to help end a years long scaling debate that resulted in the activation of SegWit. Now known as Bitcoin Independence Day, this day represents Bitcoin’s sovereignty of community’s consensus.
Segregated Witness (SegWit) was a solution presented at a 2015 conference on Bitcoin scaling (i.e. increasing Bitcoin’s transaction capacity). It was formally submitted as a proposal (BIP141) on December 21, 2015. Essentially, SegWit allowed the signature data to be separated from transactions and moved into the block header, thereby decreasing the size of transactions and enabling more transactions to fit in a block. It also included a malleability fix which enabled Layer 2 scaling solutions such as Lightning Network.
Because SegWit made changes to many parts of Bitcoin, its deployment was not trivial. It required a major upgrade to the network and needed to be backwards compatible in order for nodes running older versions of Bitcoin software to be able to continue participating.
Prior to SegWit, miners ultimately made decisions to upgrade the network. This was a problem, as it gave miners too much power while giving the rest of the participants in the network too little. Luckily, this changed with the introduction of BIP148.
BIP9 was used for the initial attempt to deploy SegWit. Usually, a start time is proposed to allow miners to signal support for the upgrade. Once 95% of the bocks produced signal support, the upgrade gets locked in and becomes active after 2016 blocks. However, this was not as straightforward for SegWit.
Although users widely supported the SegWit upgrade, block signaling plateaued amongst miners at about 30% and the deployment remained stuck indefinitely. If the upgrade had failed, a new deployment cycle must be used which could delay everything another year.
Another proposal was made in parallel to SegWit, called SegWit2x. It proposed to first activate SegWit, then increase the maximum block weight (i.e. size) via a hard fork. Bitcoin Core did not indicate support for SegWit2x. However, the Bitcoin Core repository was cloned by a group named btc1 who wanted to implement the increased block weight. Thus, a discrepancy existed between what the largest miners wanted vs. the broad users.
The proposal gained enough traction amongst the largest Bitcoin mining manufacturers and pools that a New York Agreement was formed. This group was formed to plan and execute the SegWit2x proposal. Specifically, Bitmain’s Antpool (controlling ~30% of the hashrate at the time) would only signal for SegWit if it was accompanied by a block size increase, which would require a much more controversial hard fork (i.e. non-backwards compatible change to node software).
Many users were opposed to a block size increase because it would mean that the blockchain would grow twice as fast if blocks were full, making it more resource-intensive for full nodes to sync and store a full copy of the blockchain and thus harming decentralization.
Meanwhile, our approach at the time was to allow miners to decide for themselves by voting through their mining accounts. We still believe firmly in giving miners control which we continue to push forward today with Stratum V2 Job Negotiation.
In the midst of the conflicting interests, another proposal surfaced. It suggested that full nodes who supported SegWit would start dropping non-SegWit blocks on August 1, 2017. The effect was that nodes running BIP141 (SegWit) would experience 100% adoption of BIP148, which enabled SegWit after two retargets. This allowed users to move forward with the SegWit upgrade without the need for 95% of miners to signal their support. Giving nodes more of a say in protocol changes is the idea of a user-activated soft fork (UASF).
P.S. if you’re getting lost in all the different BIPs here, you’re not alone. But don’t worry too much about which BIP did what, as the real takeaway here is that nodes (i.e. users) have the ability to determine Bitcoin’s future.
Full node operators collectively decided that they’ll start using the SegWit upgrade, and if miners did not comply, their blocks would be orphaned. Making them earn nothing in return for running their miners and spending electricity.
Ultimately, leading up to August 1st, the broad users chose to implement SegWit. The pressure from the UASF was enough to force miners to adopt SegWit without SegWit2x. The New York Agreement was terminated and the controversial debate concluded, with those supporting a block size increase splitting off to start Bitcoin Cash.
The scaling debate made it clear that BIP9 was not ideal for implementing upgrades. It allowed miners to essentially veto a soft fork with just 5% of the total network hashrate, meaning that individual mining pools could potentially put the breaks on an upgrade that even the majority of miners supported, let alone users.
It was August 1, 2017 that proved the Bitcoin consensus rules can be decided collectively by the community. Miners aren’t paid to decide the rules, they’re incentivized to follow the rules and follow the market.
Bitcoin’s resilience to miner coercion should be remembered and celebrated. A day that proved to all those paying attention that Bitcoin’s antifragile users are much more powerful than citizens of the old paradigm.
Bitcoin mining software company: Braiins Pool, Braiins OS+ & Stratum V2.
By miners, for miners.