Return-Path: <dustinpaystaxes@gmail.com> Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 214B938A0 for <bitcoin-dev@lists.linuxfoundation.org>; Wed, 6 Mar 2019 04:00:50 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.7.6 Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 34DD278C for <bitcoin-dev@lists.linuxfoundation.org>; Wed, 6 Mar 2019 04:00:49 +0000 (UTC) Received: by mail-wr1-f53.google.com with SMTP id i12so11742443wrw.0 for <bitcoin-dev@lists.linuxfoundation.org>; Tue, 05 Mar 2019 20:00:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=4cKdAwqmtVCXnsg6GmtMkfEjwbzOQuaKDX2ffVfFWSk=; b=cijFIgCzWGjcFUjhulDUs0rHfVfvbhkhQ32tsiXFs4ahrjqwTlTUD4w0wlFX1t6oKP koFh14r+FYDCbgqOk+s7lxg4S4s7+kDgTEpgiMVJ8zNvEybwdRkwjdgQJRs2SiqJpnnZ B2b2g8L/ITM/HsBiErvTyFBRIMtjqUUPyKDuiijilmmQnKzADtH4dugGZFO1qcLqBsmn aqGno3xeMzT5+KNuX5rI3lmm8tc6WElXRD4Vhq1icJ6mKr/r8y0cG3edXR/ePk+p0ucv 7tJwOtpOeQRSVtGZQE2E/J3rgZobvyJiViBN8PHJkJv4YGBZoFGPJwcq9ukIpWSVUJCC /b+A== 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=4cKdAwqmtVCXnsg6GmtMkfEjwbzOQuaKDX2ffVfFWSk=; b=lq2P32oMsTCpSYTbTCJjdsGhaoVp7elY1Q75JXSexs7vGKoDZWV8DVTEaO8K+CYpgj 3yQ5qO9hnanEyh5jJG8uhJu4QtSOry1U95bKdKK5sDdh3s+5Dr0e2aE4UI54wcou01rR 2xYqIbfd8QxutlzFWHgz0l0lAuj/cKqklHN+82HU6WcJ7D4yzj474gy4crHoQjRqoPoc 3vej9qgXzjzirWVWSU+pRVRvhG7oCgvGUdqs7cMWrWf8mMTUfNPh5rsvh+oFCGFCEskL YrlewrB+jECAKFoKSQz2Z/EUweIJXMuVF4FXP9/Way53uX3W4eeus8xRM+U8rpWduGHy BqbA== X-Gm-Message-State: APjAAAXwfuY3T0aGEpE1MusR+5aF7cg9qQEEFj48J3GctDbLeJlBRhqV Y2LGLrDmYFGaCaAmnCK5DyzzKqzr2KUEd1HUcR/yXw== X-Google-Smtp-Source: APXvYqy8dWCTHo7TUV4AzczEJuMRASGzDDwRJFkdDJcZVTaQeNjMA5exE0p/5mK9P4ixkLMywRdSYZF1Jn9N7oomvHE= X-Received: by 2002:adf:cd02:: with SMTP id w2mr1292790wrm.30.1551844847357; Tue, 05 Mar 2019 20:00:47 -0800 (PST) MIME-Version: 1.0 References: <CAK51vgDO2Tg38XbW0pqAnO3ETJ_qf8owRsUYsTXmrf7H2yGZtw@mail.gmail.com> In-Reply-To: <CAK51vgDO2Tg38XbW0pqAnO3ETJ_qf8owRsUYsTXmrf7H2yGZtw@mail.gmail.com> From: Dustin Dettmer <dustinpaystaxes@gmail.com> Date: Tue, 5 Mar 2019 20:00:35 -0800 Message-ID: <CABLeJxTuWa-Kaht3PgvwGN5Eb3GW=HpS7uNMESMcLpqn4BgN3Q@mail.gmail.com> To: Bitcoin Protocol Discussion <bitcoin-dev@lists.linuxfoundation.org>, Marco Falke <falke.marco@gmail.com> Content-Type: multipart/alternative; boundary="000000000000df94e005836508f0" X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, 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: Wed, 06 Mar 2019 14:35:15 +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: Wed, 06 Mar 2019 04:00:50 -0000 --000000000000df94e005836508f0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable The reject message is helpful for figuring out why a tx was rejected. It=E2=80=99s not useful for determining success, yes. Particularly when doi= ng segwit / newer types of tx=E2=80=99s as there=E2=80=99s always one or more = pesky nodes who still don=E2=80=99t support it and send a reject message for perfectly good= tx=E2=80=99s. But after a delay where you haven=E2=80=99t seen your tx propagated on the = network, it=E2=80=99s useful to know *why* it failed. What would be nice is actually expanding this error message. Currently with RBF tx=E2=80=99s =E2=80=9Cfee too small=E2=80=9D is sent for both original = transactions as well as replacement transactions. So a bug accidentally sending spent txos (currently in mempool) says =E2=80=9Cfee too small=E2=80=9D instead of some= thing more appropriate like =E2=80=9Cfee too small to supersede existing unconfirmed transaction.=E2=80=9D On Tue, Mar 5, 2019 at 7:26 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 a= s > of > time of writing). Nodes on the network can not generally be trusted to se= nd > valid ("reject") messages, so this should only ever be used when connecte= d > 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 applicati= on > 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=3D<category>`) to a stream (`-printtoconsole`) or to a file > (`-debuglogfile=3D<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 propagatio= n. > > 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 > --000000000000df94e005836508f0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div><div dir=3D"auto">The reject message is helpful for figuring out why a= tx was rejected.</div></div><div dir=3D"auto"><br></div><div dir=3D"auto">= It=E2=80=99s not useful for determining success, yes. Particularly when doi= ng segwit / newer types of tx=E2=80=99s as there=E2=80=99s always one or mo= re pesky nodes who still don=E2=80=99t support it and send a reject message= for perfectly good tx=E2=80=99s.</div><div dir=3D"auto"><br></div><div dir= =3D"auto">But after a delay where you haven=E2=80=99t seen your tx propagat= ed on the network, it=E2=80=99s useful to know *why* it failed.</div><div d= ir=3D"auto"><br></div><div dir=3D"auto">What would be nice is actually expa= nding this error message. Currently with RBF tx=E2=80=99s =E2=80=9Cfee too = small=E2=80=9D is sent for both original transactions as well as replacemen= t transactions. So a bug accidentally sending spent txos (currently in memp= ool) says =E2=80=9Cfee too small=E2=80=9D instead of something more appropr= iate like =E2=80=9Cfee too small to supersede existing unconfirmed transact= ion.=E2=80=9D</div><div><br><div class=3D"gmail_quote"><div dir=3D"ltr" cla= ss=3D"gmail_attr">On Tue, Mar 5, 2019 at 7:26 PM Marco Falke via bitcoin-de= v <<a href=3D"mailto:bitcoin-dev@lists.linuxfoundation.org">bitcoin-dev@= lists.linuxfoundation.org</a>> wrote:<br></div><blockquote class=3D"gmai= l_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left= :1ex">Bitcoin Core may send "reject" messages as response to &quo= t;tx", "block" or<br> "version" 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 ("reject") 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<category>`) to a stream (`-printtoconsole`) or to = a file<br> =C2=A0 (`-debuglogfile=3D<debug.log>`).<br> <br> * Testing the validity of a block can be achieved by specific RPCs:<br> =C2=A0 - `submitblock`<br> =C2=A0 - `getblocktemplate` with `'mode'` set to `'proposal'= ;` 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 "reject" messages to indi= cate a<br> =C2=A0 transaction has propagated the network, nor should wallets use "= ;reject"<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 "reject" 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> --000000000000df94e005836508f0--