summaryrefslogtreecommitdiff
path: root/46/af2f292b0011eb57dc43f0eb68987e6a075e20
blob: 8e02d8df77add908f78bf652255165e2e7304fc6 (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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
Return-Path: <lf-lists@mattcorallo.com>
Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133])
 by lists.linuxfoundation.org (Postfix) with ESMTP id 95452C013A
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Wed, 13 Jan 2021 06:49:57 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by hemlock.osuosl.org (Postfix) with ESMTP id 7A8C08715D
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Wed, 13 Jan 2021 06:49:57 +0000 (UTC)
X-Virus-Scanned: amavisd-new at osuosl.org
Received: from hemlock.osuosl.org ([127.0.0.1])
 by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id z7bRLhJK2q39
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Wed, 13 Jan 2021 06:49:56 +0000 (UTC)
X-Greylist: delayed 00:09:49 by SQLgrey-1.7.6
Received: from mail.as397444.net (mail.as397444.net [69.59.18.99])
 by hemlock.osuosl.org (Postfix) with ESMTPS id C8EA887153
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Wed, 13 Jan 2021 06:49:55 +0000 (UTC)
Received: by mail.as397444.net (Postfix) with ESMTPSA id C46FF442DE1;
 Wed, 13 Jan 2021 06:40:03 +0000 (UTC)
X-DKIM-Note: Keys used to sign are likely public at https://as397444.net/dkim/
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mattcorallo.com;
 s=1610518862; t=1610520003;
 bh=bCbLi0KrRDIwgy7dGAUZjtCi+LonTAq+qlKz+sZ+nrw=;
 h=From:Subject:Date:References:In-Reply-To:To:From;
 b=Wg6oE8gZaqP+MFBc+3ZZTtVAs5L0YNOD7Fby24Pzh9/gu+ZnGDAOxunpwBNRnoei/
 3Jmo3mUgdbDvvzI88Eo0tPSLWx/5ycTdjS8Ldh0vrYsE4+DYtZjvilvYReGcCjasjJ
 yK4mUXH8rd9yKnf1MSUMMxIJtLmPXe2CEXR7teW3LOO5q4tlzy1BV5OQCxRLRDWPAI
 sZnngs/uNOX1WE8ORSLXnbfopeY+DMaocoKZtQPjM3VVqcW59vRvispZrlWkY06ckX
 PJBpHkNsjlW9zeC6jQ2bEzw94GaQ1EwHWFIZchAJuhJ6U7+LpLGULERjfj2rztzzuj
 Zk83bETdg6+aw==
Content-Type: multipart/alternative;
 boundary=Apple-Mail-20F0586B-F0E5-485E-897F-2232FAEB9F72
Content-Transfer-Encoding: 7bit
From: Matt Corallo <lf-lists@mattcorallo.com>
Mime-Version: 1.0 (1.0)
Date: Wed, 13 Jan 2021 01:40:03 -0500
Message-Id: <10E92E80-75A3-4C45-8CEA-F1EAA2149761@mattcorallo.com>
References: <CAFp6fsE6gb2PaL3ikDRjS-hNnPLjvtWB+8qZJr3trQe2K9YN+g@mail.gmail.com>
In-Reply-To: <CAFp6fsE6gb2PaL3ikDRjS-hNnPLjvtWB+8qZJr3trQe2K9YN+g@mail.gmail.com>
To: Suhas Daftuar <sdaftuar@gmail.com>,
 Bitcoin Protocol Discussion <bitcoin-dev@lists.linuxfoundation.org>
Subject: Re: [bitcoin-dev] Proposal for new "disabletx" p2p message
X-BeenThere: bitcoin-dev@lists.linuxfoundation.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Bitcoin Protocol Discussion <bitcoin-dev.lists.linuxfoundation.org>
List-Unsubscribe: <https://lists.linuxfoundation.org/mailman/options/bitcoin-dev>, 
 <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=unsubscribe>
List-Archive: <http://lists.linuxfoundation.org/pipermail/bitcoin-dev/>
List-Post: <mailto:bitcoin-dev@lists.linuxfoundation.org>
List-Help: <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=help>
List-Subscribe: <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>, 
 <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=subscribe>
