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.)


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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.