Gathering significant consensus within the community is the first step of the process. Sometimes, even the most valuable proposals can take years before they are approved or rejected because the community can’t find an agreement.
Once a BIP is submitted as a draft to the BIP GitHub, the proposal gets reviewed and worked on transparently so that everyone can view its progress and consequent testing outcomes. As Bitcoin blockchain is based on code, protocol changes will have to be reflected in the code, and miners will have to add a reference to their hashed block to signal that they accept or reject their implementation.
Because of the severe implications some changes might inflict on miners, a modification in the code requires acceptance by a vast majority of around 95% unless a reasonable motive is given for a lower threshold. Ninety-five percent support will have to be signaled from the last 2,016 miners (approximately 14 days worth of mining with 10-minute blocks).
As an example, we’ll use the recent implementation of the Taproot soft-fork, labeled as BIP 341. In April 2021, via the means of a “speedy trial code” – meant to give a quick resolution to the upgrade – the Taproot activation was merged into Bitcoin Core.
In the following couple of weeks, at least 90% of the blocks mined (1,815 out of 2,016 blocks mined) included an encoded reference indicating that the miners who mined those blocks favored the upgrade. This paved the way for the astonishing consensus achieved in the following months, leading to the final approval in November 2021.
The final and official approval of a BIP happens automatically when users (node operators) choose which Bitcoin Core version to download and run a node that reflects that change. Then, all upgraded nodes can recognize and accept transactions made using that upgraded protocol.
In summary, these are the main steps of the approval process:
Anyone can submit a BIP to change Bitcoin core;
An editor must pass the BIP;
The BIP must be approved by ∼95% of miners; and
The community must upgrade to the new software version.