public inbox for bitcoindev@googlegroups.com
 help / color / mirror / Atom feed
From: Josh Doman <joshsdoman@gmail.com>
To: Bitcoin Development Mailing List <bitcoindev@googlegroups.com>
Subject: Re: [bitcoindev] What's a good stopping point? Making the case for the capabilities enabled by CTV+CSFS
Date: Thu, 10 Jul 2025 07:33:01 -0700 (PDT)	[thread overview]
Message-ID: <1d42b799-6c99-4d33-98d4-ecd333a63dbdn@googlegroups.com> (raw)
In-Reply-To: <CAB3F3DtfQzWF4vAqN-jFVLSRufV5OFqgdKCgqgFsPb2V9ix-=Q@mail.gmail.com>


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

Hi Greg,

I'm not sure I quite follow the membership proof concern. The reason to use 
MuHash is to avoid quadratic hashing, by only needing to iterate through 
the input set once. Our goal is simply to prove that an indexed set of 
sibling prevouts is committed to.

In the naive implementation, validating a sibling commitment requires 
hashing all other prevouts in the transaction. In the worst case, this is 
O(n^2) if we need to validate a sibling commitment for each input.

With MuHash, this becomes O(n) because we can validate sibling commitments 
by precomputing a hash over all prevouts and then selectively removing one 
prevout, which is O(1). This gives us the same result as directly hashing 
the sibling prevouts.

Does this address your concern?

Best,
Josh

On Thursday, July 10, 2025 at 8:10:47 AM UTC-4 Greg Sanders wrote:

Hi Josh,

For one, MuHash doesn't have a compact membership proof, for one, making it 
unlikely to be useful for anything we're likely thinking of. It's used in 
Bitcoin Core for equivalency of UTXO sets in snapshots. To validate 
membership, the entire population has to be iterated.

Best,
Greg

On Wed, Jul 9, 2025 at 5:54 PM Josh Doman <joshs...@gmail.com> wrote:

I tend to agree. It's hard to justify the leap in expressivity of OP_TX / 
OP_TXHASH solely on the basis of enabling commitments to sibling prevouts. 
A more targeted approach would be better.

In that vein, I think there's a way to use MuHash to generalize CTV / 
TEMPLATEHASH and commit to sibling prevouts in constant time.

The idea is to precompute a MuHash accumulator containing SHA256(index || 
prevout) for each input in the transaction.

Then, to compute the sibling commitment for input i, we simply copy the 
accumulator and remove the SHA256 hash for that input. Thanks to MuHash, 
this takes constant time. Finally, we include the sibling commitment in the 
existing proposed commitment scheme.

This would represent a low-cost way to commit to the next txid, providing 
predictability regardless of how many inputs are spent (unlike existing 
proposals). Given that MuHash is already in the codebase, I'm inclined to 
believe this wouldn't be a heavy lift and would better achieve the goal of 
a primitive that "commits to the next transaction."

Thoughts?

Best,
Josh

On Friday, July 4, 2025 at 9:08:48 AM UTC-4 Antoine Poinsot wrote:

I agree the BitVM/CTV idea suggests inspection of other inputs can be 
useful for applications 
leveraging connector outputs. 

While it is potentially compelling, the BitVM use case was only briefly 
presented, with no 
demonstration or even detailed description of how it would work in 
practice. This makes it hard to 
assess the costs and benefits of this approach. Furthermore, it's hard to 
assess how much of an 
improvement it brings to Bitcoin users as BitVM has yet to be delivered and 
see any meaningful 
adoption. 

As Greg responded when it was raised earlier in this thread[^0], as things 
stand today i don't think 
this idea justifies the leap in expressivity. 

Best, 
Antoine 

[^0]: 
https://gnusha.org/pi/bitcoindev/8d37b779-bf2e-4f63...@googlegroups.com 
<https://gnusha.org/pi/bitcoindev/8d37b779-bf2e-4f63-a51c-9953434d7553n@googlegroups.com> 


On Thursday, July 3rd, 2025 at 4:54 AM, Anthony Towns <a...@erisian.com.au> 
wrote: 

> 
> 
> On Tue, Jun 24, 2025 at 11:54:02AM -0400, Matt Corallo wrote: 
> 
> > > which 
> > > warrants a compelling demonstration that arbitrary transaction 
introspection 
> > > does enable important use cases not achievable with more minimal 
capabilities. 
> > > I'm somewhat skeptical that showing this isn't rather simple, 
> 
> 
> I think the BitVM/CTV idea posted on delving [0] is one such simple demo? 
> 
> I gave an example in that thread of how you'd implement the desired 
> construct using bllsh's introspection primitives, but the same could 
> equally well be done with Rusty's as-yet unpublished OP_TX, something 
> like: 
> 
> DUP 0x1011 TX 0x00000002 EQUALVERIFY 0x1009 TX 0x0809 TX EQUALVERIFY 
> 
> where: 
> 
> * "0x1011 TX" pops an input index from the stack and gives the four-byte 
> vout index of that input's prevout 
> * "0x1009 TX" pops an input index from the stack and gives the txid of 
that input's 
> prevout 
> * "0x0809 TX" gives the txid of the current input's prevout 
> 
> (this encodes "this utxo can only be spent (via this path) if its sibling 
> output at index 2 is also being spent in the same transaction") 
> 
> Cheers, 
> aj 
> 
> [0] https://delvingbitcoin.org/t/how-ctv-csfs-improves-bitvm-bridges/1591 
> 
> -- 
> 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/aGX_MNORQVQT_lp4%40erisian.com.au. 


-- 

You received this message because you are subscribed to a topic in the 
Google Groups "Bitcoin Development Mailing List" group.
To unsubscribe from this topic, visit 
https://groups.google.com/d/topic/bitcoindev/-qJc1EWQzY0/unsubscribe.
To unsubscribe from this group and all its topics, send an email to 
bitcoindev+...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/bitcoindev/b72e6f6f-af27-4043-b714-4e607bbe8880n%40googlegroups.com 
<https://groups.google.com/d/msgid/bitcoindev/b72e6f6f-af27-4043-b714-4e607bbe8880n%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/1d42b799-6c99-4d33-98d4-ecd333a63dbdn%40googlegroups.com.

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

      reply	other threads:[~2025-07-10 14:43 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-23 13:14 [bitcoindev] What's a good stopping point? Making the case for the capabilities enabled by CTV+CSFS 'Antoine Poinsot' via Bitcoin Development Mailing List
2025-06-24 14:29 ` [bitcoindev] " Harsha Goli
2025-06-24 15:54 ` [bitcoindev] " Matt Corallo
2025-06-25 16:50   ` 'Antoine Poinsot' via Bitcoin Development Mailing List
2025-06-25 20:34     ` Ethan Heilman
2025-06-26 16:02       ` Josh Doman
2025-06-26 17:03         ` Greg Sanders
2025-06-29 22:50           ` Antoine Riard
2025-06-25 19:22   ` Chris Stewart
2025-07-03  3:55   ` Anthony Towns
2025-07-04 13:02     ` 'Antoine Poinsot' via Bitcoin Development Mailing List
2025-07-09 21:30       ` Josh Doman
2025-07-10 12:05         ` Greg Sanders
2025-07-10 14:33           ` Josh Doman [this message]

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=1d42b799-6c99-4d33-98d4-ecd333a63dbdn@googlegroups.com \
    --to=joshsdoman@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