X-List-Received-Date: Wed, 13 Jan 2021 06:49:57 -0000


--Apple-Mail-20F0586B-F0E5-485E-897F-2232FAEB9F72
Content-Type: text/plain;
	charset=utf-8
Content-Transfer-Encoding: quoted-printable

Out of curiosity, was the interaction between fRelay and bloom disabling eve=
r specified? ie if you aren=E2=80=99t allowed to enable bloom filters on a c=
onnection due to resource constraints/new limits, is it ever possible to =E2=
=80=9Cset=E2=80=9D fRelay later?

Matt

> On Jan 6, 2021, at 11:35, Suhas Daftuar via bitcoin-dev <bitcoin-dev@lists=
.linuxfoundation.org> wrote:
>=20
> =EF=BB=BF
> Hi,
>=20
> I'm proposing the addition of a new, optional p2p message to allow peers t=
o communicate that they do not want to send or receive (loose) transactions f=
or the lifetime of a connection.=20
>=20
> The goal of this message is to help facilitate connections on the network o=
ver which only block-related data (blocks/headers/compact blocks/etc) are re=
layed, to create low-resource connections that help protect against partitio=
n attacks on the network.  In particular, by adding a network message that c=
ommunicates that transactions will not be relayed for the life of the connec=
tion, we ease the implementation of software that could have increased inbou=
nd connection limits for such peers, which in turn will make it easier to ad=
d additional persistent block-relay-only connections on the network -- stren=
gthening network security for little additional bandwidth.
>=20
> Software has been deployed for over a year now which makes such connection=
s, using the BIP37/BIP60 "fRelay" field in the version message to signal tha=
t transactions should not be sent initially.  However, BIP37 allows for tran=
saction relay to be enabled later in the connection's lifetime, complicating=
 software that would try to distinguish inbound peers that will never relay t=
ransactions from those that might.
>=20
> This proposal would add a single new p2p message, "disabletx", which (if u=
sed at all) must be sent between version and verack.  I propose that this me=
ssage is valid for peers advertising protocol version 70017 or higher.  Soft=
ware is free to implement this BIP or ignore this message and remain compati=
ble with software that does implement it.
>=20
> Full text of the proposed BIP is below.
>=20
> Thanks,
> Suhas
>=20
> ---------------------------------------------------
>=20
> <pre>
>   BIP: XXX
>   Layer: Peer Services
>   Title: Disable transaction relay message
>   Author: Suhas Daftuar <sdaftuar@chaincode.com>
>   Comments-Summary: No comments yet.
>   Comments-URI:
>   Status: Draft
>   Type: Standards Track
>   Created: 2020-09-03
>   License: BSD-2-Clause
> </pre>
>=20
> =3D=3DAbstract=3D=3D
>=20
> This BIP describes a change to the p2p protocol to allow a node to tell a p=
eer
> that a connection will not be used for transaction relay, to support
> block-relay-only connections that are currently in use on the network.
>=20
> =3D=3DMotivation=3D=3D
>=20
> For nearly the past year, software has been deployed[1] which initiates
> connections on the Bitcoin network and sets the transaction relay field
> (introduced by BIP 37 and also defined in BIP 60) to false, to prevent
> transaction relay from occurring on the connection. Additionally, addr mes=
sages
> received from the peer are ignored by this software.
>=20
> The purpose of these connections is two-fold: by making additional
> low-bandwidth connections on which blocks can propagate, the robustness of=
 a
