Skip to content

BIP Overview

BIP

BIP: Bitcoin Improvement Proposal - a standardized document for proposing new features, improvements, or informational submissions to the Bitcoin protocol. The purpose of BIPs is to provide the Bitcoin community with a transparent, structured, and collaborative way to discuss and implement improvements and changes to the Bitcoin protocol. Improvement proposals are managed through a GitHub repository.

BIP Categories

BIPs are primarily divided into the following categories:

  • Standards Track BIP: Improvements to the Bitcoin core protocol, consensus rules, and network protocol, such as definitions of Bitcoin standards like transaction formats and data structures.
  • Informational BIP: Provides recommendations on Bitcoin development and design, not mandatory to implement, helping the community understand and discuss Bitcoin-related topics.
  • Process BIP: Describes improvements to Bitcoin development and decision-making processes, such as the BIP process itself - standardization of non-technical improvements and operational procedures.

BIP Lifecycle

A BIP typically goes through the following stages from proposal to implementation: Draft Stage, Proposed Stage, and Final Stage.

Below is a lifecycle diagram:

alt text

All Active BIPs

BIP1: BIP Purpose and Guidelines

BIP2: BIP Process, Revised

BIP8: Version Bits with Lock-in by Height

BIP9: Version Bits with Timeout and Delay

BIP10: Multi-Sig Transaction Distribution

BIP11: M-of-N Standard Transactions

BIP12: OP_EVAL

BIP13: Address Format for Pay-to-Script-Hash

BIP14: Protocol Version and User Agent

BIP15: Aliases

BIP16: Pay to Script Hash

BIP17: OP_CHECKHASHVERIFY (CHV)

BIP18: hashScriptCheck

BIP19: M-of-N Standard Transactions (Low SigOp)

BIP20: URI Scheme

BIP21: URI Scheme

BIP22: getblocktemplate - Fundamentals

BIP23: getblocktemplate - Pooled Mining

BIP30: Duplicate Transactions

BIP31: Pong Message

BIP32: Hierarchical Deterministic Wallets

BIP33: Stratified Nodes

BIP34: Block v2, Height in Coinbase

BIP35: mempool Message

BIP36: Custom Services

BIP37: Connection Bloom Filtering

BIP38: Passphrase-Protected Private Key

BIP39: Mnemonic Code for Generating Deterministic Keys

BIP42: A Finite Monetary Supply for Bitcoin

BIP43: Purpose Field for Deterministic Wallets

BIP44: Multi-Account Hierarchy for Deterministic Wallets

BIP45: Structure for Deterministic P2SH Multisignature Wallets

BIP47: Reusable Payment Codes for Hierarchical Deterministic Wallets

BIP48: Multi-Script Hierarchy for Multi-Sig Wallets

BIP49: Derivation Scheme for P2WPKH-nested-in-P2SH Based Accounts

BIP50: March 2013 Chain Fork Post-Mortem

BIP52: Durable, Low Energy Bitcoin PoW

BIP60: Fixed Length "version" Message (Relay-Transactions Field)

BIP61: Reject P2P Message

BIP62: Dealing with Malleability

BIP64: getutxo Message

BIP65: OP_CHECKLOCKTIMEVERIFY

BIP66: Strict DER Signatures

BIP67: Deterministic Pay-to-Script-Hash Multi-Signature Addresses through Public Key Sorting

BIP68: Relative Lock-Time Using Consensus-Enforced Sequence Numbers

BIP69: Lexicographical Indexing of Transaction Inputs and Outputs

BIP70: Payment Protocol

BIP71: Payment Protocol MIME Types

BIP72: bitcoin: URI Extensions for Payment Protocol

BIP73: Use "Accept" Header for Response Type Negotiation with Payment Request URLs

BIP74: Allow Zero Value OP_RETURN in Payment Protocol

BIP75: Out of Band Address Exchange using Payment Protocol Encryption

BIP78: A Simple Payjoin Proposal

BIP79: Bustapay :: A Practical Coinjoin Protocol

BIP80: Hierarchy for Non-Colored Voting Pool Deterministic Multisig Wallets

BIP81: Hierarchy for Colored Voting Pool Deterministic Multisig Wallets

BIP83: Dynamic Hierarchical Deterministic Key Trees

BIP84: Derivation Scheme for P2WPKH Based Accounts

BIP85: Deterministic Entropy from BIP32 Keychains

BIP86: Key Derivation for Single Key P2TR Outputs

BIP87: Hierarchy for Deterministic Multisig Wallets

BIP88: Hierarchical Deterministic Path Templates

BIP90: Buried Deployments

BIP91: Reduced Threshold Segwit MASF

BIP93: codex32: Checksummed SSSS-aware BIP32 Seeds

BIP98: Fast Merkle Trees

BIP99: Motivation and Deployment of Consensus Rule Changes (Soft/Hard Forks)

BIP100: Dynamic Maximum Block Size by Miner Vote

BIP101: Increase Maximum Block Size

BIP102: Block Size Increase to 2MB

BIP103: Block Size Following Technological Growth

