From ec403b0ac53bbf248493da219a191df494795a4a Mon Sep 17 00:00:00 2001 From: Jonas Schnelli Date: Mon, 7 Aug 2017 19:29:04 +0200 Subject: Add BIP NODE_NETWORK_LIMITED service bits --- README.mediawiki | 7 ++++++ bip-0159.mediawiki | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 bip-0159.mediawiki diff --git a/README.mediawiki b/README.mediawiki index f2cfc7b..24b5ad2 100644 --- a/README.mediawiki +++ b/README.mediawiki @@ -708,6 +708,13 @@ Those proposing changes should consider that ultimately consent may rest with th | Standard | Draft |- +| [[bip-0159.mediawiki|159]] +| Peer Services +| NODE_NETWORK_LIMITED service bits +| Jonas Schnelli +| Standard +| Draft +|- | [[bip-0171.mediawiki|171]] | Applications | Currency/exchange rate information API diff --git a/bip-0159.mediawiki b/bip-0159.mediawiki new file mode 100644 index 0000000..a402978 --- /dev/null +++ b/bip-0159.mediawiki @@ -0,0 +1,66 @@ +
+  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 || 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 || 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. -- cgit v1.2.3