public inbox for bitcoindev@googlegroups.com
 help / color / mirror / Atom feed
From: Leo Wandersleb <lwandersleb@gmail.com>
To: Bitcoin Development Mailing List <bitcoindev@googlegroups.com>
Subject: Re: [bitcoindev] Pre-emptive commit/reveal for quantum-safe migration (poison-pill)
Date: Wed, 4 Jun 2025 10:14:58 -0700 (PDT)	[thread overview]
Message-ID: <dba216d2-2b69-46e4-bfd9-a3a121b35866n@googlegroups.com> (raw)
In-Reply-To: <bb0cb7ad140e0960b55a6f18c48f047cb42d6b0a.camel@timruffing.de>


[-- Attachment #1.1: Type: text/plain, Size: 3699 bytes --]

Hi Tim,

thanks for your question. To be a soft fork, it would have to avoid 
double-spends as interpreted by legacy nodes. This can be achieved by the 
announcements not being transactions but merely announcements or OP_RETURNS 
as far as legacy nodes are concerned. After the 144 blocks, the legacy 
transaction as announced would still have to be broadcast but nodes would 
enforce compliance with the correct announcement. This way, legacy nodes 
would never see a double-spend.

Best,

Leo

On Tuesday, 3 June 2025 at 22:10:02 UTC+2 Tim Ruffing wrote:

> What about this attack?
>
> 1. (Honestly) own some UTXO 
> 2. Commit the UTXO
> 3. Wait for the fork
> 4. Spend the UTXO to some recipient
> 5. Double-spend using the pre-fork commitment 
>
> On Tue, 2025-06-03 at 10:26 -0700, Leo Wandersleb wrote:
> > Hi conduition,
> > 
> > Thanks for your careful analysis - excellent catches.
> > 
> > You're absolutely right about the txid vulnerability. The commitment
> > must be to the complete transaction including witness data (wTXID or
> > equivalent) to prevent an attacker from pre-committing to unsigned
> > transactions. This is essential - otherwise an attacker could indeed
> > enumerate the UTXO set and create commitments without knowing the
> > private keys.
> > 
> > Regarding updates: You're correct that frequent updates would be
> > needed as wallets receive new UTXOs. However, I don't see this as a
> > major issue - users could batch their commitments periodically (say,
> > monthly) rather than after every transaction. The scheme is
> > particularly important for existing UTXOs that already have exposed
> > pubkeys (old P2PK, reused addresses, etc.). For new UTXOs, wallets
> > should ideally migrate to quantum-safe addresses once available.
> > OpenTimestamps aggregation would indeed help with scaling and provide
> > plausible deniability about the number of UTXOs being protected.
> > 
> > The time delay serves a different purpose than you might expect. It's
> > not about preventing commitment forgery after pubkey exposure, but
> > rather about allowing priority based on commitment age when multiple
> > parties claim the same UTXO:
> > 
> > 1. Weak announcement starts the 144-block window
> > 2. During this window, anyone with a strong commitment can reveal it
> > 3. The oldest valid commitment wins
> > 
> > This creates the "poison pill" effect: an attacker might crack a key
> > and try to spend a UTXO, but if the original owner has an older
> > commitment, they can reclaim it during the window. The uncertainty
> > about which UTXOs have poison pills makes attacking large "lost"
> > UTXOs risky - hence less disruptive to the network.
> > 
> > The delay essentially allows a "commitment priority contest" where
> > age determines the winner, protecting users who prepared early while
> > still allowing these users to not move their funds.
> > 
> > Best,
> > 
> > Leo
> > -- 
> > 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+...@googlegroups.com.
> > To view this discussion visit
> > 
> https://groups.google.com/d/msgid/bitcoindev/5e393f57-ac87-40fd-93ef-e1006accdb55n%40googlegroups.com
> > .
>

-- 
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/dba216d2-2b69-46e4-bfd9-a3a121b35866n%40googlegroups.com.

[-- Attachment #1.2: Type: text/html, Size: 5082 bytes --]

  reply	other threads:[~2025-06-04 17:40 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-02 21:06 [bitcoindev] Pre-emptive commit/reveal for quantum-safe migration (poison-pill) Leo Wandersleb
2025-06-02 23:11 ` Nagaev Boris
2025-06-03  4:19   ` Leo Wandersleb
2025-06-03 11:51   ` Leo Wandersleb
2025-06-03 15:15     ` 'conduition' via Bitcoin Development Mailing List
2025-06-03 17:26       ` Leo Wandersleb
2025-06-03 19:49         ` Tim Ruffing
2025-06-04 17:14           ` Leo Wandersleb [this message]
2025-06-03 21:49         ` Nagaev Boris
2025-06-04 17:39           ` Leo Wandersleb
2025-06-04 18:38             ` Boris Nagaev
2025-06-05  8:18               ` Leo Wandersleb
2025-06-05 14:54                 ` Boris Nagaev
2025-06-05 15:01                 ` 'conduition' via Bitcoin Development Mailing List

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=dba216d2-2b69-46e4-bfd9-a3a121b35866n@googlegroups.com \
    --to=lwandersleb@gmail.com \
    --cc=bitcoindev@googlegroups.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