-
Notifications
You must be signed in to change notification settings - Fork 138
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Is there a way of having aggregate signature in first Tr descriptor parameter? #319
Comments
Currently, there is no way to do this. However, I would not mind supporting a specific fragment If really want to use it today custom musig supporting satisfiers, you can use a different syntax today, maybe tr(musig<a,b,c>) that does interfere with the parsing as implemented. |
It will really be nice to have it in this release since w/o it taproot is not working in practice for any multisig or script-based wallet. Why? Well, because in multisig or script-based taproot wallet you have two options for having
|
You are right, for full compatibility, we need musig. Currently we you can use taproot descriptors if
Plus, musig2 descriptor spec is still not settled. So, supporting the KeyAgg here in rust-miniscript would be premature. I am sorry that this is the state and If the above options are not acceptable to you, you would have to wait till the spec somewhat settles down. Musig2 BIP32 tweaking signing spec was merged yesterday to libsecp-zkp. It will take some time for rust-miniscript to have access to it. Even then, we will need an upstream BIP for musig2 descriptors before we merge it here |
With the current miniscript this can't be done: descriptors need xpubs, which can't be combined with the hard-coded key in the first parameter of
Again, not possible for the reason above
So this is also not possible with current miniscript. I.e. we left with no options of real world use of scripts with miniscript |
We may have a partial support for musig: implement it for |
This is possible, are you using let _addr_tr = Descriptor::<DescriptorPublicKey>::from_str( "tr(e4a3d72a31498dc4bec565b14e088c3463fc5e3d886e7c1cee4156caacb098d0,multi_a(1,xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/0/0/*,xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB/1/0/*))"
)
.unwrap()
.derived_descriptor(&secp_ctx, 5)
.unwrap()
.address(bitcoin::Network::Bitcoin).unwrap(); |
I am working on it. Maybe, I can add some experimental support here soonish, but it won't be 7.0.0 for sure. You can track the support here: BlockstreamResearch/rust-secp256k1-zkp#48. It is still in draft, maybe by the end of this week, the PR will be ready for review. Then after some after review and a release of rust-secp-zkp, I can work on support here. |
Another thing that you can do is use You will have to update your code to gain the benefit that looking at the descriptor parties can infer it is unspendable, but it requires ad-hoc logic if you are the |
No, I am not using But otherwise I am getting your idea, it looks nice! Basically I can do an enum type on top of my type + normal public key or any other form of provably unspendable key. Got it, this should work, will try it out! |
Keeping this open for Musig2 discussions. |
Where are the MuSig2 spec discussions taking place? I'm kinda curious, since I'd love to see MuSig2 support in miniscript. That could open up a ton of possibilities, including support in BDK, MuSig2 channels in LDK, and the MyCitadel and BitMask wallets. |
@cryptoquick I'd recommend you check out bitcoin/bips#1372 -- or you can find people on IRC |
Thanks for the quick response, @apoelstra! I'll check it out. |
@cryptoquick, there is some discussion at https://gist.github.com/sipa/06c5c844df155d4e5044c2c8cac9c05e. |
Today
Tr
descriptortr(musig(a,b))
will treatb
as a second parameter to the descriptor itself, i.e. script).The text was updated successfully, but these errors were encountered: