public inbox for bitcoindev@googlegroups.com
 help / color / mirror / Atom feed
* [bitcoindev] One Time Signatures as an Advantage?
@ 2026-05-20 17:41 Jason Resch
  2026-05-21  9:54 ` 'Mikhail Kudinov' via Bitcoin Development Mailing List
  2026-05-28 17:25 ` Murch
  0 siblings, 2 replies; 7+ messages in thread
From: Jason Resch @ 2026-05-20 17:41 UTC (permalink / raw)
  To: Bitcoin Development Mailing List


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

NIST is standardizing SLH-DSA as a stateless, post-quantum-secure 
hash-based signature scheme. However, to achieve the stateless feature of 
being able to sign multiple messages, requires a significant size overhead.

SLH-DSA (for parameters n=16, w=16) results in signatures that are 7,888 
bytes long.

However, if statelessness isn't required, and this can be reduced to 900 
bytes for something like XMSS using the same parameters.

Furthermore, if multiple signings per key are dropped as a requirement, and 
"one time signatures" are used (e.g. WOTS+) then this size reduces further 
to 560 bytes.

This is a ~14× reduction in signature size for a feature that Bitcoin 
transactions not only don't need, but are strongly discouraged if not 
harmful. Using the same key more than once is only required if one is 
reusing the same address (discouraged), or if one is attempting some kind 
of double-spend attack.

This could be seen as a sort of advantage: if one attempts to double-spend, 
they may expose their private key. This same property was an element of 
Chaum's digital cash: attempting to double-spend exposed you.

Is there any advocacy for NIST to standardize stateful or one-time-use 
signature algorithms? They seem well-suited to the block-chain use case, 
where there is always global and persistent state, and keys ought not be 
re-used. Though this needs to be carefully managed by wallet software: to 
only expose a one-time-use address to handle a single transaction with a 
single payer, and never use a OTS address for any kind of public-facing or 
long-term donation address. Perhaps this complication makes OTS not worth 
introducing generally, but their space saving properties are attractive.

Jason

-- 
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/d3648bd4-03d3-4b98-92bf-d845302be349n%40googlegroups.com.

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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [bitcoindev] One Time Signatures as an Advantage?
  2026-05-20 17:41 [bitcoindev] One Time Signatures as an Advantage? Jason Resch
@ 2026-05-21  9:54 ` 'Mikhail Kudinov' via Bitcoin Development Mailing List
  2026-05-21 13:33   ` Jason Resch
  2026-05-28 17:25 ` Murch
  1 sibling, 1 reply; 7+ messages in thread
From: 'Mikhail Kudinov' via Bitcoin Development Mailing List @ 2026-05-21  9:54 UTC (permalink / raw)
  To: Jason Resch; +Cc: Bitcoin Development Mailing List

[-- Attachment #1: Type: text/plain, Size: 3156 bytes --]

Stateful hash-based schemes have been recommended by NIST. See
https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-208.pdf
. Also you might be interested to read about SHRINCS:
https://delvingbitcoin.org/t/shrincs-324-byte-stateful-post-quantum-signatures-with-static-backups/2158
.

Best,
Mikhail


On Wed, May 20, 2026 at 7:44 PM Jason Resch <jasonresch@gmail.com> wrote:

> NIST is standardizing SLH-DSA as a stateless, post-quantum-secure
> hash-based signature scheme. However, to achieve the stateless feature of
> being able to sign multiple messages, requires a significant size overhead.
>
> SLH-DSA (for parameters n=16, w=16) results in signatures that are 7,888
> bytes long.
>
> However, if statelessness isn't required, and this can be reduced to 900
> bytes for something like XMSS using the same parameters.
>
> Furthermore, if multiple signings per key are dropped as a requirement,
> and "one time signatures" are used (e.g. WOTS+) then this size reduces
> further to 560 bytes.
>
> This is a ~14× reduction in signature size for a feature that Bitcoin
> transactions not only don't need, but are strongly discouraged if not
> harmful. Using the same key more than once is only required if one is
> reusing the same address (discouraged), or if one is attempting some kind
> of double-spend attack.
>
> This could be seen as a sort of advantage: if one attempts to
> double-spend, they may expose their private key. This same property was an
> element of Chaum's digital cash: attempting to double-spend exposed you.
>
> Is there any advocacy for NIST to standardize stateful or one-time-use
> signature algorithms? They seem well-suited to the block-chain use case,
> where there is always global and persistent state, and keys ought not be
> re-used. Though this needs to be carefully managed by wallet software: to
> only expose a one-time-use address to handle a single transaction with a
> single payer, and never use a OTS address for any kind of public-facing or
> long-term donation address. Perhaps this complication makes OTS not worth
> introducing generally, but their space saving properties are attractive.
>
> Jason
>
> --
> 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/d3648bd4-03d3-4b98-92bf-d845302be349n%40googlegroups.com
> <https://groups.google.com/d/msgid/bitcoindev/d3648bd4-03d3-4b98-92bf-d845302be349n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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/CAPcK4uTy3Rj6NxhQPQhY0Ps8JFH1S8bDj29PW7autqTYhH4-kw%40mail.gmail.com.

[-- Attachment #2: Type: text/html, Size: 4166 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [bitcoindev] One Time Signatures as an Advantage?
  2026-05-21  9:54 ` 'Mikhail Kudinov' via Bitcoin Development Mailing List
