Assuming we have N taproot addresses, is it possible to create an output that requires the signatures of t out N of those taproot addresses to be spent? I'm looking at a non-interactive protocol (i.e., t of the taproot addresses can independently sign the transaction and then the t signatures are all provided in the script when spending). Just like we would have t-out-of-N threshold signatures for ECDSA public key but with taproot addresses instead.


Multisignature and threshold signature schemes deal with keys: private and public keys. Addresses before Taproot were hashes of the public key (if it required a single signature from a single key) or the script (if it required a scriptSig to satisfy this script). If you wanted to use n addresses for a threshold signature scheme you would set it up using the n public keys associated with those n addresses (i.e. before they were hashed).

Similarly a Taproot threshold signature (k-of-n) would be constructed using public keys rather than addresses. (In Taproot's case the address is the internal public key tweaked by the Merkle root of the Taproot tree.) It would require k signatures associated with k of the n public keys to be spent. The difference with Taproot is that the OP_CHECKMULTISIG opcode has been deprecated and replaced with OP_CHECKSIGADD (discussed in BIP 342). But you can set up threshold signature schemes with this opcode that are comparable to the threshold signature schemes you could with SegWit version 0 (ECDSA).

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.