> node to network partitioning attacks is strengthened.  Additionally, by no=
t
> relaying transactions and ignoring received addresses, the ability of an
> adversary to learn the complete network graph (or a subgraph) is reduced[2=
],
> which in turn increases the cost or difficulty to an attacker seeking to c=
arry
> out a network partitioning attack (when compared with having such knowledg=
e).
>=20
> The low-bandwidth / minimal-resource nature of these connections is curren=
tly
> known only by the initiator of the connection; this is because the transac=
tion
> relay field in the version message is not a permanent setting for the life=
time
> of the connection.  Consequently, a node receiving an inbound connection w=
ith
> transaction relay disabled cannot distinguish between a peer that will nev=
er
> enable transaction relay (as described in BIP 37) and one that will.  More=
over,
> the node also cannot determine that the incoming connection will ignore re=
layed
> addresses; with that knowledge a node would likely choose other peers to
> receive announced addresses instead.
>=20
> This proposal adds a new, optional message that a node can send a peer whe=
n
> initiating a connection to that peer, to indicate that connection should n=
ot be
> used for transaction-relay for the connection's lifetime. In addition, wit=
hout
> a current mechanism to negotiate whether addresses should be relayed on a
> connection, this BIP suggests that address messages not be sent on links w=
here
> tx-relay has been disabled.
>=20
> =3D=3DSpecification=3D=3D
>=20
> # A new disabletx message is added, which is defined as an empty message w=
here pchCommand =3D=3D "disabletx".
> # The protocol version of nodes implementing this BIP must be set to 70017=
 or higher.
> # If a node sets the transaction relay field in the version message to a p=
eer to false, then the disabletx message MAY also be sent in response to a v=
ersion message from that peer if the peer's protocol version is >=3D 70017. I=
f sent, the disabletx message MUST be sent prior to sending a verack.
> # A node that has sent or received a disabletx message to/from a peer MUST=
 NOT send any of these messages to the peer:
> ## inv messages for transactions
> ## getdata messages for transactions
> ## getdata messages for merkleblock (BIP 37)
> ## filteradd/filterload/filterclear (BIP 37)
> ## mempool (BIP 35)
> # It is RECOMMENDED that a node that has sent or received a disabletx mess=
age to/from a peer not send any of these messages to the peer:
> ## addr/getaddr
> ## addrv2 (BIP 155)
> # The behavior regarding sending or processing other message types is not s=
pecified by this BIP.
> # Nodes MAY decide to not remain connected to peers that send this message=
 (for example, if trying to find a peer that will relay transactions).
>=20
> =3D=3DCompatibility=3D=3D
>=20
> Nodes with protocol version >=3D 70017 that do not implement this BIP, and=
 nodes
> with protocol version < 70017, will continue to remain compatible with
> implementing software: transactions would not be relayed to peers sending t=
he
> disabletx message (provided that BIP 37 or BIP 60 has been implemented), a=
nd while
> periodic address relay may still take place, software implementing this BI=
P
> should not be disconnecting such peers solely for that reason.
>=20
> Disabling address relay is suggested but not required by this BIP, to allo=
w for
> future protocol extensions that might specify more carefully how address r=
elay
> is to be negotiated. This BIP's recommendations for software to not relay
> addresses is intended to be interpreted as guidance in the absence of any s=
uch
> future protocol extension, to accommodate existing software behavior.
>=20
> Note that all messages specified in BIP 152, including blocktxn and
> getblocktxn, are permitted between peers that have sent/received a disable=
tx
> message, subject to the feature negotiation of BIP 152.
>=20
> =3D=3DImplementation=3D=3D
>=20
> TBD
>=20
> =3D=3DReferences=3D=3D
>=20
> # Bitcoin Core has [https://github.com/bitcoin/bitcoin/pull/15759 implemen=
ted this functionality] since version 0.19.0.1, released in November 2019.
> # For example, see https://www.cs.umd.edu/projects/coinscope/coinscope.pdf=
 and https://arxiv.org/pdf/1812.00942.pdf.
>=20
> =3D=3DCopyright=3D=3D
>=20
> This BIP is licensed under the 2-clause BSD license.
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists.linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

--Apple-Mail-20F0586B-F0E5-485E-897F-2232FAEB9F72
Content-Type: text/html;
	charset=utf-8
Content-Transfer-Encoding: quoted-printable

