Protocol Changes

This document lists changes made by protocol version.

Version 1.0

Deprecated methods

Version 1.1

Changes

New methods

Removed methods

Version 1.2

Changes

New methods

Deprecated methods

Version 1.3

Changes

New methods

Removed methods

Deprecated methods

Version 1.4

This version removes all support for deserialized headers.

Changes

New methods

Removed methods

Version 1.4.1

Changes

Version 1.4.2

New methods

Version 1.4.3

New methods

Version 1.5

(this version number was skipped, no corresponding protocol is defined)

Version 1.6

Changes

  • Breaking change for the version negotiation: we now mandate that the server.version() message must be the first message sent. That is, version negotiation must happen before any other messages.

  • Also for server.version(), the server must tolerate and ignore extraneous arguments, to allow for extensions in future protocol versions.

  • The status of a scripthash has its definition tightened in a backwards-compatible way: mempool txs now have a canonical ordering defined for the calculation (previously their order was undefined).

  • blockchain.scripthash.get_mempool() previously did not define an order for mempool transactions. We now mandate a specific ordering.

  • Optional mode argument added to blockchain.estimatefee().

  • blockchain.block.headers() now returns headers as a list, instead of a single concatenated hex string.

New methods

Removed methods

Version 1.7

Changes

  • server.ping() can now also be sent as an unrequested notification, by both the client and the server. The request/response signature also changed.

  • The blockchain.scripthash.* methods are all replaced with blockchain.scriptpubkey.* methods. Note: sha256(scriptPubKey) == scripthash. Besides taking a scriptPubKey instead of a scripthash as input param, the new methods also have some minor functional changes.

    • the notifications for blockchain.scriptpubkey.subscribe() still contain the scripthash

    • the protocol now guarantees that a notification is sent even if the status of the scriptPubKey did not change but there was a reorg affecting a relevant tx

    • many RPCs now return a dict instead of an array

  • The hash_function field is removed from the server.features() response.

  • Standardize “history too large” error code for blockchain.scriptpubkey.* methods.

New methods

Removed methods