<p>At the time of writing (January 2022) there hasn't been a descriptor specified for Schnorr/Taproot multisig (using the new OP_CHECKSIGADD opcode specified in <a href="https://github.com/bitcoin/bips/blob/master/bip-0342.mediawiki" rel="nofollow noreferrer">BIP 342</a>) or using the key aggregation scheme MuSig.</p>
<blockquote>
<p>(When I say “multisig” I mean k-of-n threshold signing, rather than a schnorr multisignature)</p>
</blockquote>
<p>A clarification on terminology. In Bitcoin we generally use &quot;multisig&quot; to refer to n-of-n (n=n) and &quot;threshold&quot; to refer to k-of-n (k&lt;n). MuSig(2) refers to a key aggregation scheme where only one key and one signature go onchain despite there being multiple keys involved offchain. Threshold equivalents of MuSig(2) are being worked on e.g. FROST but are not finalized or as mature as MuSig(2). Neither MuSig(2) or FROST have descriptors specified at the time or writing.</p>
<p>Hence if you want to use a multisig or threshold signature descriptor you would use an existing one e.g. <code>multi</code> or <code>sortedmulti</code> that doesn't support a Schnorr/Taproot multisig. A bit confusingly the <code>multi</code> descriptor does support both multisignature and threshold signatures according to the above definitions but not for Schnorr/Taproot.</p>
<p><strong>April 2023 Update</strong></p>
<p>There are now <code>multi_a</code> and <code>sortedmulti_a</code> <a href="https://github.com/bitcoin/bitcoin/pull/24043/" rel="nofollow noreferrer">descriptors</a> supported in the Bitcoin Core wallet for k-of-n policies using the CHECKSIGADD opcode inside the <code>tr()</code> Taproot descriptor. A MuSig(2) descriptor has been <a href="https://gist.github.com/sipa/06c5c844df155d4e5044c2c8cac9c05e#musig-descriptors" rel="nofollow noreferrer">discussed</a> and there is an open <a href="https://github.com/rust-bitcoin/rust-miniscript/pull/460" rel="nofollow noreferrer">pull request</a> in rust-miniscript implementing it but it hasn't yet been finalized.</p>