@ 2026-05-21 13:33   ` Jason Resch
  0 siblings, 0 replies; 7+ messages in thread
From: Jason Resch @ 2026-05-21 13:33 UTC (permalink / raw)
  To: Bitcoin Development Mailing List

[-- Attachment #1: Type: text/plain, Size: 4158 bytes --]

On Thu, May 21, 2026, 5:54 AM Mikhail Kudinov <mkudinov@blockstream.com>
wrote:

> Stateful hash-based schemes have been recommended by NIST. See
> https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-208.pdf
> .
>

Is the intention that these recommendations will eventually lead to full
standardization and FIPS compliance?

Will Bitcoin wait for that do you think, or will it lead in adopting
something like SHRINCS first and then NIST will follow in certifying what
would by then have become a de facto standard?

Also you might be interested to read about SHRINCS:
> https://delvingbitcoin.org/t/shrincs-324-byte-stateful-post-quantum-signatures-with-static-backups/2158
> .
>


I learned of SHRINCS just after making my post. I think it provides the
best of both worlds: short signatures in the general case when state is
available + the flexibility to fall back and sign many times in case state
is lost or the stateful key is used too many times.

In terms of PQC algorithms I'm aware of, this one seems to be among the
best in terms of its conservative security assumptions and compactness, and
the flexibility to sign many times when necessary addresses the problem
with public donation addresses.

Jason



>
> On Wed, May 20, 2026 at 7:44 PM Jason Resch <jasonresch@gmail.com> wrote:
>
>> NIST is standardizing SLH-DSA as a stateless, post-quantum-secure
>> hash-based signature scheme. However, to achieve the stateless feature of
>> being able to sign multiple messages, requires a significant size overhead.
>>
>> SLH-DSA (for parameters n=16, w=16) results in signatures that are 7,888
>> bytes long.
>>
>> However, if statelessness isn't required, and this can be reduced to 900
>> bytes for something like XMSS using the same parameters.
>>
>> Furthermore, if multiple signings per key are dropped as a requirement,
>> and "one time signatures" are used (e.g. WOTS+) then this size reduces
>> further to 560 bytes.
>>
>> This is a ~14× reduction in signature size for a feature that Bitcoin
>> transactions not only don't need, but are strongly discouraged if not
>> harmful. Using the same key more than once is only required if one is
>> reusing the same address (discouraged), or if one is attempting some kind
>> of double-spend attack.
>>
>> This could be seen as a sort of advantage: if one attempts to
>> double-spend, they may expose their private key. This same property was an
>> element of Chaum's digital cash: attempting to double-spend exposed you.
>>
>> Is there any advocacy for NIST to standardize stateful or one-time-use
>> signature algorithms? They seem well-suited to the block-chain use case,
>> where there is always global and persistent state, and keys ought not be
>> re-used. Though this needs to be carefully managed by wallet software: to
>> only expose a one-time-use address to handle a single transaction with a
>> single payer, and never use a OTS address for any kind of public-facing or
>> long-term donation address. Perhaps this complication makes OTS not worth
>> introducing generally, but their space saving properties are attractive.
>>
>> Jason
>>
>> --
>> 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/d3648bd4-03d3-4b98-92bf-d845302be349n%40googlegroups.com
>> <https://groups.google.com/d/msgid/bitcoindev/d3648bd4-03d3-4b98-92bf-d845302be349n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
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/CA%2BBCJUhie0OZuPKhvt%2BWto8dVNHVUSDO2pG3LFbFLkORnZsnyw%40mail.gmail.com.

[-- Attachment #2: Type: text/html, Size: 6267 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [bitcoindev] One Time Signatures as an Advantage?
  2026-05-20 17:41 [bitcoindev] One Time Signatures as an Advantage? Jason Resch
  2026-05-21  9:54 ` 'Mikhail Kudinov' via Bitcoin Development Mailing List
