Return-Path: Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by lists.linuxfoundation.org (Postfix) with ESMTP id 7462CC0033; Sun, 20 Feb 2022 16:29:15 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 5C2DF813AD; Sun, 20 Feb 2022 16:29:15 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org X-Spam-Flag: NO X-Spam-Score: -2.098 X-Spam-Level: X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no Authentication-Results: smtp1.osuosl.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id pNpfHVFpYXTY; Sun, 20 Feb 2022 16:29:14 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 X-Greylist: whitelisted by SQLgrey-1.8.0 Received: from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com [IPv6:2a00:1450:4864:20::12d]) by smtp1.osuosl.org (Postfix) with ESMTPS id D666A81394; Sun, 20 Feb 2022 16:29:13 +0000 (UTC) Received: by mail-lf1-x12d.google.com with SMTP id b9so14359461lfv.7; Sun, 20 Feb 2022 08:29:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=c8TxWfd+wCUpl+uV2MO90xsSO+q9c9QXSPv06gz56dw=; b=hLSMMSU/u88EXst1WpXTRS+ICikiITKb823cbd1AxLJItLvyStR91s7zVRo95wLwj2 ilFSQyKnQ3K20nafYCcXNX+yneZGC7S/EnNpScJSh3hGKppeVBLbk3kqFXRc++LiuJws kZXM1ahWJohq9HOabmJbsTyXooh+aRPhAOIVKUcq93sHfolbhBY150wm3S1EnFih6pQB 8+jRPvGl/XZmiM9UVz0LEXpYx/ALaDVx5nIdNTWymdCO1VgPwy8AXXeCvs0KljolMLUh 1CMH2NE7YLRlNNHyIOBhlZjTAA06c56QlU6SNAr49Y2s2M6T1uyG0o2XpDTf88SzYsvx V6XA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=c8TxWfd+wCUpl+uV2MO90xsSO+q9c9QXSPv06gz56dw=; b=tbXmYP8YXLr4VUUwHOaCs/1+xuiVztTNytaxkn1qRLVax3RtFJNj6u2+9gCRFRra0s CY64uMvWsc7sqIJV9JQcklU+tDM6OFgBv2om0qQRng0HpfiMd40vkGrq/eeb1srqpRgY bzAxYdKtFwckR7aSxNX3IS1/xrZBXVmDWlWwB2AziymyIuS5KjqUkzphTb6XTtE2Uhk3 9C4hdny66Wwr0ebpndwOYPfQ92HFW6/EPzWwaYSARtFGeixkEeU/TOgwjBrKoGkqzXkz Ux+Fzp0G8pZ1T0wrvvM6YTyxZGHW1I/jqfJeYYb2VEZbKKXCeeNqpezRXrhYyLPpbMZh qjeQ== X-Gm-Message-State: AOAM53246G6r9Sx/E+BROui6soZlvF0Lj3MJkCpgJu4w8njbkNI93Wb/ MRApUnDFh6HuJ9XtO3QyUPekRNzW14MiHNbnTWc= X-Google-Smtp-Source: ABdhPJxwD/wPUJByTgafgWGqZshOaqp5sbry+BRMDkXgO93PhrP8Iu6iumR7dHwiixawcauokllWTa0OfBR0b3REzuo= X-Received: by 2002:a05:6512:1322:b0:443:161a:c693 with SMTP id x34-20020a056512132200b00443161ac693mr11364531lfu.363.1645374551515; Sun, 20 Feb 2022 08:29:11 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Jeremy Rubin Date: Sun, 20 Feb 2022 08:29:00 -0800 Message-ID: To: Peter Todd Content-Type: multipart/alternative; boundary="000000000000aa684205d8759d3c" Cc: Bitcoin Protocol Discussion , lightning-dev , Jeremy Subject: Re: [bitcoin-dev] [Pre-BIP] Fee Accounts X-BeenThere: bitcoin-dev@lists.linuxfoundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Bitcoin Protocol Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Feb 2022 16:29:15 -0000 --000000000000aa684205d8759d3c Content-Type: text/plain; charset="UTF-8" -- @JeremyRubin On Sat, Feb 19, 2022 at 1:39 AM Peter Todd wrote: > On Fri, Feb 18, 2022 at 04:38:27PM -0800, Jeremy Rubin wrote: > > > As I said, it's a new kind of pinning attack, distinct from other types > > of pinning attack. > > > > I think pinning is "formally defined" as sequences of transactions which > > prevent or make it less likely for you to make any progress (in terms of > > units of computation proceeding). > > Mentioning "computation" when talking about transactions is misleading: > blockchain transactions have nothing to do with computation. > It is in fact computation. Branding it as "misleading" is misleading... The relevant literature is https://en.wikipedia.org/wiki/Non-blocking_algorithm, sponsors helps get rid of deadlocking so that any thread can be guaranteed to make progress. E.g., this is critical in Eltoo, which is effectively a coordinated multi-party computation on-chain to compute the highest sequence number known by any worker. That transactions are blobs of "verification" (which is also itself a computation) less so than dynamic computations is irrelevant to the fact that series of transactions do represent computations. > > Something that only increases possibility to make progress cannot be > > pinning. > > It is incorrect to say that all use-cases have the property that any > version of > a transaction being mined is progress. > It is progress, tautologically. Progress is formally definable as a transaction of any kind getting mined. Pinning prevents progress by an adversarial worker. Sponsoring enables progress, but it may not be your preferred interleaving. That's OK, but it's inaccurate to say it is not progress. Your understanding of how OpenTimestamps calendars work appears to be > incorrect. There is no chain of unconfirmed transactions. Rather, OTS > calendars > use RBF to _update_ the timestamp tx with a new merkle tip hash for to all > outstanding per-second commitments once per new block. In high fee > situations > it's normal for there to be dozens of versions of that same tx, each with a > slightly higher feerate. > I didn't claim there to be a chain of unconfirmed, I claimed that there could be single output chain that you're RBF'ing one step per block. E.g., it could be something like A_0 -> {A_1 w/ CSV 1 block, OP_RETURN {blah, foo}} A_1 -> {A_2 w/ CSV 1 block, OP_RETURN {bar}} such that A_i provably can't have an unconfirmed descendant. The notion would be that you're replacing one with another. E.g., if you're updating the calendar like: Version 0: A_0 -> {A_1 w/ CSV 1 block, OP_RETURN {blah, foo}} Version 1: A_0 -> {A_1 w/ CSV 1 block, OP_RETURN {blah, foo, bar}} Version 2: A_0 -> {A_1 w/ CSV 1 block, OP_RETURN {blah, foo, bar, delta}} and version 1 gets mined, then in A_1's spend you simply shift delta to that (next) calendar. A_1 -> {A_2 w/ CSV 1 block, OP_RETURN {delta}} Thus my claim that someone sponsoring a old version only can delay by 1 block the calendar commit. > OTS calendars can handle any of those versions getting mined. But older > versions getting mined wastes money, as the remaining commitments still > need to > get mined in a subsequent transaction. Those remaining commitments are also > delayed by the time it takes for the next tx to get mined. > > There are many use-cases beyond OTS with this issue. For example, some > entities > use "in-place" replacement for update low-time-preference settlement > transactions by adding new txouts and updating existing ones. Older > versions of > those settlement transactions getting mined rather than the newer version > wastes money and delays settlement for the exact same reason it does in > OTS. > > > > Lastly, if you do get "necromanced" on an earlier RBF'd transaction by a > > third party for OTS, you should be relatively happy because it cost you > > less fees overall, since the undoing of your later RBF surely returned > some > > satoshis to your wallet. > > As I said above, no it doesn't. > > It does save money since you had to pay to RBF, the N+1st txn will be paying higher fee than the Nth. So if someone else sponsors an earlier version, then you save whatever feerate/fee bumps you would have paid and the funds are again in your change output (or something). You can apply those change output savings to your next batch, which can include any entries that have been dropped . --000000000000aa684205d8759d3c Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