CC BY-SA 4.0
2022-01-08T07:32:34.173Z
Not related to the question so putting in the comments but Miniscript does differentiate between multisig and threshold sig (`multi` and `thresh`) but descriptors allow you to do both multisig and threshold sig using the `multi` descriptor. That will be confusing when MIniscript gets integrated with descriptors :)
Michael Folkson
CC BY-SA 4.0
2022-01-08T18:20:09.877Z
I think traditionally in Bitcoin "multisig" refers to k-of-n using OP_CHECKMULTISIG (so using multiple signatures and multiple keys). In cryptography at large, "multisignature" refers to a single signature with multiple keys (which musig/musig2/musig-dn and other schemes achieve), and "threshold signature" refers to a single signature corresponding to a k-of-n combination of multiple keys (like FROST accomplishes).
Pieter Wuille
CC BY-SA 4.0
2022-01-08T19:31:35.730Z
@PieterWuille: Ok you may have changed your definitions since https://btctranscripts.com/lets-talk-bitcoin-podcast/2019-06-09-ltb-pieter-wuille-jonas-nick/ :) "k-of-n is say 2 out of 3 where k is different from n" and "When we talk about k-of-n or thresholds"
Michael Folkson
CC BY-SA 4.0
2022-01-09T16:12:11.260Z
that's saying the same thing?
Pieter Wuille
CC BY-SA 4.0
2022-01-09T21:36:53.490Z
Thanks for the answer. I thought within bitcoin, “multisig” traditionally referred to threshold signing, for example: https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md#multisig . In any case, the clarification is helpful :)
Alex
CC BY-SA 4.0
2023-04-22T14:33:22.403Z
There is a [multi_a](https://github.com/bitcoin/bitcoin/pull/24043) descriptor now.
nikicat
CC BY-SA 4.0
2023-04-23T07:29:47.793Z
@nikicat: Thanks. Updated answer.
Michael Folkson
CC BY-SA 4.0
2022-01-08T07:05:34.917Z
2023-04-23T07:29:02.707Z
2023-04-23T07:29:02.707Z
Michael Folkson
<p>I’m trying to understand the current state of descriptor support for taproot, with a specific focus on multisig wallets (When I say “multisig” I mean k-of-n threshold signing, rather than a schnorr multisignature). I found this PR that introduced taproot descriptors into Core: <a href="https://github.com/bitcoin/bitcoin/pull/22051" rel="nofollow noreferrer">https://github.com/bitcoin/bitcoin/pull/22051</a> and it said that support for more interesting scripts had not yet been implemented. Is that still the case, or does anyone know of any docs or examples to do a multisig wallet descriptor?</p>
<p>Thanks!</p>

<multi-signature><taproot><schnorr-signatures><output-script-descriptors>
Support for taproot multisig descriptors
Alex
# Support for taproot multisig descriptors

(Asked by: username_0 on 2022-01-07)

I’m trying to understand the current state of descriptor support for taproot, with a specific focus on multisig wallets (When I say “multisig” I mean k-of-n threshold signing, rather than a schnorr multisignature). I found this PR that introduced taproot descriptors into Core: <https://github.com/bitcoin/bitcoin/pull/22051> and it said that support for more interesting scripts had not yet been implemented. Is that still the case, or does anyone know of any docs or examples to do a multisig wallet descriptor?

Thanks!

**Tags:** multi-signature, taproot, schnorr-signatures, output-script-descriptors


---

## 1 answers

### Answer by username_1 on 2022-01-08. Score: 2 | Accepted answer

At the time of writing (January 2022) there hasn't been a descriptor specified for Schnorr/Taproot multisig (using the new OP\_CHECKSIGADD opcode specified in [BIP 342](https://github.com/bitcoin/bips/blob/master/bip-0342.mediawiki)) or using the key aggregation scheme MuSig.

> (When I say “multisig” I mean k-of-n threshold signing, rather than a schnorr multisignature)

A clarification on terminology. In Bitcoin we generally use "multisig" to refer to n-of-n (n=n) and "threshold" to refer to k-of-n (k<n). MuSig(2) refers to a key aggregation scheme where only one key and one signature go onchain despite there being multiple keys involved offchain. Threshold equivalents of MuSig(2) are being worked on e.g. FROST but are not finalized or as mature as MuSig(2). Neither MuSig(2) or FROST have descriptors specified at the time or writing.

Hence if you want to use a multisig or threshold signature descriptor you would use an existing one e.g. `multi` or `sortedmulti` that doesn't support a Schnorr/Taproot multisig. A bit confusingly the `multi` descriptor does support both multisignature and threshold signatures according to the above definitions but not for Schnorr/Taproot.

**April 2023 Update**

There are now `multi_a` and `sortedmulti_a` [descriptors](https://github.com/bitcoin/bitcoin/pull/24043/) supported in the Bitcoin Core wallet for k-of-n policies using the CHECKSIGADD opcode inside the `tr()` Taproot descriptor. A MuSig(2) descriptor has been [discussed](https://gist.github.com/sipa/06c5c844df155d4e5044c2c8cac9c05e#musig-descriptors) and there is an open [pull request](https://github.com/rust-bitcoin/rust-miniscript/pull/460) in rust-miniscript implementing it but it hasn't yet been finalized.

> **Comments:**
> **username_1**: Not related to the question so putting in the comments but Miniscript does differentiate between multisig and threshold sig (`multi` and `thresh`) but descriptors allow you to do both multisig and threshold sig using the `multi` descriptor. That will be confusing when MIniscript gets integrated with descriptors :)  
> **username_2**: I think traditionally in Bitcoin "multisig" refers to k-of-n using OP_CHECKMULTISIG (so using multiple signatures and multiple keys). In cryptography at large, "multisignature" refers to a single signature with multiple keys (which musig/musig2/musig-dn and other schemes achieve), and "threshold signature" refers to a single signature corresponding to a k-of-n combination of multiple keys (like FROST accomplishes).  
> **username_1**: @username_2: Ok you may have changed your definitions since https://btctranscripts.com/lets-talk-bitcoin-podcast/2019-06-09-ltb-username_2-username_2-jonas-nick/ :) "k-of-n is say 2 out of 3 where k is different from n" and "When we talk about k-of-n or thresholds"  
> **username_2**: that's saying the same thing?  
> **username_0**: Thanks for the answer. I thought within bitcoin, “multisig” traditionally referred to threshold signing, for example: https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md#multisig . In any case, the clarification is helpful :)  
> **username_3**: There is a [multi_a](https://github.com/bitcoin/bitcoin/pull/24043) descriptor now.  
> **username_1**: @username_3: Thanks. Updated answer.  

---

