Return-Path: Received: from smtp2.osuosl.org (smtp2.osuosl.org [IPv6:2605:bc80:3010::133]) by lists.linuxfoundation.org (Postfix) with ESMTP id B4704C002D for ; Fri, 22 Apr 2022 16:48:53 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id A267340126 for ; Fri, 22 Apr 2022 16:48:53 +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: smtp2.osuosl.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id L5qzV6pLgCDM for ; Fri, 22 Apr 2022 16:48:52 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 Received: from mail-oi1-x233.google.com (mail-oi1-x233.google.com [IPv6:2607:f8b0:4864:20::233]) by smtp2.osuosl.org (Postfix) with ESMTPS id 50F87400BA for ; Fri, 22 Apr 2022 16:48:52 +0000 (UTC) Received: by mail-oi1-x233.google.com with SMTP id v65so4940448oig.10 for ; Fri, 22 Apr 2022 09:48:52 -0700 (PDT) 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; bh=2V5Bvafnul3ACfoIHKV8xByjVWh9QDdRg+IXyEgQUD0=; b=Gl+QWGFcq8hvnR9Leo0BhyRXnsam3pFwNvIJPQh8Jl+75DAoZ+Fmh0fxsdzm1t5rGl vfkvBbsow7K7jBkPQrsaf6xuvc5GwT6sN8FdMso5kRD+zDJjimq1e3MIsTWKDqC+65Zo 8ttTI02jF+Rk5EhNGM0LFOSlD22H15B0wBVbWDOwUFawWP/YfQTpFPfyyolah5ttJ+fW uXr6mvc27pgDjri6i8c9+Fim4bioCdFRF4rENfSzS+/7vrq22HzDEcdpGfoB75dtMZu2 fFqIfPY+MDks3xZTaz5E9xCqtnPEbCQq9iLpPJVtXUDhPY/qAbtykLvfyGfTBvTyBeNK E24g== 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; bh=2V5Bvafnul3ACfoIHKV8xByjVWh9QDdRg+IXyEgQUD0=; b=5OpE10zkpE/nlP1vZtZwXj2v0YHVa6igZnvVhP76Ia5nZ4r34f0ANTWQxjT//diLsh itvH9pRhmvc8KTDA3O7rqTBxrbTOgxxapiAshhQZfpUZrV6nnWdFGqnatvyWOyPO4nRx CX00ahTgWBrGSaHCH38AIvxHqcAzhUQro3rYSWkAEC0ozin/BPUcGK503qx9wgkCHmRC cVMVGWDCrUem8x6WDGP1TXZEJTFjI9U5xdBbeg+8VbiMZS0D8epuN7IPMJPLf5Vs6+Gf s2G1GpQyp44zd9DgPlnURUOiHDvVTWbreMBAOj78o90ffUdP+zEk7kImRjkUBu/4UhKC 9phw== X-Gm-Message-State: AOAM531Zb0RcY4YG4aEsG3snGBC5u2Hs9NnRXBoW4Ow/gZ3G4ksz2nSJ IcXVfnDEd2nYt4YVqlHSruG1WDPGhVoaJI+P7s29nHZAlLHJ1g== X-Google-Smtp-Source: ABdhPJzYCbKAyM90zPNd3JbT3nnhL6sll2ODwkm6439I2kT2+60u8aOf4sUKM35Ah2SFw9AFSNf8SCVjlqxKPjr4+pI= X-Received: by 2002:a05:6808:1788:b0:322:eae3:5d3c with SMTP id bg8-20020a056808178800b00322eae35d3cmr2795295oib.222.1650646131172; Fri, 22 Apr 2022 09:48:51 -0700 (PDT) MIME-Version: 1.0 References: <64a34b4d46461da322be51b53ec2eb01@dtrt.org> <4b252ef6f86bbd494a67683f6113f3fe@dtrt.org> <4056eca7e1ff018bff03918b8c266d76@dtrt.org> In-Reply-To: <4056eca7e1ff018bff03918b8c266d76@dtrt.org> From: "James O'Beirne" Date: Fri, 22 Apr 2022 12:48:39 -0400 Message-ID: To: "David A. Harding" , Bitcoin Protocol Discussion Content-Type: multipart/alternative; boundary="0000000000004c676205dd41000b" Subject: Re: [bitcoin-dev] Automatically reverting ("transitory") soft forks, e.g. for CTV 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: Fri, 22 Apr 2022 16:48:53 -0000 --0000000000004c676205dd41000b Content-Type: text/plain; charset="UTF-8" > APO/IIDs, CTV, and TLUV/EVICT all seem to me to be very specific to > certain usecases (respectively: Eltoo, congestion control, and > joinpools) The enumeration of covenants uses here excludes vaulting, which I see as far and away the highest utility use for covenants given that it allows significant derisking of custody for any user of Bitcoin interested in holding their own coins (which is debatably redundant with a strict definition of "Bitcoin user" ;). A lot of why I like CTV is the simple fact that it is a low-risk way of getting us vaults. That feature in itself is more than enough to justify (to me) CTV's added validation complexity, which is very modest - in contrast every other covenant proposal I've seen so far. On Thu, Apr 21, 2022 at 6:28 PM David A. Harding via bitcoin-dev < bitcoin-dev@lists.linuxfoundation.org> wrote: > On 21.04.2022 08:39, Matt Corallo wrote: > > We add things to Bitcoin because (a) there's some demonstrated > > use-cases and intent to use the change (which I think we definitely > > have for covenants, but which only barely, if at all, suggests > > favoring one covenant design over any other) > > I'm unconvinced about CTV's use cases but others have made reasonable > claims that it will be used. We could argue about this indefinitely, > but I would love to give CTV proponents an opportunity to prove that a > significant number of people would use it. > > > (b) because its > > generally considered aligned with Bitcoin's design and goals, based on > > developer and more broad community response > > I think CTV fulfills this criteria. At least, I can't think of any way > BIP119 itself (notwithstanding activation concerns) violates Bitcoin's > designs and goals. > > > (c) because the > > technical folks who have/are wiling to spend time working on the > > specific design space think the concrete proposal is the best design > > we have > > This is the criteria that most concerns me. What if there is no > universal best? For example, I mentioned in my previous email that I'm > a partisan of OP_CAT+OP_CSFS due to their min-max of implementation > simplicity versus production flexibility. But one problem is that > spends using them would need to contain a lot of witness data. In my > mind, they're the best for experimentation and for proving the existence > of demand for more optimized constructions. > > OP_TX or OP_TXHASH would likely offer almost as much simplicity and > flexibility but be more efficient onchain. Does that make them better > than OP_CAT+OP_CSFS? I don't know how to objectively answer that > question, and I don't feel comfortable with my subjective opinion of > CAT+CSFS being better than OP_TX. > > APO/IIDs, CTV, and TLUV/EVICT all seem to me to be very specific to > certain usecases (respectively: Eltoo, congestion control, and > joinpools), providing maximum onchain efficiency for those cases but > requiring contortions or larger witnesses to accomplish other covenant > usecases. Is their increased efficiency better than more general > constructions like CSFS or TX? Again, I don't know how to answer that > question objectively, although subjectively I'm ok with optimized > constructions for cases of proven demand. > > > , and finally (d) because the implementation is well-reviewed > > and complete. > > No comment here; I haven't followed CTV's review progress to know > whether I'd consider it well enough reviewed or not. > > > I do not see how we can make an argument for any specific covenant > > under (c) here. We could just as well be talking about > > TLUV/CAT+CHECKSIGFROMSTACK/etc, and nearly anyone who is going to use > > CTV can probably just as easily use those instead - ie this has > > nothing to do with "will people use it". > > I'm curious how we as a technical community will be able to determine > which is the best approach. Again, I like starting simple and general, > gathering real usage data, and then optimizing for demonstrated needs. > But the simplest and most general approaches seem to be too general for > some people (because they enable recursive covenants), seemingly forcing > us into looking only at application-optimized designs. In that case, I > think the main thing we want to know about these narrow proposals for > new applications is whether the applications and the proposed consensus > changes will actually receive significant use. For that, I think we > need some sort of test bed with real paying users, and ideally one that > is as similar to Bitcoin mainnet as possible. > > > we > > cannot remove the validation code for something ever, really - you > > still want to be able to validate the historical chain > > You and Jeremy both brought up this point. I understand it and I > should've addressed it better in my OP, but I'm of the opinion that > reverting to earlier consensus rules gives future developers the > *option* of dropping no-longer-used consensus code as a practical > simplification of the same type we've used on several occasions before, > and which is an optional default in newly started Bitcoin Core nodes for > over a decade now (i.e. skipping verification of old signatures). If > future devs *want* to maintain code from a set of temporary rules used > millions of blocks ago, that's great, but giving them the option to > forget about those rules eliminates one of my concerns about making > consensus changes without fully proven demand for that change. > > I just wanted to mention the above in case this discussion comes back to > serious consideration of a transitory soft fork. For now, I think we > can table a debate over validating reverted rules and focus on how we'll > come to agreement that a particular covenant-related consensus change is > warranted. > > Thanks for your thoughtful response, > > -Dave > _______________________________________________ > bitcoin-dev mailing list > bitcoin-dev@lists.linuxfoundation.org > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev > --0000000000004c676205dd41000b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
> APO/IIDs, CTV, and TLUV/EVICT all seem to me to be ve= ry specific to
> certain usecases (respectively: Eltoo, congestion co= ntrol, and
> joinpools)