BIP104: 'Block75' - Like Difficulty for Max Block Size

BIP105: Consensus Based Block Size Retargeting Algorithm

BIP106: Dynamically Controlled Bitcoin Block Size Max Cap

BIP107: Dynamic Limits on the Block Size

BIP109: Two Million Byte Size Limit with Sigop and Sighash Limits

BIP111: NODE_BLOOM Service Bit

BIP112: CHECKSEQUENCEVERIFY

BIP113: Median Time-Past as Endpoint for Lock-Time Calculations

BIP114: Merkelized Abstract Syntax Tree

BIP115: Generic Anti-Replay Protection Using Script

BIP116: MERKLEBRANCHVERIFY

BIP117: Tail Call Execution Semantics

BIP118: SIGHASH_ANYPREVOUT for Taproot Scripts

BIP119: CHECKTEMPLATEVERIFY

BIP120: Proof of Payment

BIP121: Proof of Payment URI Scheme

BIP122: URI Scheme for Blockchain References/Exploration

BIP123: BIP Classification

BIP124: Hierarchical Deterministic Script Templates

BIP125: Opt-in Full Replace-by-Fee Signaling

BIP126: Best Practices for Heterogeneous Input Script Transactions

BIP127: Simple Proof-of-Reserves Transactions

BIP129: Bitcoin Secure Multisig Setup (BSMS)

BIP130: sendheaders Message

BIP131: "Coalescing Transaction" Specification (Wildcard Inputs)

BIP132: Committee-Based BIP Acceptance Process

BIP133: feefilter Message

BIP134: Flexible Transactions

BIP135: Generalized Version Bits Voting

BIP136: Bech32 Encoded Tx Position References

BIP137: Signing Messages with Private Keys

BIP140: Normalized TXID

BIP141: Segregated Witness (Consensus Layer)

BIP142: Address Format for Segregated Witness

BIP143: Transaction Signature Verification for Version 0 Witness Programs

BIP144: Segregated Witness (Peer Services)

BIP145: getblocktemplate Updates for Segregated Witness

BIP146: Dealing with Signature Encoding Malleability

BIP147: Dealing with Dummy Stack Element Malleability

BIP148: Mandatory Activation of Segwit Deployment

BIP149: Segregated Witness (Second Deployment)

BIP150: Peer Authentication

BIP151: Peer-to-Peer Communication Encryption

BIP152: Compact Block Relay

BIP154: Rate Limiting via Peer Specified Challenge

BIP155: addrv2 Message

BIP156: Dandelion - Privacy Enhancing Routing

BIP157: Client Side Block Filtering

BIP158: Compact Block Filters for Light Clients

BIP159: NODE_NETWORK_LIMITED Service Bit

BIP171: Currency/Exchange Rate Information API

BIP173: Base32 Address Format for Native v0-16 Witness Outputs

BIP174: Partially Signed Bitcoin Transaction Format

BIP175: Pay to Contract Protocol

BIP176: Bits Denomination

BIP178: Version Extended WIF

BIP179: Name for Payment Recipient Identifiers

BIP180: Block Size/Weight Fraud Proof

BIP197: Hashed Time-Locked Collateral Contract

BIP199: Hashed Time-Locked Contract Transactions

BIP300: Hashrate Escrow (Consensus Layer)

BIP301: Blind Merged Mining (Consensus Layer)

BIP310: Stratum Protocol Extensions

BIP320: General Purpose nVersion Bits

BIP322: Generic Signed Message Format

BIP324: Version 2 P2P Encrypted Transport Protocol

BIP325: Signet

BIP326: Anti-Fee-Sniping in Taproot Transactions

BIP327: MuSig2 for BIP340-Compatible Multi-Signatures

BIP329: Wallet Label Export Format

BIP330: Transaction Announcement Reconciliation

BIP331: Ancestor Package Relay

BIP337: Compressed Transactions

BIP338: Disable Transaction Relay Message

BIP339: WTXID-Based Transaction Relay

BIP340: Schnorr Signatures for secp256k1

BIP341: Taproot: SegWit Version 1 Spending Rules

BIP342: Validation of Taproot Scripts

BIP343: Mandatory Activation of Taproot Deployment

BIP345: OP_VAULT

BIP347: OP_CAT in Tapscript

BIP350: Bech32m Format for v1+ Witness Addresses

BIP351: Private Payments

BIP352: Silent Payments

BIP353: DNS Payment Instructions

BIP370: PSBT Version 2

BIP371: Taproot Fields for PSBT

BIP372: Pay-to-Contract Tweak Fields for PSBT

BIP380: Output Script Descriptors General Operation

BIP381: Non-Segwit Output Script Descriptors

BIP382: Segwit Output Script Descriptors

BIP383: Multisig Output Script Descriptors

BIP384: combo() Output Script Descriptors

BIP385: raw() and addr() Output Script Descriptors

BIP386: tr() Output Script Descriptors

BIP387: Tapscript Multisig Output Script Descriptors

BIP388: Wallet Policies for Descriptor Wallets

BIP389: Multipath Descriptor Key Expressions

BIP431: Topology Restrictions