|
1 | 1 | <pre>
|
2 | 2 | BIP: 159
|
3 | 3 | Layer: Peer Services
|
4 |
| - Title: NODE_NETWORK_LIMITED service bits |
| 4 | + Title: NODE_NETWORK_LIMITED service bit |
5 | 5 | Author: Jonas Schnelli < [email protected]>
|
6 | 6 | Comments-Summary: No comments yet.
|
7 | 7 | Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0159
|
|
13 | 13 |
|
14 | 14 | == Abstract ==
|
15 | 15 |
|
16 |
| -Define service bits that allow pruned peers to signal their limited services |
| 16 | +Define a service bit that allow pruned peers to signal their limited services |
17 | 17 |
|
18 | 18 | ==Motivation==
|
19 | 19 |
|
20 | 20 | Pruned peers can offer the same services as traditional peer except of serving all historical blocks.
|
21 | 21 | Bitcoin right now only offers the NODE_NETWORK service bit which indicates that a peer can serve
|
22 | 22 | all historical blocks.
|
23 | 23 | # 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)
|
24 |
| -# 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 |
| 24 | +# 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 |
25 | 25 |
|
26 | 26 | == Specification ==
|
27 | 27 |
|
28 |
| -=== New service bits === |
| 28 | +=== New service bit === |
29 | 29 |
|
30 |
| -This BIP proposes two new service bits |
| 30 | +This BIP proposes a new service bit |
31 | 31 |
|
32 | 32 | {|class="wikitable"
|
33 | 33 | |-
|
34 |
| -| NODE_NETWORK_LIMITED_LOW || bit 10 (0x400) || 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). |
35 |
| -|- |
36 |
| -| NODE_NETWORK_LIMITED_HIGH || bit 11 (0x800) || If signaled, the peer <I>MUST</i> be capable of serving at least the last 1152 blocks (~8 days) |
| 34 | +| NODE_NETWORK_LIMITED || bit 10 (0x400) || 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). |
37 | 35 | |}
|
38 | 36 |
|
39 |
| -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. |
| 37 | +A safety buffer of additional 144 blocks to handle chain reorganizations <I>SHOULD</I> be taken into account when connecting to a peer signaling the <code>NODE_NETWORK_LIMITED</code> service bit. |
40 | 38 |
|
41 | 39 | === Address relay ===
|
42 | 40 |
|
43 |
| -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>). |
| 41 | +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>). |
44 | 42 |
|
45 | 43 | === Counter-measures for peer fingerprinting ===
|
46 | 44 |
|
47 |
| -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 <I>SHOULD</I> avoid leaking the prune depth and therefore not serve blocks deeper then the signaled <code>NODE_NETWORK_LIMITED_*</code> thresholds. |
| 45 | +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 <I>SHOULD</I> avoid leaking the prune depth and therefore not serve blocks deeper then the signaled <code>NODE_NETWORK_LIMITED</code> thresholds. |
48 | 46 |
|
49 | 47 | === Risks ===
|
50 | 48 |
|
51 | 49 | Pruned peers following this BIP may consume more outbound bandwidth.
|
52 | 50 |
|
53 |
| -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. |
| 51 | +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. |
54 | 52 |
|
55 | 53 | == Compatibility ==
|
56 | 54 |
|
|
0 commit comments