On Sat, Feb 19, 2022 at 1:39 AM Peter Todd <pete@petertodd.org> wrote:
<= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);pa= dding-left:1ex">On Fri, Feb 18, 2022 at 04:38:27PM -0800, Jeremy Rubin wrot= e:
> > As I said, it's a new kind of pinning attack, distinct from o= ther types
> of pinning attack.
>
> I think pinning is "formally defined" as sequences of transa= ctions which
> prevent or make it less likely for you to make any progress (in terms = of
> units of computation proceeding).

Mentioning "computation" when talking about transactions is misle= ading:
blockchain transactions have nothing to do with computation.

It is in fact computation. Brandi= ng it as "misleading" is misleading... The relevant literature is= =C2=A0http= s://en.wikipedia.org/wiki/Non-blocking_algorithm, sponsors helps get ri= d of deadlocking so that any thread can be guaranteed to make progress. E.g= ., this is critical in Eltoo, which is effectively a coordinated multi-part= y computation on-chain to compute the highest sequence number known by any = worker.

That transactions are blobs of "verification" (which is a= lso itself a computation) less so than dynamic computations is irrelevant t= o the fact that series of transactions do represent computations.

=
=C2=A0
> Something that only increases possibility to make progress cannot be > pinning.

It is incorrect to say that all use-cases have the property that any versio= n of
a transaction being mined is progress.

