forked from bitcoin/bips
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request bitcoin#566 from jonasschnelli/node_network_limited
BIP 159: NODE_NETWORK_LIMITED service bits
- Loading branch information
Showing
2 changed files
with
73 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
<pre> | ||
BIP: 159 | ||
Layer: Peer Services | ||
Title: NODE_NETWORK_LIMITED service bits | ||
Author: Jonas Schnelli <[email protected]> | ||
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 | ||
</pre> | ||
|
||
== 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 <I>MUST</I> 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 <I>MUST</i> be capable of serving at least the last 1152 blocks (~8 days) | ||
|} | ||
|
||
The required behaviour when signaling both bits (<code>NODE_NETWORK_LIMITED_LOW & NODE_NETWORK_LIMITED_HIGH</code>) is currently undefined. | ||
|
||
A safety buffer of additional 144 blocks to handle chain reorganizations <I>SHOULD</I> be taken into account when connecting to a peer signaling <code>NODE_NETWORK_LIMITED_*</code> service bits. | ||
|
||
=== Address relay === | ||
|
||
Full nodes following this BIP <I>SHOULD</I> relay address/services (<code>addr</code> message) from peers they would connect to (including peers signaling <code>NODE_NETWORK_LIMITED_*</code>). | ||
|
||
=== Risks === | ||
|
||
Pruned peers following this BIP may consume more outbound bandwidth. | ||
|
||
Light clients (and such) who are not checking the <code>nServiceFlags</code> (service bits) from a relayed <code>addr</code>-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 <code>NODE_NETWORK_LIMITED_*</code> 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. |