@ 2026-05-28 17:25 ` Murch
  2026-06-04 11:01   ` [bitcoindev] One Time Signatures ≠ One Message Signed Peter Todd
  1 sibling, 1 reply; 7+ messages in thread
From: Murch @ 2026-05-28 17:25 UTC (permalink / raw)
  To: bitcoindev

One-time signature schemes are not well-suited for Bitcoin because they:

- cannot be used to participate in multi-user transaction (as another 
participant could fail the process and force a second signature)
- incur lost funds or lost keys upon address reuse (as every node would 
need to track every output script to prevent duplicates, and the 
recipient has no say in their output script being sent to another time)
- are incompatible with transaction replacement (zero-conf enthusiasts 
rejoice!)

  Murch

On 2026-05-20 10:41, Jason Resch wrote:
> NIST is standardizing SLH-DSA as a stateless, post-quantum-secure 
> hash-based signature scheme. However, to achieve the stateless feature 
> of being able to sign multiple messages, requires a significant size 
> overhead.
>
> SLH-DSA (for parameters n=16, w=16) results in signatures that are 
> 7,888 bytes long.
>
> However, if statelessness isn't required, and this can be reduced to 
> 900 bytes for something like XMSS using the same parameters.
>
> Furthermore, if multiple signings per key are dropped as a 
> requirement, and "one time signatures" are used (e.g. WOTS+) then this 
> size reduces further to 560 bytes.
>
> This is a ~14× reduction in signature size for a feature that Bitcoin 
> transactions not only don't need, but are strongly discouraged if not 
> harmful. Using the same key more than once is only required if one is 
> reusing the same address (discouraged), or if one is attempting some 
> kind of double-spend attack.
>
> This could be seen as a sort of advantage: if one attempts to 
> double-spend, they may expose their private key. This same property 
> was an element of Chaum's digital cash: attempting to double-spend 
> exposed you.
>
> Is there any advocacy for NIST to standardize stateful or one-time-use 
> signature algorithms? They seem well-suited to the block-chain use 
> case, where there is always global and persistent state, and keys 
> ought not be re-used. Though this needs to be carefully managed by 
> wallet software: to only expose a one-time-use address to handle a 
> single transaction with a single payer, and never use a OTS address 
> for any kind of public-facing or long-term donation address. Perhaps 
> this complication makes OTS not worth introducing generally, but their 
> space saving properties are attractive.
>
> Jason
> -- 
> 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/d3648bd4-03d3-4b98-92bf-d845302be349n%40googlegroups.com 
> <https://groups.google.com/d/msgid/bitcoindev/d3648bd4-03d3-4b98-92bf-d845302be349n%40googlegroups.com?utm_medium=email&utm_source=footer>.

-- 
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/ec83d322-c7e7-4d12-a1ac-2768db4515a3%40murch.one.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [bitcoindev] One Time Signatures ≠ One Message Signed
  2026-05-28 17:25 ` Murch
@ 2026-06-04 11:01   ` Peter Todd
  2026-06-05  7:54     ` Anthony Towns
  0 siblings, 1 reply; 7+ messages in thread
From: Peter Todd @ 2026-06-04 11:01 UTC (permalink / raw)
  To: Murch; +Cc: bitcoindev

[-- Attachment #1: Type: text/plain, Size: 1293 bytes --]

On Thu, May 28, 2026 at 10:25:51AM -0700, Murch wrote:
> One-time signature schemes are not well-suited for Bitcoin because they:
> 
> - cannot be used to participate in multi-user transaction (as another
> participant could fail the process and force a second signature)
> - incur lost funds or lost keys upon address reuse (as every node would need
> to track every output script to prevent duplicates, and the recipient has no
> say in their output script being sent to another time)
> - are incompatible with transaction replacement (zero-conf enthusiasts
> rejoice!)

Note that you can design a message signing scheme where you can use a pubkey to
sign a merkle tree of messages. In the case of a transaction, multiple
conflicting versions of the transaction with different fee rates.

Basically, a One Time Signing Scheme that produces multiple signatures for one
signing event.

-- 
https://petertodd.org 'peter'[:-1]@petertodd.org

-- 
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/aiFbBdvndmMhIcbW%40petertodd.org.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [bitcoindev] One Time Signatures ≠ One Message Signed
  2026-06-04 11:01   ` [bitcoindev] One Time Signatures ≠ One Message Signed Peter Todd
