BIP: 159
Layer: Peer Services
Title: NODE_NETWORK_LIMITED service bits
Author: Jonas Schnelli
Comments-Summary: No comments yet.
Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0159
Status: Draft
Type: Standards Track
Created: 2017-05-11
License: BSD-2-Clause
== Abstract ==
Define service bits that allow pruned peers to signal their limited services
==Motivation==
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 connection some of its outbound connections to pruned peers to allow other peers to bootstrap from non-pruned peers
== Specification ==
=== New service bits ===
This BIP proposes two new service bits
{|class="wikitable"
|-
| NODE_NETWORK_LIMITED_LOW || bit 10 (0x400) || If signaled, the peer MUST be capable of serving at least the last 288 blocks (~2 day / the current minimum limit for Bitcoin Core).
|-
| NODE_NETWORK_LIMITED_HIGH || bit 11 (0x800) || If signaled, the peer MUST be capable of serving at least the last 1152 blocks (~8 days)
|}
The required behaviour when signaling both bits (NODE_NETWORK_LIMITED_LOW & NODE_NETWORK_LIMITED_HIGH
) is currently undefined.
A safety buffer of additional 144 blocks to handle chain reorganizations SHOULD be taken into account when connecting to a peer signaling NODE_NETWORK_LIMITED_*
service bits.
=== Address relay ===
Full nodes following this BIP SHOULD relay address/services (addr
message) from peers they would connect to (including peers signaling NODE_NETWORK_LIMITED_*
).
=== Risks ===
Pruned peers following this BIP may consume more outbound bandwidth.
Light clients (and such) who are not checking the nServiceFlags
(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.
== Compatibility ==
This proposal is backward compatible.
== Reference implementation ==
* https://github.com/bitcoin/bitcoin/pull/10387
== References ==
== Copyright ==
This BIP is licensed under the 2-clause BSD license.