The enumeration of covenants uses= here excludes vaulting,
which I see as far and away the hig= hest utility use for covenants given
that it allows signific= ant derisking of custody for any user of Bitcoin
interested i= n holding their own coins (which is debatably redundant
with= a strict definition of "Bitcoin user" ;).

A lot of = why I like CTV is the simple fact that it is a low-risk way of
getting u= s vaults. That feature in itself is more than enough to
justify (to me) = CTV's added validation complexity, which is very modest
- in contras= t every other covenant proposal I've seen so far.

On Thu, Apr 21, 20= 22 at 6:28 PM David A. Harding via bitcoin-dev <bitcoin-dev@lists.linuxfoundation.org&= gt; wrote:
On 21= .04.2022 08:39, Matt Corallo wrote:
> We add things to Bitcoin because (a) there's some demonstrated
> use-cases and intent to use the change (which I think we definitely > have for covenants, but which only barely, if at all, suggests
> favoring one covenant design over any other)

I'm unconvinced about CTV's use cases but others have made reasonab= le
claims that it will be used.=C2=A0 We could argue about this indefinitely, =
but I would love to give CTV proponents an opportunity to prove that a
significant number of people would use it.

> (b) because its
> generally considered aligned with Bitcoin's design and goals, base= d on
> developer and more broad community response