<html><head><meta http-equiv=3D"content-type" content=3D"text/html; charset=3D=
utf-8"></head><body dir=3D"auto"><div dir=3D"ltr">Out of curiosity, was the i=
nteraction between fRelay and bloom disabling ever specified? ie if you aren=
=E2=80=99t allowed to enable bloom filters on a connection due to resource c=
onstraints/new limits, is it ever possible to =E2=80=9Cset=E2=80=9D fRelay l=
ater?</div><div dir=3D"ltr"><br></div><div dir=3D"ltr">Matt</div><div dir=3D=
"ltr"><br><blockquote type=3D"cite">On Jan 6, 2021, at 11:35, Suhas Daftuar v=
ia bitcoin-dev &lt;bitcoin-dev@lists.linuxfoundation.org&gt; wrote:<br><br><=
/blockquote></div><blockquote type=3D"cite"><div dir=3D"ltr">=EF=BB=BF<div d=
ir=3D"ltr">Hi,<div><br></div><div>I'm proposing the addition of a new, optio=
nal p2p message to allow peers to communicate that they do not want to send o=
r receive (loose) transactions for the lifetime of a connection.&nbsp;</div>=
<div><br></div><div>The goal of this message is to help facilitate&nbsp;conn=
ections on the network over which only block-related data (blocks/headers/co=
mpact blocks/etc) are relayed, to create low-resource connections that help p=
rotect against partition attacks on the network.&nbsp; In particular, by add=
ing a network message that communicates that transactions will not be relaye=
d for the life of the connection, we ease the implementation of software tha=
t could have increased inbound connection limits for such peers, which in tu=
rn will make it easier to add additional persistent block-relay-only connect=
ions on the network -- strengthening network security for little additional b=
andwidth.</div><div><br></div><div>Software has been deployed for over a yea=
r now which makes such connections, using the BIP37/BIP60 "fRelay" field in t=
he version message to signal that transactions should not be sent initially.=
&nbsp; However, BIP37 allows for transaction relay to be enabled&nbsp;later i=
n the connection's lifetime, complicating software that would try to disting=
uish inbound peers that will never relay transactions from those that might.=
</div><div><br></div><div>This proposal would add a single new p2p message, "=
disabletx", which (if used at all) must be sent between version and verack.&=
nbsp; I propose that this message is valid for peers advertising protocol ve=
rsion 70017 or higher.&nbsp; Software&nbsp;is free to implement this BIP or i=
gnore this message and remain compatible with software that does implement i=
t.</div><div><br></div><div>Full text of the proposed BIP is below.</div><di=
v><br></div><div>Thanks,<br></div><div>Suhas<br></div><div><br></div><div>--=
-------------------------------------------------</div><div><br></div><div><=
pre style=3D"color:rgb(0,0,0);white-space:pre-wrap">&lt;pre&gt;
  BIP: XXX
  Layer: Peer Services
  Title: Disable transaction relay message
  Author: Suhas Daftuar &lt;<a href=3D"mailto:sdaftuar@chaincode.com">sdaftu=
ar@chaincode.com</a>&gt;
  Comments-Summary: No comments yet.
  Comments-URI:
  Status: Draft
  Type: Standards Track
  Created: 2020-09-03
  License: BSD-2-Clause
&lt;/pre&gt;

=3D=3DAbstract=3D=3D

This BIP describes a change to the p2p protocol to allow a node to tell a pe=
er
that a connection will not be used for transaction relay, to support
block-relay-only connections that are currently in use on the network.

=3D=3DMotivation=3D=3D

For nearly the past year, software has been deployed[1] which initiates
connections on the Bitcoin network and sets the transaction relay field
(introduced by BIP 37 and also defined in BIP 60) to false, to prevent
transaction relay from occurring on the connection. Additionally, addr messa=
ges
received from the peer are ignored by this software.

The purpose of these connections is two-fold: by making additional
low-bandwidth connections on which blocks can propagate, the robustness of a=

node to network partitioning attacks is strengthened.  Additionally, by not
relaying transactions and ignoring received addresses, the ability of an
adversary to learn the complete network graph (or a subgraph) is reduced[2],=

which in turn increases the cost or difficulty to an attacker seeking to car=
ry
out a network partitioning attack (when compared with having such knowledge)=
.

