This guide explains BIP 36 Custom Services in plain English. It covers the problem behind the BIP, why it matters and whether the proposal is part of Bitcoin today.
TL;DR
- What it is: BIP 36 Custom Services proposed a registry and namespacing framework for experimental services carried alongside Bitcoin peer connections. It added a list of service names, versions and optional data to the version message, with wrapped custom commands to avoid collisions.
- Why it matters: BIP 36 recorded an early attempt to make peer-service experimentation orderly, but its generic handshake extension did not become the network standard. Modern extensions need their own maintained specification, defensive framing and isolated interoperability tests.
- Current position: The proposal is Closed and these fields are not part of the current Bitcoin peer handshake, so the design should be studied rather than deployed on public nodes.
What this means in simple English
A BIP is a document that proposes or explains a Bitcoin idea, standard or rule. A BIP number does not mean the idea is active. Some BIPs are widely used, while others are drafts or historical proposals.
You do not need to read code to understand the main point. Start with the status, the problem being addressed and the practical effect on ordinary users, wallets, miners or node operators.
Simple example
Think of the transaction as a form passed between several authorised signers. Each person or device checks the same payment details before adding approval. Passing the form around does not make the payment safe unless every signer checks what it contains.
Key terms in plain English
- BIP:
- Bitcoin Improvement Proposal: a document describing a proposed rule, standard or process. Its status must be checked separately.
- Bitcoin Core:
- Widely used software that validates Bitcoin and can provide wallet, network and operator tools.
- Node:
- A computer running Bitcoin software that checks data and communicates with other peers.
Why custom services were proposed
Developers wanted to experiment with distributed pools, lightweight-client queries, custom transports and routing without consuming scarce standard service bits or colliding with peer commands. BIP 36 attempted to make that experimentation discoverable while reserving a path for a mature service to become a standard NODE flag.
Version-message extension
The proposal appended a variable service count and service definitions after the existing version fields. Each definition contained a name, a 32-bit service version and optional service-specific data. Duplicate names could justify disconnection. Adding variable material to the handshake increased parser and compatibility responsibilities for every peer implementation.
Service identifier rules
Identifiers were constrained to five through eleven ASCII characters, excluded several separators and were intended to be registered before use. The narrow rules reduced collisions but did not authenticate ownership. A malicious peer could advertise a familiar identifier, so clients still had to negotiate and validate actual behaviour.
Namespaced custom commands
A service could use a 12-byte Bitcoin command prefixed with an underscore, then place a null-padded subcommand and payload inside the message. Unknown services and subcommands were to be ignored. Implementations needed strict length and padding checks so a malformed wrapper could not confuse the base message parser.
Optional service data
The handshake could carry small initialisation data, but services hoping to become standard were advised not to depend on it. Standard service flags had no equivalent payload. Moving capabilities into a separate service handshake kept the announcement small and made future transition less dependent on one experimental encoding.
Proposed standardisation path
The document described parallel custom and NODE announcements during transition, dual wrapped and unwrapped reception, and eventual removal of the wrapper. Such dual-mode periods are operationally delicate because one implementation may send, accept or prioritise a different form. The path was not deployed as a generic framework.
Safe modern experiment
Use an isolated network or a separate authenticated transport for a new experimental service. Define explicit framing, version negotiation, resource bounds and teardown. Fuzz duplicate identifiers, unknown commands, non-null padding and oversized payloads.
Frequently asked questions
What is BIP 36 Custom Services?
BIP 36 Custom Services proposed a registry and namespacing framework for experimental services carried alongside Bitcoin peer connections. It added a list of service names, versions and optional data to the version message, with wrapped custom commands to avoid collisions.
Is BIP 36 active or supported today?
The proposal is Closed and these fields are not part of the current Bitcoin peer handshake, so the design should be studied rather than deployed on public nodes.
Why does BIP 36 matter?
BIP 36 recorded an early attempt to make peer-service experimentation orderly, but its generic handshake extension did not become the network standard. Modern extensions need their own maintained specification, defensive framing and isolated interoperability tests.
Do beginners need to use the technical details?
No. Most readers only need to understand the idea and its current status. Developers and node operators can use the primary sources when they need the exact technical rules.
Conclusion
BIP 36 recorded an early attempt to make peer-service experimentation orderly, but its generic handshake extension did not become the network standard. Modern extensions need their own maintained specification, defensive framing and isolated interoperability tests.
Primary sources
Check the current specification status and the documentation for the exact implementation you operate before moving production funds or changing a mining node.
