Appendix A: Bitcoin Improvement Proposals
Bitcoin Improvement Proposals are design documents providing information to the bitcoin community, or for describing a new feature for bitcoin or its processes or environment.
As per BIP-01 BIP Purpose and Guidelines, there are three kinds of BIPs:
- Standard BIP
-
Describes any change that affects most or all bitcoin implementations, such as a change to the network protocol, a change in block or transaction validity rules, or any change or addition that affects the interoperability of applications using bitcoin.
- Informational BIP
-
Describes a bitcoin design issue, or provides general guidelines or information to the bitcoin community, but does not propose a new feature. Informational BIPs do not necessarily represent a bitcoin community consensus or recommendation, so users and implementors may ignore informational BIPs or follow their advice.
- Process BIP
-
Describes a bitcoin process, or proposes a change to (or an event in) a process. Process BIPs are like standard BIPs but apply to areas other than the bitcoin protocol itself. They might propose an implementation, but not to bitcoin’s codebase; they often require community consensus; and unlike informational BIPs, they are more than recommendations, and users are typically not free to ignore them. Examples include procedures, guidelines, changes to the decision-making process, and changes to the tools or environment used in bitcoin development. Any meta-BIP is also considered a process BIP.
BIPs are recorded in a versioned repository on GitHub: https://github.com/bitcoin/bips. Snapshot of BIPs shows a snapshot of the BIPs in April 2017. Consult the authoritative repository for up-to-date information on existing BIPs and their contents.
BIP# | Title | Owner | Type | Status |
---|---|---|---|---|
BIP Purpose and Guidelines |
Amir Taaki |
Process |
Replaced |
|
BIP process, revised |
Luke Dashjr |
Process |
Active |
|
Version bits with guaranteed lock-in |
Shaolin Fry |
Informational |
Draft |
|
Version bits with timeout and delay |
Pieter Wuille, Peter Todd, Greg Maxwell, Rusty Russell |
Informational |
Final |
|
Multi-Sig Transaction Distribution |
Alan Reiner |
Informational |
Withdrawn |
|
M-of-N Standard Transactions |
Gavin Andresen |
Standard |
Final |
|
OP_EVAL |
Gavin Andresen |
Standard |
Withdrawn |
|
Address Format for pay-to-script-hash |
Gavin Andresen |
Standard |
Final |
|
Protocol Version and User Agent |
Amir Taaki, Patrick Strateman |
Standard |
Final |
|
Aliases |
Amir Taaki |
Standard |
Deferred |
|
Pay to Script Hash |
Gavin Andresen |
Standard |
Final |
|
OP_CHECKHASHVERIFY (CHV) |
Luke Dashjr |
Standard |
Withdrawn |
|
hashScriptCheck |
Luke Dashjr |
Standard |
Proposed |
|
M-of-N Standard Transactions (Low SigOp) |
Luke Dashjr |
Standard |
Draft |
|
URI Scheme |
Luke Dashjr |
Standard |
Replaced |
|
URI Scheme |
Nils Schneider, Matt Corallo |
Standard |
Final |
|
getblocktemplate - Fundamentals |
Luke Dashjr |
Standard |
Final |
|
getblocktemplate - Pooled Mining |
Luke Dashjr |
Standard |
Final |
|
Duplicate transactions |
Pieter Wuille |
Standard |
Final |
|
Pong message |
Mike Hearn |
Standard |
Final |
|
Hierarchical Deterministic Wallets |
Pieter Wuille |
Informational |
Final |
|
Stratized Nodes |
Amir Taaki |
Standard |
Draft |
|
Block v2, Height in Coinbase |
Gavin Andresen |
Standard |
Final |
|
mempool message |
Jeff Garzik |
Standard |
Final |
|
Custom Services |
Stefan Thomas |
Standard |
Draft |
|
Connection Bloom filtering |
Mike Hearn, Matt Corallo |
Standard |
Final |
|
Passphrase-protected private key |
Mike Caldwell, Aaron Voisine |
Standard |
Draft |
|
Mnemonic code for generating deterministic keys |
Marek Palatinus, Pavol Rusnak, Aaron Voisine, Sean Bowe |
Standard |
Proposed |
|
Stratum wire protocol |
Marek Palatinus |
Standard |
BIP number allocated |
|
Stratum mining protocol |
Marek Palatinus |
Standard |
BIP number allocated |
|
A finite monetary supply for Bitcoin |
Pieter Wuille |
Standard |
Draft |
|
Purpose Field for Deterministic Wallets |
Marek Palatinus, Pavol Rusnak |
Informational |
Draft |
|
Multi-Account Hierarchy for Deterministic Wallets |
Marek Palatinus, Pavol Rusnak |
Standard |
Proposed |
|
Structure for Deterministic P2SH Multisignature Wallets |
Manuel Araoz, Ryan X. Charles, Matias Alejo Garcia |
Standard |
Proposed |
|
Reusable Payment Codes for Hierarchical Deterministic Wallets |
Justus Ranvier |
Informational |
Draft |
|
Derivation scheme for P2WPKH-nested-in-P2SH based accounts |
Daniel Weigl |
Informational |
Draft |
|
March 2013 Chain Fork Post-Mortem |
Gavin Andresen |
Informational |
Final |
|
Fixed Length "version" Message (Relay-Transactions Field) |
Amir Taaki |
Standard |
Draft |
|
Reject P2P message |
Gavin Andresen |
Standard |
Final |
|
Dealing with malleability |
Pieter Wuille |
Standard |
Withdrawn |
|
Stealth Addresses |
Peter Todd |
Standard |
BIP number allocated |
|
getutxo message |
Mike Hearn |
Standard |
Draft |
|
OP_CHECKLOCKTIMEVERIFY |
Peter Todd |
Standard |
Final |
|
Strict DER signatures |
Pieter Wuille |
Standard |
Final |
|
Deterministic Pay-to-script-hash multi-signature addresses through public key sorting |
Thomas Kerin, Jean-Pierre Rupp, Ruben de Vries |
Standard |
Proposed |
|
Relative lock-time using consensus-enforced sequence numbers |
Mark Friedenbach, BtcDrak, Nicolas Dorier, kinoshitajona |
Standard |
Final |
|
Lexicographical Indexing of Transaction Inputs and Outputs |
Kristov Atlas |
Informational |
Proposed |
|
Payment Protocol |
Gavin Andresen, Mike Hearn |
Standard |
Final |
|
Payment Protocol MIME types |
Gavin Andresen |
Standard |
Final |
|
bitcoin: uri extensions for Payment Protocol |
Gavin Andresen |
Standard |
Final |
|
Use "Accept" header for response type negotiation with Payment Request URLs |
Stephen Pair |
Standard |
Final |
|
Allow zero value OP_RETURN in Payment Protocol |
Toby Padilla |
Standard |
Draft |
|
Out of Band Address Exchange using Payment Protocol Encryption |
Justin Newton, Matt David, Aaron Voisine, James MacWhyte |
Standard |
Draft |
|
Hierarchy for Non-Colored Voting Pool Deterministic Multisig Wallets |
Justus Ranvier, Jimmy Song |
Informational |
Deferred |
|
Hierarchy for Colored Voting Pool Deterministic Multisig Wallets |
Justus Ranvier, Jimmy Song |
Informational |
Deferred |
|
Dynamic Hierarchical Deterministic Key Trees |
Eric Lombrozo |
Standard |
Draft |
|
Buried Deployments |
Suhas Daftuar |
Informational |
Draft |
|
Motivation and deployment of consensus rule changes ([soft/hard]forks) |
Jorge Timón |
Informational |
Draft |
|
Increase maximum block size |
Gavin Andresen |
Standard |
Withdrawn |
|
Block size increase to 2MB |
Jeff Garzik |
Standard |
Draft |
|
Block size following technological growth |
Pieter Wuille |
Standard |
Draft |
|
'Block75' - Max block size like difficulty |
t.khan |
Standard |
Draft |
|
Consensus based block size retargeting algorithm |
BtcDrak |
Standard |
Draft |
|
Dynamically Controlled Bitcoin Block Size Max Cap |
Upal Chakraborty |
Standard |
Draft |
|
Dynamic limit on the block size |
Washington Y. Sanchez |
Standard |
Draft |
|
Two million byte size limit with sigop and sighash limits |
Gavin Andresen |
Standard |
Rejected |
|
NODE_BLOOM service bit |
Matt Corallo, Peter Todd |
Standard |
Proposed |
|
CHECKSEQUENCEVERIFY |
BtcDrak, Mark Friedenbach, Eric Lombrozo |
Standard |
Final |
|
Median time-past as endpoint for lock-time calculations |
Thomas Kerin, Mark Friedenbach |
Standard |
Final |
|
Merkelized Abstract Syntax Tree |
Johnson Lau |
Standard |
Draft |
|
Proof of Payment |
Kalle Rosenbaum |
Standard |
Draft |
|
Proof of Payment URI scheme |
Kalle Rosenbaum |
Standard |
Draft |
|
URI scheme for Blockchain references / exploration |
Marco Pontello |
Standard |
Draft |
|
BIP Classification |
Eric Lombrozo |
Process |
Active |
|
Hierarchical Deterministic Script Templates |
Eric Lombrozo, William Swanson |
Informational |
Draft |
|
Opt-in Full Replace-by-Fee Signaling |
David A. Harding, Peter Todd |
Standard |
Proposed |
|
Best Practices for Heterogeneous Input Script Transactions |
Kristov Atlas |
Informational |
Draft |
|
sendheaders message |
Suhas Daftuar |
Standard |
Proposed |
|
"Coalescing Transaction" Specification (wildcard inputs) |
Chris Priest |
Standard |
Draft |
|
Committee-based BIP Acceptance Process |
Andy Chase |
Process |
Withdrawn |
|
feefilter message |
Alex Morcos |
Standard |
Draft |
|
Flexible Transactions |
Tom Zander |
Standard |
Draft |
|
Normalized TXID |
Christian Decker |
Standard |
Draft |
|
Segregated Witness (Consensus layer) |
Eric Lombrozo, Johnson Lau, Pieter Wuille |
Standard |
Draft |
|
Address Format for Segregated Witness |
Johnson Lau |
Standard |
Deferred |
|
Transaction Signature Verification for Version 0 Witness Program |
Johnson Lau, Pieter Wuille |
Standard |
Draft |
|
Segregated Witness (Peer Services) |
Eric Lombrozo, Pieter Wuille |
Standard |
Draft |
|
getblocktemplate Updates for Segregated Witness |
Luke Dashjr |
Standard |
Draft |
|
Dealing with signature encoding malleability |
Johnson Lau, Pieter Wuille |
Standard |
Draft |
|
Dealing with dummy stack element malleability |
Johnson Lau |
Standard |
Draft |
|
Mandatory activation of segwit deployment |
Shaolin Fry |
Standard |
Draft |
|
Peer Authentication |
Jonas Schnelli |
Standard |
Draft |
|
Peer-to-Peer Communication Encryption |
Jonas Schnelli |
Standard |
Draft |
|
Compact Block Relay |
Matt Corallo |
Standard |
Draft |
|
Currency/exchange rate information API |
Luke Dashjr |
Standard |
Draft |
|
Block size/weight fraud proof |
Luke Dashjr |
Standard |
Draft |
|
Hashed Time-Locked Contract transactions |
Sean Bowe, Daira Hopwood |
Standard |
Draft |