11

There is different BIP, each has a status. I read somewhere that BIPs are not considered part of the Bitcoin protocol until "active". Nevertheless, Bitcoin Core seems to support a number of BIPs that are in status "accepted".

Is there an official list on what BIPs are currently supported by the standard client?

I even searched the source code but didn't find any official list.

  • I found out by trial and error that BIPs 11 and 16 are supported. These two are important to me. But I think there must be an "official way" to find out which BIPs are supported by bitcoin-qt and therefore considered part of the bitcoin protocol. Any hints on that are appreciated! – entreprogreur Dec 21 '13 at 21:54
  • I'm surprised I only now see this question. I've answered below, and I'm going propose adding a list like the one in my answer in the Bitcoin Core repository. – Pieter Wuille Dec 29 '14 at 16:37
12

The concept of 'accepted' is pretty fuzzy, as it depends on what a BIP affects. Some things are wallet-only, or only affect the protocol, or are optional to implement for different implementations. When BIPs affect the consensus rules of the protocol (the rules which determine which blocks are valid), the whole network needs to adopt them in lockstep, though (true for BIP 16, BIP 30, BIP 34, BIP 62, BIP 65).

Ultimately, BIPs are just proposals, and different pieces of software are free to implement them or not.

Here is a list of BIPs implemented in Bitcoin Core v0.13.0 (see this link for an up-to-date list):

  • BIP 9: The changes allowing multiple soft-forks to be deployed in parallel have been implemented since v0.12.1 (PR #7575)
  • BIP 11: Multisig outputs are standard since v0.6.0 (PR #669).
  • BIP 13: The address format for P2SH addresses has been implemented since v0.6.0 (PR #669).
  • BIP 14: The subversion string is being used as User Agent since v0.6.0 (PR #669).
  • BIP 16: The pay-to-script-hash evaluation rules have been implemented since v0.6.0, and took effect on April 1st 2012 (PR #748).
  • BIP 21: The URI format for Bitcoin payments has been implemented since v0.6.0 (PR #176).
  • BIP 22: The 'getblocktemplate' (GBT) RPC protocol for mining has been implemented since v0.7.0 (PR #936).
  • BIP 23: Some extensions to GBT have been implemented since v0.10.0rc1, including longpolling and block proposals (PR #1816).
  • BIP 30: The evaluation rules to forbid creating new transactions with the same txid as previous not-fully-spent transactions were implemented since v0.6.0, and the rule took effect on March 15th 2012 (PR #915).
  • BIP 31: The 'pong' protocol message (and the protocol version bump to 60001) has been implemented since v0.6.1 (PR #1081).
  • BIP 32: Hierarchical Deterministic Wallets has been implemented since v0.13.0 (PR #8035).
  • BIP 34: The rule that requires blocks to contain their height (number) in the coinbase input, and the introduction of version 2 blocks has been implemented since v0.7.0. The rule took effect for version 2 blocks as of block 224413 (March 5th 2013), and version 1 blocks are no longer allowed since block 227931 (March 25th 2013) (PR #1526).
  • BIP 35: The 'mempool' protocol message (and the protocol version bump to 60002) has been implemented since v0.7.0 (PR #1641).
  • BIP 37: The bloom filtering for transaction relaying, partial merkle trees for blocks, and the protocol version bump to 70001 (enabling low-bandwidth SPV clients) has been implemented since v0.8.0 (PR #1795).
  • BIP 42: The bug that would have caused the subsidy schedule to resume after block 13440000 was fixed in v0.9.2 (PR #3842).
  • BIP 61: The 'reject' protocol message (and the protocol version bump to 70002) was added in v0.9.0 (PR #3185).
  • BIP 65: The CHECKLOCKTIMEVERIFY softfork was merged in v0.12.0 (PR #6351), and backported to v0.11.2 and v0.10.4. Mempool-only CLTV was added in PR #6124.
  • BIP 66: The strict DER rules and associated version 3 blocks have been implemented since v0.10.0 (PR #5713).
  • BIP 68: Sequence locks have been implemented as of v0.12.1 (PR #7184), and have been activated since block 419328.
  • BIP 70 71 72: Payment Protocol support has been available in Bitcoin Core GUI since v0.9.0 (PR #5216).
  • BIP 111: NODE_BLOOM service bit added, and enforced for all peer versions as of v0.13.0 (PR #6579 and PR #6641).
  • BIP 112: The CHECKSEQUENCEVERIFY opcode has been implemented since v0.12.1 (PR #7524) and has been activated since block 419328.
  • BIP 113: Median time past lock-time calculations have been implemented since v0.12.1 (PR #6566) and have been activated since block 419328.
  • BIP 125: Opt-in full replace-by-fee signaling honoured in mempool and mining as of v0.12.0 (PR 6871).
  • BIP 130: direct headers announcement is negotiated with peer versions >=70012 as of v0.12.0 (PR 6494).
  • BIP 133: feefilter messages are respected and sent for peer versions >=70013 as of v0.13.0 (PR 7542).
  • BIP 152: Compact block transfer and related optimizations are used as of v0.13.0 (PR 8068).
  • 1
    This answer may not be updated as frequently as the official BIP doc, so here is a link to it for convenience: github.com/bitcoin/bips – morsecoder Dec 29 '14 at 19:39
  • @StephenM347 That's just a link of BIPs, not whether they're implemented or not in Bitcoin Core. – Pieter Wuille Dec 30 '14 at 1:25
  • Yeah, probably should have linked to the readme.md, but it shows up at the bottom of the BIP page, and I think there you can see the status. – morsecoder Dec 30 '14 at 1:33
  • 1
    As I said above, 'Status' has little meaning for most BIPs. For most changes, every project is free to implement them or not, and Bitcoin Core is no different. As far as I know, there is no place where a list of actually implemented BIPs in Core was ever compiled. – Pieter Wuille Jan 1 '15 at 16:00
  • 1
    Update: such a list is now being maintained at github.com/bitcoin/bitcoin/blob/master/doc/bips.md – Pieter Wuille Aug 27 '17 at 19:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.