From: Sanket Kanjalkar <sanket1729@gmail.com>
To: Greg Maxwell <gmaxwell@gmail.com>
Cc: Jameson Lopp <jameson.lopp@gmail.com>,
Antoine Poinsot <darosior@protonmail.com>,
Matt Corallo <lf-lists@mattcorallo.com>,
Andrew Poelstra <apoelstra@wpsoftware.net>,
Bitcoin Development Mailing List <bitcoindev@googlegroups.com>
Subject: Re: [bitcoindev] CTV + CSFS: a letter
Date: Sat, 14 Jun 2025 16:50:13 -0700 [thread overview]
Message-ID: <CAExE9c8oWiy6GUaSMVf2Nxa+9a60e2Mw8fg_s8GT4TmfiPMKMQ@mail.gmail.com> (raw)
In-Reply-To: <CAAS2fgSmmDmEhi3y39MgQj+pKCbksMoVmV_SgQmqMOqfWY_QLg@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 5410 bytes --]
On Sat, Jun 14, 2025 at 2:40 PM Greg Maxwell <gmaxwell@gmail.com> wrote:
> On Sat, Jun 14, 2025 at 8:17 PM Jameson Lopp <jameson.lopp@gmail.com>
> wrote:
>
>> Sure. As I mentioned in my article years ago, one can technically
>> implement covenant functionality today via presigned transactions and
>> ephemeral key material. But there is a vast gap between what is technically
>> possible and what is practical, which is why I believe you can't find any
>> such software in existence. Using presigned transactions means you have to
>> regularly update your vault scheme whenever your UTXOs change. This becomes
>> incredibly problematic if we're talking about a multisignature setup with
>> geographically distributed keys. And ephemeral keys relies upon user being
>> able to securely delete key material, which comes with its own host of
>> problems.
>>
>
> What's the problem for securely deleting? The operation is atomic-- e.g.
> software can be written that performs it as a single step and never even
> hands the users the private key. If you need to attest to a third party
> the ephemeral key can have 1-N multisigners, which has none of the normal
> challenges for multisigning since they don't need to retain information or
> check anything (in fact, it could even be blinded).
>
> From a durability perspective you also have the same issue of maintaining
> a script, if you're avoiding that by always constructing it
> programmatically and backing up the scheme, you can more or less do that
> with the presigned approach: just stick the ephemeral signature in a
> taproot annex in the transaction paying the coins to the 'vault' script and
> then immediately all the participants have the required data to
> deterministically construct the intermediate transaction.
>
> The result is essentially identical properties to a 'vault' constructed
> with CTV and needs no consensus change.
>
> As I see it, a setup where you presign a transaction to sweep funds to an
>> emergency address is only particularly useful for the situation in which
>> key material becomes inaccessible. It doesn't really help you in the case
>> where key material is compromised. Vaults specifically allow for a user to
>> recover from a situation in which a signing threshold of keys have been
>> compromised.
>>
>
> But that is the only kind of vault you can construct from CTV isn't it?
> One where the stationary output can go to one of multiple preconstructed
> outputs, typically one 'immediately' and the other after a delay that
> starts when a particular transaction is released. AFAICT, the CTV approach
> does not allow you to stage an output address and then either abort or
> allow it to continue.
>
Do you mean arbitrary output address that is unknown at commitment time?
Otherwise, I think the current CTV vault does allow abort/allowing from
"stage area" to "hot area" or abort to "rescue area". While general purpose
recursive vaults will allow funds back into same "cold area", I think it is
possible to also move funds back into same back under the same cold keys
with a bounded recursion CTV provides.
> (though I remain dubious as to the utility of that improvement, since if
> you can secure the rescue/abort key you could use the process for the
> primary.)
>
Primary key is used often for regular withdrawals from the vault. The
rescue/abort key will only be used in case there is something wrong. If
there is something that you don't intent you use at all, you can go 10
extra steps to secure it. Maybe store in secure guarded physical locations,
or require offchain security authorization protocols to secure them. You
might not do these for regular primary keys if you intend to use them often.
And even if you secure rescue key as the primary key, there is still value
because the attacker has to get both of them. We can see that in practice,
people use multisig instead of single-sig even though both keys are
probably secured to the same degree of security.
Finally, on the usefulness of vaults; based on my own observation of all
the hacks (bitcoin and wider crypto), in most cases it is not the key that
is stolen but rather the authorization process or UI/UX hacks or something
else up the signing stack is compromised. Having reactive security to
"undo" feels valuable in this scenario.
>
>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Bitcoin Development Mailing List" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to bitcoindev+unsubscribe@googlegroups.com.
> To view this discussion visit
> https://groups.google.com/d/msgid/bitcoindev/CAAS2fgSmmDmEhi3y39MgQj%2BpKCbksMoVmV_SgQmqMOqfWY_QLg%40mail.gmail.com
> <https://groups.google.com/d/msgid/bitcoindev/CAAS2fgSmmDmEhi3y39MgQj%2BpKCbksMoVmV_SgQmqMOqfWY_QLg%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
--
Sanket1729
--
You received this message because you are subscribed to the Google Groups "Bitcoin Development Mailing List" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bitcoindev+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/bitcoindev/CAExE9c8oWiy6GUaSMVf2Nxa%2B9a60e2Mw8fg_s8GT4TmfiPMKMQ%40mail.gmail.com.
[-- Attachment #2: Type: text/html, Size: 7494 bytes --]
next prev parent reply other threads:[~2025-06-14 23:53 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-09 11:40 [bitcoindev] CTV + CSFS: a letter James O'Beirne
2025-06-09 12:51 ` Michael Folkson
2025-06-09 14:41 ` James O'Beirne
2025-06-09 15:56 ` Michael Folkson
2025-06-09 13:51 ` Matt Corallo
2025-06-09 14:43 ` James O'Beirne
2025-06-09 17:51 ` Matt Corallo
2025-06-09 19:27 ` /dev /fd0
2025-06-09 21:12 ` Matt Corallo
2025-06-09 18:55 ` 'Antoine Poinsot' via Bitcoin Development Mailing List
2025-06-10 2:02 ` Paul Sztorc
2025-06-09 23:02 ` Andrew Poelstra
2025-06-10 2:08 ` David A. Harding
2025-06-10 13:23 ` Andrew Poelstra
2025-06-10 17:17 ` Matt Corallo
2025-06-10 23:42 ` Antoine Riard
2025-06-12 3:34 ` James O'Beirne
2025-06-13 1:18 ` Antoine Riard
2025-06-10 23:42 ` Antoine Riard
2025-06-11 13:52 ` Peter Todd
2025-06-13 6:19 ` Anthony Towns
2025-06-13 14:50 ` Harsha Goli
2025-06-10 14:03 ` James O'Beirne
2025-06-10 16:56 ` Sjors Provoost
2025-06-10 17:15 ` 'Antoine Poinsot' via Bitcoin Development Mailing List
2025-06-10 19:04 ` Paul Sztorc
2025-06-11 18:09 ` Brandon Black
2025-06-10 2:28 ` Melvin Carvalho
2025-06-10 13:19 ` Greg Sanders
2025-06-11 14:12 ` James O'Beirne
[not found] ` <CAB3F3Dsf8=rbOyPf1yTQDzyQQX6FAoJWTg16VC8PVs4_uBkeTw@mail.gmail.com>
2025-06-11 16:50 ` James O'Beirne
2025-06-11 18:34 ` James O'Beirne
2025-06-11 20:30 ` Matt Corallo
2025-06-12 0:59 ` Harsha Goli
2025-06-12 18:04 ` Matt Corallo
2025-06-12 18:38 ` James O'Beirne
2025-06-12 18:43 ` Matt Corallo
2025-06-12 19:51 ` Andrew Poelstra
2025-06-12 22:44 ` Matt Corallo
2025-06-13 11:08 ` Jameson Lopp
2025-06-13 12:36 ` Matt Corallo
2025-06-13 13:07 ` 'Antoine Poinsot' via Bitcoin Development Mailing List
2025-06-13 15:41 ` Jameson Lopp
2025-06-14 15:58 ` Sjors Provoost
2025-06-14 20:05 ` Jameson Lopp
2025-06-14 16:06 ` gmaxwell
2025-06-14 20:17 ` Jameson Lopp
2025-06-14 21:31 ` Greg Maxwell
2025-06-14 23:50 ` Sanket Kanjalkar [this message]
2025-06-15 0:01 ` Greg Maxwell
2025-06-15 0:20 ` Sanket Kanjalkar
2025-06-13 5:50 ` Anthony Towns
2025-06-12 2:06 ` Greg Maxwell
2025-06-12 3:23 ` James O'Beirne
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAExE9c8oWiy6GUaSMVf2Nxa+9a60e2Mw8fg_s8GT4TmfiPMKMQ@mail.gmail.com \
--to=sanket1729@gmail.com \
--cc=apoelstra@wpsoftware.net \
--cc=bitcoindev@googlegroups.com \
--cc=darosior@protonmail.com \
--cc=gmaxwell@gmail.com \
--cc=jameson.lopp@gmail.com \
--cc=lf-lists@mattcorallo.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox