Return-Path: <john@johnnewbery.com>
Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org
	[172.17.192.35])
	by mail.linuxfoundation.org (Postfix) with ESMTPS id 615ADAF0
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Fri, 18 Oct 2019 20:53:40 +0000 (UTC)
X-Greylist: whitelisted by SQLgrey-1.7.6
Received: from mail-ot1-f50.google.com (mail-ot1-f50.google.com
	[209.85.210.50])
	by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 00ED7821
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Fri, 18 Oct 2019 20:53:36 +0000 (UTC)
Received: by mail-ot1-f50.google.com with SMTP id 60so6118700otu.0
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Fri, 18 Oct 2019 13:53:36 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=johnnewbery-com.20150623.gappssmtp.com; s=20150623;
	h=mime-version:references:in-reply-to:from:date:message-id:subject:to; 
	bh=VtA7JtFWaA14yl4jXBfEuEAy5sNwUbVBVNM9RWb33Zg=;
	b=LQ6K2tNwqdEnGFEV74csD2ByfD+YS+RHw2c68nXcxV+GRE5e0fgT9q1rEEkDw2h4UM
	7ljGndZN7hPJEIXtCa6C8bElr/omsuWyh5jS/aMl9XQk+i1r9UJxbL6gE+AS7jvAKC/8
	bLrfkhScS0VaHIeEdkZFFbaelPRoEboJAHaAv4m+N37y//M5dsWfIZhKSokQ9GIoUXJA
	tikE6BQi8iIZCl1Hf2YFKVAJDA/cVFglCtzy5AQrcwiKR/+G4aRNXjE4P/TkdBbzsnzW
	/yS2OVCh7aPDylSw7xnEQjPcasBYCktHZaYDog62HmZD4XHGVd1HMT3/398M41P2HXpz
	4QdQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20161025;
	h=x-gm-message-state:mime-version:references:in-reply-to:from:date
	:message-id:subject:to;
	bh=VtA7JtFWaA14yl4jXBfEuEAy5sNwUbVBVNM9RWb33Zg=;
	b=WRk2dQg1MiGLo0nltII9/dHAc9Evfkqv0qxkV0wR34Xuy049+MffoAvhw5BXTcjMKs
	vw1vawFGl0kaUHnHgmGkbwhm8ORP7OK5Lzgd5ivUCLFsKEdBTS0bkLoqMj/IRVQhQuiu
	teyE2nqb8wY1VF5QDscb0TLac1147Sf+yOOJPnn65XtId78shCEjaNx4EBwlMVhjG9+U
	KMkgcKdax8COoz027CzCJjodOwjWU2lpZrEVtMYIL96mtSL7YRUegLHzuzazjC9XSJn2
	vfyhR/8jnoWbT2iFNAOYQEG6WgWFM4+QsPUt34ludk0uWRc6NamcZSCuyHCXAJQ+ZNf6
	HmfA==
X-Gm-Message-State: APjAAAVMKI2u65d6zF7fBq0mHzHyoZia1v3jYCOoEg/jZBhBNZuthGL1
	1Io7EWyGgOUuKct+AUZ9HykFhEd/hIM=
X-Google-Smtp-Source: APXvYqyuOPe8sTHebs80ZlBUlHTIwgRQZycpZy7cpRA33CRTiHO24qco5uDOAUTsaB+xJq8n9TBEeA==
X-Received: by 2002:a05:6830:22e6:: with SMTP id
	t6mr9169381otc.65.1571432015673; 
	Fri, 18 Oct 2019 13:53:35 -0700 (PDT)