I think CTV fulfills this criteria.=C2=A0 At least, I can't think of an= y way
BIP119 itself (notwithstanding activation concerns) violates Bitcoin's =
designs and goals.

> (c) because the
> technical folks who have/are wiling to spend time working on the
> specific design space think the concrete proposal is the best design > we have

This is the criteria that most concerns me.=C2=A0 What if there is no
universal best?=C2=A0 For example, I mentioned in my previous email that I&= #39;m
a partisan of OP_CAT+OP_CSFS due to their min-max of implementation
simplicity versus production flexibility.=C2=A0 But one problem is that spends using them would need to contain a lot of witness data.=C2=A0 In my =
mind, they're the best for experimentation and for proving the existenc= e
of demand for more optimized constructions.

OP_TX or OP_TXHASH would likely offer almost as much simplicity and
flexibility but be more efficient onchain.=C2=A0 Does that make them better=
than OP_CAT+OP_CSFS?=C2=A0 I don't know how to objectively answer that =
question, and I don't feel comfortable with my subjective opinion of CAT+CSFS being better than OP_TX.

APO/IIDs, CTV, and TLUV/EVICT all seem to me to be very specific to
certain usecases (respectively: Eltoo, congestion control, and
joinpools), providing maximum onchain efficiency for those cases but
requiring contortions or larger witnesses to accomplish other covenant
usecases.=C2=A0 Is their increased efficiency better than more general
constructions like CSFS or TX?=C2=A0 Again, I don't know how to answer = that
question objectively, although subjectively I'm ok with optimized
constructions for cases of proven demand.

> , and finally (d) because the implementation is well-reviewed
> and complete.

No comment here; I haven't followed CTV's review progress to know <= br> whether I'd consider it well enough reviewed or not.

> I do not see how we can make an argument for any specific covenant
> under (c) here. We could just as well be talking about
> TLUV/CAT+CHECKSIGFROMSTACK/etc, and nearly anyone who is going to use<= br> > CTV can probably just as easily use those instead - ie this has
> nothing to do with "will people use it".

I'm curious how we as a technical community will be able to determine <= br> which is the best approach.=C2=A0 Again, I like starting simple and general= ,
gathering real usage data, and then optimizing for demonstrated needs.=C2= =A0
But the simplest and most general approaches seem to be too general for some people (because they enable recursive covenants), seemingly forcing us into looking only at application-optimized designs.=C2=A0 In that case, = I
think the main thing we want to know about these narrow proposals for
new applications is whether the applications and the proposed consensus changes will actually receive significant use.=C2=A0 For that, I think we <= br> need some sort of test bed with real paying users, and ideally one that is as similar to Bitcoin mainnet as possible.

> we
> cannot remove the validation code for something ever, really - you
> still want to be able to validate the historical chain

You and Jeremy both brought up this point.=C2=A0 I understand it and I
should've addressed it better in my OP, but I'm of the opinion that=
reverting to earlier consensus rules gives future developers the
*option* of dropping no-longer-used consensus code as a practical
simplification of the same type we've used on several occasions before,=
and which is an optional default in newly started Bitcoin Core nodes for over a decade now (i.e. skipping verification of old signatures).=C2=A0 If =
future devs *want* to maintain code from a set of temporary rules used
millions of blocks ago, that's great, but giving them the option to forget about those rules eliminates one of my concerns about making
consensus changes without fully proven demand for that change.

I just wanted to mention the above in case this discussion comes back to serious consideration of a transitory soft fork.=C2=A0 For now, I think we =
can table a debate over validating reverted rules and focus on how we'l= l
come to agreement that a particular covenant-related consensus change is warranted.

Thanks for your thoughtful response,

-Dave
_______________________________________________
bitcoin-dev mailing list
= bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mail= man/listinfo/bitcoin-dev
--0000000000004c676205dd41000b--