The low-bandwidth / minimal-resource nature of these connections is currentl=
y
known only by the initiator of the connection; this is because the transacti=
on
relay field in the version message is not a permanent setting for the lifeti=
me
of the connection.  Consequently, a node receiving an inbound connection wit=
h
transaction relay disabled cannot distinguish between a peer that will never=

enable transaction relay (as described in BIP 37) and one that will.  Moreov=
er,
the node also cannot determine that the incoming connection will ignore rela=
yed
addresses; with that knowledge a node would likely choose other peers to
receive announced addresses instead.

This proposal adds a new, optional message that a node can send a peer when
initiating a connection to that peer, to indicate that connection should not=
 be
used for transaction-relay for the connection's lifetime. In addition, witho=
ut
a current mechanism to negotiate whether addresses should be relayed on a
connection, this BIP suggests that address messages not be sent on links whe=
re
tx-relay has been disabled.

=3D=3DSpecification=3D=3D

# A new disabletx message is added, which is defined as an empty message whe=
re pchCommand =3D=3D "disabletx".
# The protocol version of nodes implementing this BIP must be set to 70017 o=
r higher.
# If a node sets the transaction relay field in the version message to a pee=
r to false, then the disabletx message MAY also be sent in response to a ver=
sion message from that peer if the peer's protocol version is &gt;=3D 70017.=
 If sent, the disabletx message MUST be sent prior to sending a verack.
# A node that has sent or received a disabletx message to/from a peer MUST N=
OT send any of these messages to the peer:
## inv messages for transactions
## getdata messages for transactions
## getdata messages for merkleblock (BIP 37)
## filteradd/filterload/filterclear (BIP 37)
## mempool (BIP 35)
# It is RECOMMENDED that a node that has sent or received a disabletx messag=
e to/from a peer not send any of these messages to the peer:
## addr/getaddr
## addrv2 (BIP 155)
# The behavior regarding sending or processing other message types is not sp=
ecified by this BIP.
# Nodes MAY decide to not remain connected to peers that send this message (=
for example, if trying to find a peer that will relay transactions).

=3D=3DCompatibility=3D=3D

Nodes with protocol version &gt;=3D 70017 that do not implement this BIP, an=
d nodes
with protocol version &lt; 70017, will continue to remain compatible with
implementing software: transactions would not be relayed to peers sending th=
e
disabletx message (provided that BIP 37 or BIP 60 has been implemented), and=
 while
periodic address relay may still take place, software implementing this BIP
should not be disconnecting such peers solely for that reason.

Disabling address relay is suggested but not required by this BIP, to allow f=
or
future protocol extensions that might specify more carefully how address rel=
ay
is to be negotiated. This BIP's recommendations for software to not relay
addresses is intended to be interpreted as guidance in the absence of any su=
ch
future protocol extension, to accommodate existing software behavior.

Note that all messages specified in BIP 152, including blocktxn and
getblocktxn, are permitted between peers that have sent/received a disabletx=

message, subject to the feature negotiation of BIP 152.

=3D=3DImplementation=3D=3D

TBD

=3D=3DReferences=3D=3D

# Bitcoin Core has [<a href=3D"https://github.com/bitcoin/bitcoin/pull/15759=
">https://github.com/bitcoin/bitcoin/pull/15759</a> implemented this functio=
nality] since version 0.19.0.1, released in November 2019.
# For example, see <a href=3D"https://www.cs.umd.edu/projects/coinscope/coin=
scope.pdf">https://www.cs.umd.edu/projects/coinscope/coinscope.pdf</a> and <=
a href=3D"https://arxiv.org/pdf/1812.00942.pdf">https://arxiv.org/pdf/1812.0=
0942.pdf</a>.

=3D=3DCopyright=3D=3D

This BIP is licensed under the 2-clause BSD license.</pre></div></div>
<span>_______________________________________________</span><br><span>bitcoi=
n-dev mailing list</span><br><span>bitcoin-dev@lists.linuxfoundation.org</sp=
an><br><span>https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev<=
/span><br></div></blockquote></body></html>=

--Apple-Mail-20F0586B-F0E5-485E-897F-2232FAEB9F72--