Received: from mail-ot1-f47.google.com (mail-ot1-f47.google.com.
	[209.85.210.47]) by smtp.gmail.com with ESMTPSA id
	y11sm1687019oih.18.2019.10.18.13.53.34
	for <bitcoin-dev@lists.linuxfoundation.org>
	(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
	Fri, 18 Oct 2019 13:53:34 -0700 (PDT)
Received: by mail-ot1-f47.google.com with SMTP id g13so6082036otp.8
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Fri, 18 Oct 2019 13:53:34 -0700 (PDT)
X-Received: by 2002:a9d:37a1:: with SMTP id x30mr9608771otb.49.1571432013831; 
	Fri, 18 Oct 2019 13:53:33 -0700 (PDT)
MIME-Version: 1.0
References: <CAK51vgDO2Tg38XbW0pqAnO3ETJ_qf8owRsUYsTXmrf7H2yGZtw@mail.gmail.com>
	<CAFmfg2u3cLwG4h=tSF1+ho__1n2n4xyBGH+mwQgVYE9c_s+EMw@mail.gmail.com>
In-Reply-To: <CAFmfg2u3cLwG4h=tSF1+ho__1n2n4xyBGH+mwQgVYE9c_s+EMw@mail.gmail.com>
From: John Newbery <john@johnnewbery.com>
Date: Fri, 18 Oct 2019 16:53:23 -0400
X-Gmail-Original-Message-ID: <CAFmfg2sU=ur7NdzU6r9bGC=xZqcX7WA7ux-r8QOwNa+FKhS4Pw@mail.gmail.com>
Message-ID: <CAFmfg2sU=ur7NdzU6r9bGC=xZqcX7WA7ux-r8QOwNa+FKhS4Pw@mail.gmail.com>
To: Marco Falke via bitcoin-dev <bitcoin-dev@lists.linuxfoundation.org>
Content-Type: multipart/alternative; boundary="000000000000f9243e059535864b"
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,
	DKIM_VALID, HTML_MESSAGE, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on
	smtp1.linux-foundation.org
X-Mailman-Approved-At: Fri, 18 Oct 2019 21:32:45 +0000
Subject: Re: [bitcoin-dev] Removal of reject network messages from Bitcoin
 Core (BIP61)
X-BeenThere: bitcoin-dev@lists.linuxfoundation.org
X-Mailman-Version: 2.1.12
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: Fri, 18 Oct 2019 20:53:40 -0000

--000000000000f9243e059535864b
Content-Type: text/plain; charset="UTF-8"

> Is there a NODE_* bit we can use to pick peers that support this (useful!)
feature?

No. BIP 61 has no mechanism for advertising that a node will send REJECT
messages.

On Wed, Oct 16, 2019 at 12:43 PM John Newbery <john@johnnewbery.com> wrote:

> Following discussion on this mailing list, support for BIP 61 REJECT
> messages was not removed from Bitcoin Core in V0.19. The behaviour in that
> upcoming release is that REJECT messages are disabled by default and can be
> enabled using the `-enablebip61` command line option.
>
> Support for REJECT messages will be removed entirely in Bitcoin Core
> V0.20, expected for release in mid 2020. The PR to remove support was
> merged into Bitcoin Core's master branch this week.
>
> Adoption of new Bitcoin Core versions across reachable nodes generally
> takes several months. https://bitnodes.earn.com/dashboard/?days=365 shows
> that although v0.18 was released in May 2019, there are still several
> hundred reachable nodes on V0.17, V0.16, V0.15 and earlier software.
> Software that currently use REJECT messages from public nodes for
> troubleshooting issues therefore have plenty of time to transition to one
> of the methods listed by Marco in the email above.
>
> John
>
> On Tue, Mar 5, 2019 at 10:28 PM Marco Falke via bitcoin-dev <
> bitcoin-dev@lists.linuxfoundation.org> wrote:
>
>> Bitcoin Core may send "reject" messages as response to "tx", "block" or
>> "version" messages from a network peer when the message could not be
>> accepted.
>>
>> This feature is toggled by the `-enablebip61` command line option and has
>> been
>> disabled by default since Bitcoin Core version 0.18.0 (not yet released
>> as of
>> time of writing). Nodes on the network can not generally be trusted to
>> send
>> valid ("reject") messages, so this should only ever be used when
>> connected to a
>> trusted node. At this time, I am not aware of any software that requires
>> this
>> feature, and I would like to remove if from Bitcoin Core to make the
>> codebase
>> slimmer, easier to understand and maintain. Let us know if your
>> application
>> relies on this feature and you can not use any of the recommended
>> alternatives:
>>
>> * Testing or debugging of implementations of the Bitcoin P2P network
>> protocol
>>   should be done by inspecting the log messages that are produced by a
>> recent
>>   version of Bitcoin Core. Bitcoin Core logs debug messages
>>   (`-debug=<category>`) to a stream (`-printtoconsole`) or to a file
>>   (`-debuglogfile=<debug.log>`).
>>
>> * Testing the validity of a block can be achieved by specific RPCs:
>>   - `submitblock`
>>   - `getblocktemplate` with `'mode'` set to `'proposal'` for blocks with
>>     potentially invalid POW
>>
>> * Testing the validity of a transaction can be achieved by specific RPCs:
>>   - `sendrawtransaction`
>>   - `testmempoolaccept`
>>
>> * Wallets should not use the absence of "reject" messages to indicate a
>>   transaction has propagated the network, nor should wallets use "reject"
>>   messages to set transaction fees. Wallets should rather use fee
>> estimation
>>   to determine transaction fees and set replace-by-fee if desired. Thus,
>> they
>>   could wait until the transaction has confirmed (taking into account the
>> fee
>>   target they set (compare the RPC `estimatesmartfee`)) or listen for the
>>   transaction announcement by other network peers to check for
>> propagation.
>>
>> I propose to remove "reject" messages from Bitcoin Core 0.19.0 unless
>> there are
>> valid concerns about its removal.
>>
>> Marco
>> _______________________________________________
>> bitcoin-dev mailing list
>> bitcoin-dev@lists.linuxfoundation.org
>> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>>
>

--000000000000f9243e059535864b
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr">&gt;=C2=A0<span style=3D"color:rgb(0,0,0)=
;white-space:pre-wrap">Is there a NODE_* bit we can use to pick peers that =
support this </span><span style=3D"color:rgb(0,0,0);white-space:pre-wrap">(=
useful!) feature?</span></div><div dir=3D"ltr"><span style=3D"color:rgb(0,0=
,0);white-space:pre-wrap"><br></span></div><div><span style=3D"color:rgb(0,=
0,0);white-space:pre-wrap">No. BIP 61 has no mechanism for advertising that=
 a node will send REJECT messages.</span></div><div><br></div><div class=3D=