=
It is progress, tautologically. Progres= s is formally definable as a transaction of any kind getting mined. Pinning= prevents progress by an adversarial worker. Sponsoring enables progress, b= ut it may not be your preferred interleaving. That's OK, but it's i= naccurate to say it is not progress.

Your understanding of how OpenTimestamps calendars work appears to be
incorrect. There is no chain of unconfirmed transactions. Rather, OTS calen= dars
use RBF to _update_ the timestamp tx with a new merkle tip hash for to all<= br> outstanding per-second commitments once per new block. In high fee situatio= ns
it's normal for there to be dozens of versions of that same tx, each wi= th a
slightly higher feerate.

I didn't claim there to be a chain of unconfirmed, I c= laimed that there could be single output chain that you're RBF'ing = one step per block.

E.g., it could be something like

A_0 -> {A_1 w/ CSV 1 block, OP_RETURN {blah, foo}}
A_1 -> {A_2 w/ CSV 1 block, OP_RETURN {bar}}
=

such that A_i provably can't have an unconfirmed descendant. The= notion would be that you're replacing one with another. E.g., if you&#= 39;re updating the calendar like:


Version 0: A_0 -> {A_1 w= / CSV 1 block, OP_RETURN {blah, foo}}
Ver= sion 1: A_0 -> {A_1 w/ CSV 1 block, OP_RETURN {blah, foo, bar}}
Version 2: A_0 -> {A_1 w/ CSV 1 block, OP_RETU= RN {blah, foo, bar, delta}}

and version 1 gets mined, the= n in A_1's spend you simply shift delta to that (next) calendar.
<= div class=3D"gmail_default" style=3D"font-family:arial,helvetica,sans-serif= ;font-size:small;color:rgb(0,0,0)">
A_1 -> {A_2 w/ CSV 1 block, OP_RETURN= {delta}}

Thus my claim that someone sponsoring a old ver= sion only can delay by 1 block the calendar commit.


<= div class=3D"gmail_default" style=3D"font-family:arial,helvetica,sans-serif= ;font-size:small;color:rgb(0,0,0)">


OTS calendars can handle any of those versions getting mined. But older
versions getting mined wastes money, as the remaining commitments still nee= d to
get mined in a subsequent transaction. Those remaining commitments are also=
delayed by the time it takes for the next tx to get mined.

There are many use-cases beyond OTS with this issue. For example, some enti= ties
use "in-place" replacement for update low-time-preference settlem= ent
transactions by adding new txouts and updating existing ones. Older version= s of
those settlement transactions getting mined rather than the newer version wastes money and delays settlement for the exact same reason it does in OTS= .


> Lastly, if you do get "necromanced" on an earlier RBF'd = transaction by a
> third party for OTS, you should be relatively happy because it cost yo= u
> less fees overall, since the undoing of your later RBF surely returned= some
> satoshis to your wallet.

As I said above, no it doesn't.


It does save money since you had to pay to = RBF, the N+1st txn will be paying higher fee than the Nth. So if someone el= se sponsors an earlier version, then you save whatever feerate/fee bumps yo= u would have paid and the funds are again in your change output (or somethi= ng). You can apply those change output savings to your next batch, which ca= n include any entries that have been dropped . --000000000000aa684205d8759d3c--