CoinFox takes a closer look at how new features make their way into the Core and how Bitcoin Improvement Proposals are implemented.

Bitcoin as an open source network enables developers all over the world to contribute to the update and scaling of the network. Essentially, Bitcoin Improvement Proposal (BIP) is a design document for introducing new features or information to the network. The lack of a central authority and the open source nature of bitcoin software encourages developers to use BIPs as a primary way to communicate ideas and information.

The first BIP in the bitcoin network was submitted by the computer programmer Amir Taaki and was all about BIPs, what they are and how they should be integrated into the Bitcoin Core.

Types of BIP

In the bitcoin system, there are three common types of improvement protocol: standards track BIPs, informational BIPs and process BIPs. While all three types are submitted, reviewed, and activated using the same method, the difference lies in the purpose of each proposal.

Standard track BIPs are submitted in order to change the network protocol or any other operations or features that may affect interoperability. These include, among all, transaction validation and block size parameters.

Informational BIPs are integrated to resolve design issues and establish general guidelines. They differ from standards track BIPs in that it they are normally utilised to propose new features.

Process BIPs are identical to standards track BIPs with one exception: they describe or propose important changes in the process outside the bitcoin protocol. 

How are BIPs Accepted?

BIP 0001, or the Taaki’s proposal, failed to clarify how BIPs are actually integrated into the Bitcoin Core. Although the proposal includes an infographic detailing the workflow of BIPs’ submission, it only describes the general method of drafting and integrating a BIP but does not specify the process of validating and accepting a BIP.

As shown by Taaki’s infographic above, a draft of a BIP is first drawn by a developer and submitted to the open source repository of the bitcoin network. Developers then validate legitimacy of the BIP and choose to accept or reject the proposal. Once accepted, the progress of its implementation can be tracked on Github.

In addition to this general scheme of BIP implementation, there are small particular operations that must be completed before a BIP is fully accepted and integrated. 

First, the developer or the designer of the BIP must convince the bitcoin development team as to how the standardisation of the specific BIP could enhance the performance of the bitcoin network and its core components. If core developers agree and verify the idea, the author can then move onto drafting the actual BIP for submission.

Once completed, Luke Dashjr, currently appointed BIP editor, assigns to it a specific BIP number for the reference. If the BIP is accepted by most of the community and developers, the process of technical implementation begins.

BIPs Supported by Standard Client Bitcoin Core

Some BIPs that positively affect wallets, the actual protocol or other aspects of the network are standardised by Bitcoin Core developers. 

At the moment, 27 BIPs are integrated into the client. Most notable BIPs include BIP 0011 (multisig outputs), BIP 0032 (HD wallets), and BIP 0152 (compact block relay).

BIP 0011 for instance, created a technical standard widely utilised by most bitcoin wallet service providers worldwide. Most, if not all, crypto wallets today have the multi-signature technology implemented for enhanced security. This specific proposal hugely impacted the way the bitcoin network works today and define the level of security expected from service providers.

BIP 0032 however, is an example of a one-purpose BIP in that it only affects wallets of the bitcoin network. It introduced complete separation of private and public key generation for improved security and stability. Major bitcoin wallet platforms like Armory and Coinkite fully utilise this feature to enhance their security measures.

Joseph Young