<p>This is <strong>exactly</strong> what a threshold signature scheme is: the ability to jointly (by interacting with a quorum of signers) produce a valid signature for a single public key that represents the threshold. The private key to that public key will not be constructed anywhere at any point in time.</p>
<p>The details of how to construct that signature depend on the scheme used. For n-of-n only schemes (called multisignatures) like MuSig and MuSig2, that's relatively simple (first agree on an R point, then everyone produces a partial signature s_i, and then those partial signatures are summed together mod the curve order). For actual k-of-n threshold schemes like FROST, some kind of Lagrange interpolation modulo the curve order is usually involved.</p>

CC BY-SA 4.0
2021-09-07T23:44:31.743Z
2021-09-07T23:44:31.743Z
Pieter Wuille
<p>In taproot, in order to spend the keypath, the transaction must be signed using the tweaked private key instead of the normal private key (as defined in BIP 341).
However when computing a signature using a threshold signature scheme, the secret is not known by anyone, instead everyone computes their &quot;share&quot; of the signature using their share of the secret key.<br />
In this case how to compute the final signature on the taproot output?
If the signature computed by the threshold signature scheme is $(\sigma,V)$, is it enough to simply add H(m||V)int(H(bytes(pk))) to the signature? (Assuming we don't need any script tree.)</p>

<multi-signature><taproot><musig><frost>
How to spend a taproot output using key path with a threshold signature scheme when the secret key is never computed?
sa8
# How to spend a taproot output using key path with a threshold signature scheme when the secret key is never computed?

(Asked by: username_0 on 2021-09-07)

In taproot, in order to spend the keypath, the transaction must be signed using the tweaked private key instead of the normal private key (as defined in BIP 341).
However when computing a signature using a threshold signature scheme, the secret is not known by anyone, instead everyone computes their "share" of the signature using their share of the secret key.  
In this case how to compute the final signature on the taproot output?
If the signature computed by the threshold signature scheme is $(\sigma,V)$, is it enough to simply add H(m||V)int(H(bytes(pk))) to the signature? (Assuming we don't need any script tree.)

**Tags:** multi-signature, taproot, musig, frost


---

## 1 answers

### Answer by username_1 on 2021-09-07. Score: 3

This is **exactly** what a threshold signature scheme is: the ability to jointly (by interacting with a quorum of signers) produce a valid signature for a single public key that represents the threshold. The private key to that public key will not be constructed anywhere at any point in time.

The details of how to construct that signature depend on the scheme used. For n-of-n only schemes (called multisignatures) like MuSig and MuSig2, that's relatively simple (first agree on an R point, then everyone produces a partial signature s\_i, and then those partial signatures are summed together mod the curve order). For actual k-of-n threshold schemes like FROST, some kind of Lagrange interpolation modulo the curve order is usually involved.


---

