summaryrefslogtreecommitdiff
path: root/d4/664be78a0b5bdc23dd6ee0a7f8d4e7599bd84a
blob: ae3abd342621b8d40339047bb2babe968bde022e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
Received: from sog-mx-4.v43.ch3.sourceforge.com ([172.29.43.194]
	helo=mx.sourceforge.net)
	by sfs-ml-2.v29.ch3.sourceforge.com with esmtp (Exim 4.76)
	(envelope-from <pieter.wuille@gmail.com>) id 1UWTtS-0005Dh-Rs
	for bitcoin-development@lists.sourceforge.net;
	Sun, 28 Apr 2013 15:52:02 +0000
Received-SPF: pass (sog-mx-4.v43.ch3.sourceforge.com: domain of gmail.com
	designates 209.85.223.182 as permitted sender)
	client-ip=209.85.223.182; envelope-from=pieter.wuille@gmail.com;
	helo=mail-ie0-f182.google.com; 
Received: from mail-ie0-f182.google.com ([209.85.223.182])
	by sog-mx-4.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-SHA:128)
	(Exim 4.76) id 1UWTtR-0007k2-9M
	for bitcoin-development@lists.sourceforge.net;
	Sun, 28 Apr 2013 15:52:02 +0000
Received: by mail-ie0-f182.google.com with SMTP id bn7so6503966ieb.13
	for <bitcoin-development@lists.sourceforge.net>;
	Sun, 28 Apr 2013 08:51:56 -0700 (PDT)
MIME-Version: 1.0
X-Received: by 10.42.65.75 with SMTP id k11mr26878432ici.26.1367164315974;
	Sun, 28 Apr 2013 08:51:55 -0700 (PDT)
Received: by 10.50.25.230 with HTTP; Sun, 28 Apr 2013 08:51:55 -0700 (PDT)
Date: Sun, 28 Apr 2013 17:51:55 +0200
Message-ID: <CAPg+sBjSe23eADMxu-1mx0Kg2LGkN+BSNByq0PtZcMxAMh0uTg@mail.gmail.com>
From: Pieter Wuille <pieter.wuille@gmail.com>
To: Bitcoin Dev <bitcoin-development@lists.sourceforge.net>
Content-Type: multipart/alternative; boundary=90e6ba3fcd2767442704db6dbfb4
X-Spam-Score: -0.6 (/)
X-Spam-Report: Spam Filtering performed by mx.sourceforge.net.
	See http://spamassassin.org/tag/ for more details.
	-1.5 SPF_CHECK_PASS SPF reports sender host as permitted sender for
	sender-domain
	0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider
	(pieter.wuille[at]gmail.com)
	-0.0 SPF_PASS               SPF: sender matches SPF record
	1.0 HTML_MESSAGE           BODY: HTML included in message
	-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from
	author's domain
	0.1 DKIM_SIGNED            Message has a DKIM or DK signature,
	not necessarily valid
	-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature
X-Headers-End: 1UWTtR-0007k2-9M
Subject: [Bitcoin-development] Service bits for pruned nodes
X-BeenThere: bitcoin-development@lists.sourceforge.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: <bitcoin-development.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/bitcoin-development>,
	<mailto:bitcoin-development-request@lists.sourceforge.net?subject=unsubscribe>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum_name=bitcoin-development>
List-Post: <mailto:bitcoin-development@lists.sourceforge.net>
List-Help: <mailto:bitcoin-development-request@lists.sourceforge.net?subject=help>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/bitcoin-development>,
	<mailto:bitcoin-development-request@lists.sourceforge.net?subject=subscribe>
X-List-Received-Date: Sun, 28 Apr 2013 15:52:03 -0000

--90e6ba3fcd2767442704db6dbfb4
Content-Type: text/plain; charset=ISO-8859-1

Hello all,

I think it is time to move forward with pruning nodes, i.e. nodes that
fully validate and relay blocks and transactions, but which do not keep
(all) historic blocks around, and thus cannot be queried for these.

The biggest roadblock is making sure new and old nodes that start up are
able to find nodes to synchronize from. To help them find peers, I would
like to propose adding two extra service bits to the P2P protocol:
* NODE_VALIDATE: relay and validate blocks and transactions, but is only
guaranteed to answer getdata requests for (recently) relayed blocks and
transactions, and mempool transactions.
* NODE_BLOCKS_2016: can be queried for the last 2016 blocks, but without
guarantee for relaying/validating new blocks and transactions.
* NODE_NETWORK (which existed before) will imply NODE_VALIDATE and
guarantee availability of all historic blocks.

The idea is to separate the different responsibilities of network nodes
into separate bits, so they can - at some point - be
implemented independently. Perhaps we want more than just one degree (2016
blocks), maybe also 144 or 210000, but those can be added later if
necessary. I monitored the frequency of block depths requested from my
public node, and got this frequency distribution:
http://bitcoin.sipa.be/depth-small.png so it seems 2016 nicely matches the
set of frequently-requested blocks (indicating that few nodes are offline
for more than 2 weeks consecutively.

I'll write a BIP to formalize this, but wanted to get an idea of how much
support there is for a change like this.

Cheers,

-- 
Pieter

--90e6ba3fcd2767442704db6dbfb4
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hello all,<div><br></div><div>I think it is time to move f=
orward with pruning nodes, i.e. nodes that fully validate and relay blocks =
and transactions, but which do not keep (all) historic blocks around, and t=
hus cannot be queried for these.</div>

<div><br></div><div>The biggest roadblock is making sure new and old nodes =
that start up are able to find nodes to synchronize from. To help them find=
 peers, I would like to propose adding two extra service bits to the P2P pr=
otocol:</div>

<div>* NODE_VALIDATE: relay and validate blocks and transactions, but is on=
ly guaranteed to answer getdata requests for (recently) relayed blocks and =
transactions, and mempool transactions.</div><div>* NODE_BLOCKS_2016: can b=
e queried for the last 2016 blocks, but without guarantee for relaying/vali=
dating new blocks and transactions.</div>

<div>* NODE_NETWORK (which existed before) will imply NODE_VALIDATE and gua=
rantee availability of all historic blocks.</div><div><br></div><div>The id=
ea is to separate the different=A0responsibilities=A0of network nodes into =
separate bits, so they can - at some point - be implemented=A0independently=
. Perhaps we want more than just one degree (2016 blocks), maybe also 144 o=
r 210000, but those can be added later if necessary. I monitored the freque=
ncy of block depths requested from my public node, and got this frequency d=
istribution:=A0<a href=3D"http://bitcoin.sipa.be/depth-small.png">http://bi=
tcoin.sipa.be/depth-small.png</a>=A0so it seems 2016 nicely matches the set=
 of frequently-requested blocks (indicating that few nodes are offline for =
more than 2 weeks=A0consecutively.</div>
<div><br></div><div style>I&#39;ll write a BIP to formalize this, but wante=
d to get an idea of how much support there is for a change like this.</div>=
<div style><br></div><div style>Cheers,</div><div style><br></div><div styl=
e>
--=A0</div><div style>Pieter</div><div style>=A0</div><div><br></div><div><=
br></div></div>

--90e6ba3fcd2767442704db6dbfb4--