Return-Path: Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id A0F3D71F for ; Sat, 15 Apr 2017 13:23:38 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.7.6 Received: from mail-yb0-f172.google.com (mail-yb0-f172.google.com [209.85.213.172]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id E95248D for ; Sat, 15 Apr 2017 13:23:37 +0000 (UTC) Received: by mail-yb0-f172.google.com with SMTP id m133so23192917ybb.1 for ; Sat, 15 Apr 2017 06:23:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=7d8ucwSwjergwjE0B+H7xDw4TdXe+8Q/RK+Lsi7yl3w=; b=SGCTdtIgvYCpidWpkIgOL1l3UqlfQXLKq8/A4EGdcYuuqm34Un/KtpvHasXOS53DUS 7tkNO3VwjQvLQ5kJ28s96RymVmIwStJ25bT5uB2xZSDbz/uk4YZflmnQhivfGa/CARUu Da+eJdzY5Ji2OoDkxqYb41p7KyVyPUy90oBZ9xIQeQGe51rtEI229LYfQF41JpsuTYYM FAVhGxmMOgsrXSPGYaDyApaHg4g0YAW9RBThU5I16R73dHPWXDFpoqGelxc5+aVdC4ZQ GFlSV7VthrVSSyRIXy90I404rz9dTPck13iQqRHQAGaNC/4GJwZFlt71iWxWGbrhGcuT 1bAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=7d8ucwSwjergwjE0B+H7xDw4TdXe+8Q/RK+Lsi7yl3w=; b=d4magQc2vrSf6sFfa7E03QyPLYBKpeLmmlw0rWiTM1T4qmz0nr0rIk2TzqmnC4A3iR WtPdgBkA28eSeDuhgRv8YJcoFwbQp9SFQOo+TRrtWmGwTjbV5CKn7d6BJ98tRRlpTwX2 zu+wyfDvb2WbW94FEIeJQlDmhv7LZ5PPOCxJVSXLxM/B/b6l5lgSGRPjv38Ul3LafkJN qExsfAOJQYN0/pnftbT5+A+ukuCDtXrlcRpDqSzMeUwHwH3MY/8JmkH26Ft0mlclCPcu Uk9feWkyGT+d87xiYj21E0skoX2/y//pp8BlwbJMkT5YjI5sHdasdcRS3zipW7cxbgmH A0ow== X-Gm-Message-State: AN3rC/7ViAoUGbdihr8PdqPGgwp6llmFNX8FTe66UgxRPFHXoeMSdCRw d7jj254lV6WuYTYI754MULS9oTo96Q== X-Received: by 10.37.171.162 with SMTP id v31mr9729558ybi.88.1492262617057; Sat, 15 Apr 2017 06:23:37 -0700 (PDT) MIME-Version: 1.0 Received: by 10.37.123.135 with HTTP; Sat, 15 Apr 2017 06:23:35 -0700 (PDT) Received: by 10.37.123.135 with HTTP; Sat, 15 Apr 2017 06:23:35 -0700 (PDT) In-Reply-To: <2941cf86-422f-6a88-fb44-9ac01c5e996a@chrisacheson.net> References: <2941cf86-422f-6a88-fb44-9ac01c5e996a@chrisacheson.net> From: Natanael Date: Sat, 15 Apr 2017 15:23:35 +0200 Message-ID: To: Chris Acheson Content-Type: multipart/alternative; boundary=94eb2c18881a339378054d34770b X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM autolearn=no version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Bitcoin Dev Subject: Re: [bitcoin-dev] I do not support the BIP 148 UASF X-BeenThere: bitcoin-dev@lists.linuxfoundation.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Bitcoin Protocol Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Apr 2017 13:23:38 -0000 --94eb2c18881a339378054d34770b Content-Type: text/plain; charset=UTF-8 Den 15 apr. 2017 13:51 skrev "Chris Acheson via bitcoin-dev" < bitcoin-dev@lists.linuxfoundation.org>: Not sure if you missed my previous reply to you, but I'm curious about your thoughts on this particular point. I contend that for any UASF, orphaning non-signalling blocks on the flag date is [maybe] safer [for those in on the UASF fork] than just considering the fork active on the flag date. Note my additions. Enforcement by orphaning non-compliance makes it harder to reverse a buggy softfork, since you necessarily increase the effort needed to return enough mining power to the safe chain since you now have mostly unmonitored mining hardware fighting you actively, whose operators you might not be able to contact. You'd practically have to hardfork out of the situation. There's also the risk of the activation itself triggering concensus bugs (multiple incompatible UASF forks), if there's multiple implementations of it in the network (or one buggy one). We have already seen something like it happen. This can both happen on the miner side, client side or both (miner side only would lead to a ton of orphaned blocks, client side means netsplit). It is also not economically favorable for any individual miner to be the one to mine empty blocks on top of any surviving softfork-incompatible chain. As a miner you would only volunteer to do it if you believe the softfork is necessary or itself will enable greater future profit. Besides that, I also just don't believe that UASF itself as a method to activate softforks is a good choice. The only two reliable signals we have for this purpose in Bitcoin are block height (flag day) and standard miner signaling, as every other metric can be falsified or gamed. But there's also more problems - a big one is that we have no way right now for a node to tell another "the transaction you just relayed to me is invalid according to an active softfork" (or "will become invalid". This matters for several reasons. The first one that came to my mind is that we have widespread usage of zero-confirmation payments in the network. This was already dangerous for other reasons, but this UASF could make it guaranteed cost-free to exploit - because as many also know, we ALSO already have a lot of nodes that do not enforce the non-default rejection policies (otherwise we'd never see such transactions on blocks), including many alternative Bitcoin clients. The combination of these factors means that you can present an UASF invalid transaction to a non-updated client that is supposedly protected by the deliberate orphaning effort, and have it accept this as a payment. To never see it get confirmed, or to eventually see it doublespent by an UASF-valid transaction. I would not at all be surprised if it turned out that many zero-confirmation accepting services do not reject non-default transactions, or if they aren't all UASF-segwit aware. This is why a flag day or similar is more effective - it can't be ignored unlike "just another one of those UASF proposals" that you might not have evaluated or not expect to activate. This is by the way also a reason that I believe that all nodes and services should publish all concensus critical policies that they enforce. This would make it far easier to alert somebody that they NEED TO prepare for whatever proposal that might conflict with their active policies. --94eb2c18881a339378054d34770b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

=

Den 15 apr. 2017 13:51 skrev "Chris Acheson via bitcoin-dev" &l= t;bitcoin-dev@list= s.linuxfoundation.org>:

Not sure if you missed my previous reply to you, but I'm curious = about
your thoughts on this particular point. I contend that for any UASF,
orphaning non-signalling blocks on the flag date is [maybe] safer [for thos= e in on the UASF fork] than just
considering the fork active on the flag date.
<= div dir=3D"auto">
Note my additions.=C2=A0
=

Enforcement by orphaning non-= compliance makes it harder to reverse a buggy softfork, since you necessari= ly increase the effort needed to return enough mining power to the safe cha= in since you now have mostly unmonitored mining hardware fighting you activ= ely, whose operators you might not be able to contact. You'd practicall= y have to hardfork out of the situation.=C2=A0

<= /div>
There's also the risk of the activation itself t= riggering concensus bugs (multiple incompatible UASF forks), if there's= multiple implementations of it in the network (or one buggy one). We have = already seen something like it happen. This can both happen on the miner si= de, client side or both (miner side only would lead to a ton of orphaned bl= ocks, client side means netsplit).=C2=A0

<= div dir=3D"auto">It is also not economically favorable for any individual m= iner to be the one to mine empty blocks on top of any surviving softfork-in= compatible chain. As a miner you would only volunteer to do it if you belie= ve the softfork is necessary or itself will enable greater future profit.= =C2=A0

Besides that, I a= lso just don't believe that UASF itself as a method to activate softfor= ks is a good choice. The only two reliable signals we have for this purpose= in Bitcoin are block height (flag day) and standard miner signaling, as ev= ery other metric can be falsified or gamed.=C2=A0
But there's also more problems - a big one is= that we have no way right now for a node to tell another "the transac= tion you just relayed to me is invalid according to an active softfork"= ; (or "will become invalid". This matters for several reasons.=C2= =A0

The first one that c= ame to my mind is that we have widespread usage of zero-confirmation paymen= ts in the network.=C2=A0

This was already dangerous for other reasons, but this UASF could make it = guaranteed cost-free to exploit - because as many also know, we ALSO alread= y have a lot of nodes that do not enforce the non-default rejection policie= s (otherwise we'd never see such transactions on blocks), including man= y alternative Bitcoin clients.=C2=A0

The combination of these factors means that you can present an= UASF invalid transaction to a non-updated client that is supposedly protec= ted by the deliberate orphaning effort, and have it accept this as a paymen= t. To never see it get confirmed, or to eventually see it doublespent by an= UASF-valid transaction.=C2=A0

I would not at all be surprised if it turned out that many zero-conf= irmation accepting services do not reject non-default transactions, or if t= hey aren't all UASF-segwit aware.=C2=A0

This is why a flag day or similar is more effective - i= t can't be ignored unlike "just another one of those UASF proposal= s" that you might not have evaluated or not expect to activate.=C2=A0<= /div>

This is by the way also = a reason that I believe that all nodes and services should publish all conc= ensus critical policies that they enforce. This would make it far easier to= alert somebody that they NEED TO prepare for whatever proposal that might = conflict with their active policies.=C2=A0
--94eb2c18881a339378054d34770b--