Bitcoin Improvement Proposals (BIPs)
This page describes the implementation status of Bitcoin Improvement Proposals (BIPs) in Bitcoin Cash Node. See BIP2 for basic information about BIPs.
Note that BIPs are written for Bitcoin (Core) rather than for Bitcoin Cash. See Bitcoin Cash upgrades for implementation status of proposals specifically written for Bitcoin Cash.
Currently implemented BIPs
The following BIPs are currently implemented in Bitcoin Cash Node:
- BIP11: Multisig outputs are standard since v0.6.0 (PR#669).
- BIP13: The address format for P2SH addresses has been implemented since v0.6.0 (PR#669).
- BIP14: The subversion string is being used as User Agent since v0.6.0 (PR#669).
- BIP16: The pay-to-script-hash evaluation rules have been implemented since v0.6.0 (PR#748), and took effect on April 1st 2012.
- BIP21: The URI format for Bitcoin payments has been implemented since v0.6.0 (PR#176). The URI scheme prefix has changed from
bitcoin:
tobitcoincash:
as of v0.15.0 (D466). - BIP22: The
getblocktemplate
(GBT) RPC protocol for mining has been implemented since v0.7.0 (PR#936). With the implementation of SigChecks, thesigops
andsigoplimit
fields have been changed to output SigCheck-based values in v22.0.0 (MR!681). - BIP23: Some extensions to GBT, including longpolling and block proposals, have been implemented since v0.10.0rc1 (PR#1816).
- BIP30: The evaluation rules to forbid creating new transactions with the same txid as previous not-fully-spent transactions were implemented since v0.6.0 (PR#915), and the rule took effect on March 15th 2012.
- BIP31: The
pong
protocol message (and the protocol version bump to 60001) has been implemented since v0.6.1 (PR#1081). - BIP32: Hierarchical Deterministic Wallets has been implemented since v0.13.0 (PR#8035).
- BIP34: 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 (PR#1526). 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).
- BIP35: The
mempool
protocol message (and the protocol version bump to 60002) has been implemented since v0.7.0 (PR#1641). - BIP37: 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).
- BIP42: The bug that would have caused the subsidy schedule to resume after block 13440000 was fixed in v0.9.2 (PR#3842).
- BIP61: The
reject
protocol message (and the protocol version bump to 70002) was added in v0.9.0 (PR#3185). Whether to send reject messages can be configured with the-enablebip61
option since v0.19.11 (D3722). - BIP65: 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.
- BIP66: The strict DER rules and associated version 3 blocks have been implemented since v0.10.0 (PR#5713).
- BIP68: Sequence locks have been implemented as of v0.12.1 (PR#7184), and are active since block 419328.
- BIP69: Lexicographical sorting of transaction inputs and outputs has been implemented as of v24.0.0.
- BIP90: Trigger mechanism for activation of BIP34, BIP65, and BIP66 has been simplified to block height checks since v0.14.0 (PR#8391). The same principle has been reapplied later to simplify the logic of Bitcoin Cash network upgrades after activation.
- BIP111:
NODE_BLOOM
service bit added, and enforced for all peer versions as of v0.13.0 (PR#6579, PR#6641). - BIP112: The CHECKSEQUENCEVERIFY opcode has been implemented since v0.12.1 (PR#7524) and is active since block 419328.
- BIP113: Median time past lock-time calculations have been implemented since v0.12.1 (PR#6566) and are active since block 419328.
- BIP130: Direct headers announcement is negotiated with peer versions ≥70012 as of v0.12.0 (PR#6494).
- BIP133:
feefilter
messages are respected and sent for peer versions ≥70013 as of v0.13.0 (PR#7542). - BIP152: Compact block transfer and related optimizations are used as of v0.13.0 (PR#8068).
- BIP155: Since v24.1.0, Version 2 of the address gossip protocol is supported via the
addrv2
andsendaddrv2
messages, enabling longer addresses like Onion V3, I2P and others (MR 1457). - BIP158: Compact block filters for light clients can be constructed since v0.19.6 (D2867).
- BIP159: The
NODE_NETWORK_LIMITED
service bit is both signalled (D2363) and connected to (D2390) as of v0.18.7. - BIP174: To operate on Partially Signed Bitcoin Transactions (PSBT), utility RPCs are present as of v0.20.6 (D4351) and wallet RPCs are present as of v0.20.7 (D4352).
- BIP340: Functions for creating and verifying Schnorr signatures are available in libsecp256k1 as of v0.18.8 (D2169), but they are based on an older draft of BIP340. More precisely, Bitcoin Cash chooses the Y coordinate that is a quadratic residue (option 3), instead of the Y coordinate that is even (option 2), i.e. the specification before the change described in footnote 6 was applied.
Obsolete BIPs
We list a BIP as obsolete if:
- the BIP was previously implemented in Bitcoin Cash Node but the implementation was removed later, or;
- the BIP has been replaced with a Bitcoin Cash upgrade that is implemented in Bitcoin Cash Node.
Here, Bitcoin Cash Node includes its predecessors Bitcoin ABC (before v0.21.0) and Bitcoin Core (before v0.14.1).
The obsolete BIPs are:
- BIP9: The changes allowing multiple soft-forks to be deployed in parallel were supported since v0.12.1 (PR#7575), but have been removed in v0.18.0, partially re-added in v0.21.0, and removed again in v22.0.0 (MR!62).
- BIP62: The seven new consensus rules to combat transaction malleability are all supported as of v0.19.12, but with different activation mechanisms:
- Rule 1 is supported as of v0.10.0 (PR#5713) and activated via BIP66.
- Rule 2 is supported as of v0.18.0 (D1623) and activated in the November 15th 2018 Bitcoin Cash network upgrade.
- Rules 3 and 4 are equivalent to MINIMALDATA enforcement, which is supported as of v0.19.12 (D3763) and activated in the November 15th 2019 Bitcoin Cash network upgrade.
- Rule 5 is supported as of v0.16.0 (D616) and activated in the November 13th 2017 Bitcoin Cash network upgrade.
- Rule 6 is supported as of v0.18.0 (D1647) and activated in the November 15th 2018 Bitcoin Cash network upgrade. SegWit recovery added an exemption from rule 6, which is supported as of v0.19.0 (D2479) and activated in the May 15th 2019 Bitcoin Cash network upgrade.
- Rule 7 is incorporated into Schnorr multisig, which is supported as of v0.19.12 (D3736) and activated in the November 15th 2019 Bitcoin Cash network upgrade.
- BIP70, BIP71, BIP72: Payment Protocol support has been available in Bitcoin Core GUI since v0.9.0 (PR#5216), but has been disabled in Bitcoin Cash Node v27.0.1 or above.
- BIP125: Opt-in full replace-by-fee signaling was honored in mempool and mining as of v0.12.0 (PR#6871), but this has been removed in v0.14.1 (
5b641923
). - BIP141: Segregated Witness consensus layer was supported as of v0.13.0 (PR#8149), and defined for mainnet as of v0.13.1 (PR#8937), but has been removed in v0.14.1 (
78df4d4c
). - BIP143: Transaction signature verification for version 0 witness program was supported as of v0.13.0 (PR#8149) and defined for mainnet as of v0.13.1 (PR#8937), but has been replaced with the replay-protected sighash format in v0.14.1 (D68), which activated in the August 1st 2017 Bitcoin Cash UAHF.
- BIP144: Segregated Witness peer services were implemented as of v0.13.0 (PR#8149), but have been removed in v0.14.1 (
103cbb8e
). - BIP145:
getblocktemplate
updates for Segregated Witness were implemented as of v0.13.0 (PR#8149), but have been removed in v0.14.1 (78df4d4c
,b569a713
), except for thetxid
field which continues to exist as a mirror of thehash
field. - BIP146: Both ECDSA signature encoding malleability fixes are supported as of v0.16.0 (D616) and activated in the November 13th 2017 Bitcoin Cash network upgrade.
- BIP147: NULLDUMMY softfork was supported as of v0.13.1 (PR#8636, PR#8937), but has been removed in v0.14.1 (
78df4d4c
). NULLDUMMY was later incorporated into Schnorr multisig, which is supported as of v0.19.12 (D3736) and activated in the November 15th 2019 Bitcoin Cash network upgrade. - BIP173: Bech32 address format has been adapted into CashAddr, which is implemented as of v0.16.2, with
bitcoin-tx
support completed in v0.21.2 (MR!274, MR!275). The preferred address format can be selected with the-usecashaddr
option.