@ 2026-06-05  7:54     ` Anthony Towns
  2026-06-08 10:04       ` Peter Todd
  0 siblings, 1 reply; 7+ messages in thread
From: Anthony Towns @ 2026-06-05  7:54 UTC (permalink / raw)
  To: Peter Todd; +Cc: Murch, bitcoindev

On Thu, Jun 04, 2026 at 11:01:25AM +0000, Peter Todd wrote:
> On Thu, May 28, 2026 at 10:25:51AM -0700, Murch wrote:
> > One-time signature schemes are not well-suited for Bitcoin because they:
> > - cannot be used to participate in multi-user transaction (as another
> > participant could fail the process and force a second signature)
> > - incur lost funds or lost keys upon address reuse (as every node would need
> > to track every output script to prevent duplicates, and the recipient has no
> > say in their output script being sent to another time)
> > - are incompatible with transaction replacement (zero-conf enthusiasts
> > rejoice!)
> Note that you can design a message signing scheme where you can use a pubkey to
> sign a merkle tree of messages. In the case of a transaction, multiple
> conflicting versions of the transaction with different fee rates.

There's a balance to be had between what's considered part of the message
signing scheme versus what's part of the scripting language.

The scheme above could also be thought of as signing a single message
"spend this utxo is valid if this script's conditions are meant",
where the script is "or(fee <= 0.5, and(nSequence >= 100, fee <= 1.0),
and(nSequence >= 1000, fee <= 30.0))"

Delegating to a signed script like this is essentially the "graftroot"
concept.

Cheers,
aj

-- 
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/aiKAytZNfih0ABff%40erisian.com.au.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [bitcoindev] One Time Signatures ≠ One Message Signed
  2026-06-05  7:54     ` Anthony Towns
@ 2026-06-08 10:04       ` Peter Todd
  0 siblings, 0 replies; 7+ messages in thread
From: Peter Todd @ 2026-06-08 10:04 UTC (permalink / raw)
  To: Anthony Towns; +Cc: Murch, bitcoindev

[-- Attachment #1: Type: text/plain, Size: 1725 bytes --]

On Fri, Jun 05, 2026 at 05:54:50PM +1000, Anthony Towns wrote:
> On Thu, Jun 04, 2026 at 11:01:25AM +0000, Peter Todd wrote:
> > Note that you can design a message signing scheme where you can use a pubkey to
> > sign a merkle tree of messages. In the case of a transaction, multiple
> > conflicting versions of the transaction with different fee rates.
> 
> There's a balance to be had between what's considered part of the message
> signing scheme versus what's part of the scripting language.
> 
> The scheme above could also be thought of as signing a single message
> "spend this utxo is valid if this script's conditions are meant",
> where the script is "or(fee <= 0.5, and(nSequence >= 100, fee <= 1.0),
> and(nSequence >= 1000, fee <= 30.0))"

No, that's a very different scheme. Also, I believe it is vulnerable to miners
simply picking the best possible fee rate for them; nSequence isn't big enough
to avoid being guessed.

Indeed, I neglected to point out something important in the above: you probably
want to include secret nonces (or similar) in each individual branch of the
signature tree, to ensure that different versions of it can't be brute forced.
Thus to reveal a new option for miners, you make public a previously secret
nonce. 128-bits would be sufficiently large to prevent brute-forcing.

-- 
https://petertodd.org 'peter'[:-1]@petertodd.org

-- 
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/aiaTyHPHzrj3iZ_8%40petertodd.org.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-06-08 10:45 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-05-20 17:41 [bitcoindev] One Time Signatures as an Advantage? Jason Resch
2026-05-21  9:54 ` 'Mikhail Kudinov' via Bitcoin Development Mailing List
2026-05-21 13:33   ` Jason Resch
2026-05-28 17:25 ` Murch
2026-06-04 11:01   ` [bitcoindev] One Time Signatures ≠ One Message Signed Peter Todd
2026-06-05  7:54     ` Anthony Towns
2026-06-08 10:04       ` Peter Todd

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox