Layer: Peer Services
Title: NODE_NETWORK_LIMITED service bit
Author: Jonas Schnelli <email@example.com>
Comments-Summary: No comments yet.
Type: Standards Track
Define a service bit that allow pruned peers to signal their limited services
Pruned peers can offer the same services as traditional peer except of serving all historical blocks. Bitcoin right now only offers the NODE_NETWORK service bit which indicates that a peer can serve all historical blocks.
- Pruned peers can relay blocks, headers, transactions, addresses and can serve a limited number of historical blocks, thus they should have a way how to announce their service(s)
- Peers no longer in initial block download should consider connecting some of its outbound connections to pruned peers to allow other peers to bootstrap from non-pruned peers
New service bit
This BIP proposes a new service bit
|bit 10 (0x400)
|If signaled, the peer MUST be capable of serving at least the last 288 blocks (~2 days).
A safety buffer of 144 blocks to handle chain reorganizations
SHOULD be taken into account when connecting to a peer signaling
NODE_NETWORK_LIMITED service bit.
Full nodes following this BIP SHOULD relay address/services
addr message) from peers they would connect to (including peers
Counter-measures for peer fingerprinting
Peers may have different prune depths (depending on the peers
configuration, disk space, etc.) which can result in a fingerprinting
weakness (finding the prune depth through getdata requests).
NODE_NETWORK_LIMITED supporting peers SHOULD avoid leaking the
prune depth and therefore not serve blocks deeper than the signaled
NODE_NETWORK_LIMITED threshold (288 blocks).
Pruned peers following this BIP may consume more outbound bandwidth.
Light clients (and such) who are not checking the
(service bits) from a relayed
addr-message may unwillingly connect to
a pruned peer and ask for (filtered) blocks at a depth below their
pruned depth. Light clients should therefore check the service bits (and
eventually connect to peers signaling
NODE_NETWORK_LIMITED if they
require [filtered] blocks around the tip). Light clients obtaining
peer IPs though DNS seed should use the DNS filtering option.
This proposal is backward compatible.
- https://github.com/bitcoin/bitcoin/pull/11740 (signaling)
- https://github.com/bitcoin/bitcoin/pull/10387 (connection and relay)
This BIP is licensed under the 2-clause BSD license.