"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Wed, Oct 16, 2019 at=
 12:43 PM John Newbery &lt;<a href=3D"mailto:john@johnnewbery.com">john@joh=
nnewbery.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" styl=
e=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);paddin=
g-left:1ex"><div dir=3D"ltr"><div>Following discussion on this mailing list=
, support for BIP 61 REJECT messages was not removed from Bitcoin Core in V=
0.19. The behaviour in that upcoming release is that REJECT messages are di=
sabled by default and can be enabled using the `-enablebip61` command line =
option.<br><br>Support for REJECT messages will be removed entirely in Bitc=
oin Core V0.20, expected for release in mid 2020. The PR to remove support =
was merged into Bitcoin Core&#39;s master branch this week.<br><br>Adoption=
 of new Bitcoin Core versions across reachable nodes generally takes severa=
l months. <a href=3D"https://bitnodes.earn.com/dashboard/?days=3D365" targe=
t=3D"_blank">https://bitnodes.earn.com/dashboard/?days=3D365</a> shows that=
 although v0.18 was released in May 2019, there are still several hundred r=
eachable nodes on V0.17, V0.16, V0.15 and earlier software. Software that c=
urrently use REJECT messages from public nodes for troubleshooting issues t=
herefore have plenty of time to transition to one of the methods listed by =
Marco in the email above.<br></div><div><br></div>John<div><br><div class=
=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Tue, Mar 5, 2019 =
at 10:28 PM Marco Falke via bitcoin-dev &lt;<a href=3D"mailto:bitcoin-dev@l=
ists.linuxfoundation.org" target=3D"_blank">bitcoin-dev@lists.linuxfoundati=
on.org</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"m=
argin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left=
:1ex">Bitcoin Core may send &quot;reject&quot; messages as response to &quo=
t;tx&quot;, &quot;block&quot; or<br>
&quot;version&quot; messages from a network peer when the message could not=
 be accepted.<br>
<br>
This feature is toggled by the `-enablebip61` command line option and has b=
een<br>
disabled by default since Bitcoin Core version 0.18.0 (not yet released as =
of<br>
time of writing). Nodes on the network can not generally be trusted to send=
<br>
valid (&quot;reject&quot;) messages, so this should only ever be used when =
connected to a<br>
trusted node. At this time, I am not aware of any software that requires th=
is<br>
feature, and I would like to remove if from Bitcoin Core to make the codeba=
se<br>
slimmer, easier to understand and maintain. Let us know if your application=
<br>
relies on this feature and you can not use any of the recommended alternati=
ves:<br>
<br>
* Testing or debugging of implementations of the Bitcoin P2P network protoc=
ol<br>
=C2=A0 should be done by inspecting the log messages that are produced by a=
 recent<br>
=C2=A0 version of Bitcoin Core. Bitcoin Core logs debug messages<br>
=C2=A0 (`-debug=3D&lt;category&gt;`) to a stream (`-printtoconsole`) or to =
a file<br>
=C2=A0 (`-debuglogfile=3D&lt;debug.log&gt;`).<br>
<br>
* Testing the validity of a block can be achieved by specific RPCs:<br>
=C2=A0 - `submitblock`<br>
=C2=A0 - `getblocktemplate` with `&#39;mode&#39;` set to `&#39;proposal&#39=
;` for blocks with<br>
=C2=A0 =C2=A0 potentially invalid POW<br>
<br>
* Testing the validity of a transaction can be achieved by specific RPCs:<b=
r>
=C2=A0 - `sendrawtransaction`<br>
=C2=A0 - `testmempoolaccept`<br>
<br>
* Wallets should not use the absence of &quot;reject&quot; messages to indi=
cate a<br>
=C2=A0 transaction has propagated the network, nor should wallets use &quot=
;reject&quot;<br>
=C2=A0 messages to set transaction fees. Wallets should rather use fee esti=
mation<br>
=C2=A0 to determine transaction fees and set replace-by-fee if desired. Thu=
s, they<br>
=C2=A0 could wait until the transaction has confirmed (taking into account =
the fee<br>
=C2=A0 target they set (compare the RPC `estimatesmartfee`)) or listen for =
the<br>
=C2=A0 transaction announcement by other network peers to check for propaga=
tion.<br>
<br>
I propose to remove &quot;reject&quot; messages from Bitcoin Core 0.19.0 un=
less there are<br>
valid concerns about its removal.<br>
<br>
Marco<br>
_______________________________________________<br>
bitcoin-dev mailing list<br>
<a href=3D"mailto:bitcoin-dev@lists.linuxfoundation.org" target=3D"_blank">=
bitcoin-dev@lists.linuxfoundation.org</a><br>
<a href=3D"https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev" =
rel=3D"noreferrer" target=3D"_blank">https://lists.linuxfoundation.org/mail=
man/listinfo/bitcoin-dev</a><br>
</blockquote></div></div></div>
</blockquote></div></div>

--000000000000f9243e059535864b--