A Bitcoin Improvement Proposal, or BIP, is a technical document that proposes changes, ideas, or improvements to the Bitcoin protocol.
In a distributed system like Bitcoin, who decides whether to make a change to the protocol?
Actually, everyone is free to decide independently what they consider most appropriate for themselves: since the Bitcoin code is public, each individual can choose which version to use and whether to configure it to accept or reject any updates.
Since 2011, every proposal for protocol improvement is made through the submission of a BIP (Bitcoin Improvement Proposal), which is a standardized technical document that follows guidelines to propose a specific improvement to the Bitcoin protocol or to describe a new feature to be introduced.
All completed and proposed BIPs up to now are public and available on GitHub.
The first BIP was created on August 19, 2011, by the British-Iranian programmer Amir Taaki. The BIP outlined the standard format of the document, drawing inspiration from the Python Enhancement Proposal (PEP) system that Python developers follow to improve the programming language.
The most important BIPs in Bitcoin’s history are:
- BIP-32: Hierarchical Deterministic Wallets;
- BIP-39: Mnemonic code for generating deterministic keys;
- BIP-141: Segregated Witness;
- BIP-341: Taproot.
Types of BIPs
- BIP Standards Track: describes any type of change as an alteration to the network protocol, a modification to the validity rules of blocks or transactions, or any change that affects the interoperability of applications using Bitcoin;
- Informational BIP: serves to inform community members or provide general guidelines or information to the Bitcoin community but does not propose a new feature;
- Procedural BIP: proposes changes to processes outside the Bitcoin protocol.
Being open-source, anyone with the desire or capability can submit a BIP to enhance the Bitcoin protocol.
When any of the aforementioned BIPs is submitted, it goes through various states such as – drafted, verified, accepted, rejected, or replaced.
How does an update happen?
The path to a Bitcoin update is lengthy and complex precisely because, lacking a central authority, everyone (or nearly everyone) must converge toward the optimal solution. Every aspect must be secure, undergo numerous tests, and gain approval.
The entire process is summarized below:
- When a credible proposal emerges, the discussion generally begins on IRC forums where developers converse.
- The idea generated from the forums is sent to the Bitcoin mailing list and elaborated upon.
- The next step involves the formal drafting of the proposal through the standardized BIP (Bitcoin Improvement Proposal) process.
- At this point on GitHub, where the source code of Bitcoin Core is also published, developers work on a pull request and write the code to concretely develop the idea.
- The code is applied to the Bitcoin Testnet, a testing network where new features are tested. It serves as a realistic simulation showing how the new technology would behave on the main network.
- Once approved, ready, and tested, the code is implemented in Bitcoin Core, and an update is released.
- Subsequently, miners signal approval of the change, and when a certain threshold is reached, the update is confirmed.
As stated at the beginning, every user on the network can decide whether to accept the new update or continue using Bitcoin as before.