This guide explains BIP 387 Tapscript Multisig Output Script Descriptors in plain English. It covers the problem behind the BIP, why it matters and whether the proposal is part of Bitcoin today.
TL;DR
- What it is: BIP 387 is a Deployed informational specification defining multi_a() and sortedmulti_a() output-script descriptor expressions for threshold policies inside tapscript. The expressions build scripts from CHECKSIG, repeated CHECKSIGADD operations and a final NUMEQUAL threshold check.
- Why it matters: BIP 387 standardises two useful tapscript threshold-policy expressions. Reliable wallet interoperability comes from preserving context, derivation and sorting rules exactly and verifying the resulting scripts independently on every participating system.
- Current position: BIP 387 is a Deployed informational specification defining multi_a() and sortedmulti_a() output-script descriptor expressions for threshold policies inside tapscript.
BIP 387 Tapscript Multisig Output Script Descriptors in simple English
BIP 387 Tapscript Multisig Output Script Descriptors: multi_a and sortedmulti_a are tapscript expressions and may occur only within tr(). They are not drop-in replacements for legacy multi or sortedmulti in arbitrary descriptor positions.
Simple example
A node operator is checking BIP 387 Tapscript Multisig Output Script Descriptors. Sortedmulti_a sorts the derived x-only public keys lexicographically before constructing the script.
Key terms in plain English
- BIP:
- Bitcoin Improvement Proposal: a document describing a proposed rule, standard or process. Its status must be checked separately.
- Consensus:
- The shared rules full nodes use to decide whether blocks and transactions are valid.
- Node:
- A computer running Bitcoin software that checks data and communicates with other peers.
Status and dependency
BIP 387 is Deployed, Informational, at the Applications layer and requires the general descriptor rules in BIP 380. Deployed describes ecosystem specification status rather than a separate consensus activation.
Context restriction
multi_a and sortedmulti_a are tapscript expressions and may occur only within tr(). They are not drop-in replacements for legacy multi or sortedmulti in arbitrary descriptor positions.
Threshold rules
The threshold k must be no greater than the number of keys n. The specification permits at most 999 keys, while real wallets should impose smaller resource and review limits appropriate to their signers.
Script construction
The first x-only public key is checked with CHECKSIG, later keys are accumulated with CHECKSIGADD, and NUMEQUAL compares the total with k. Key order therefore affects the resulting script.
Sorted form
sortedmulti_a sorts the derived x-only public keys lexicographically before constructing the script. Sorting occurs after derivation, which matters when key expressions contain ranges or wildcards.
Lockstep derivation
When several extended keys are ranged, they derive the same child index together. Wallets must compare receive and change derivations at multiple indices, not just the descriptor text.
How specialists test it
Developers test the proposal with made-up data on an isolated test network. They check normal cases and deliberately invalid cases. Different implementations should reach the same result before anyone relies on the proposal.
Frequently asked questions
What is the main point of BIP 387 Tapscript Multisig Output Script Descriptors?
BIP 387 Tapscript Multisig Output Script Descriptors: multi_a and sortedmulti_a are tapscript expressions and may occur only within tr().
For BIP 387 Tapscript Multisig Output Script Descriptors, what should a beginner know about status and dependency?
BIP 387 is Deployed, Informational, at the Applications layer and requires the general descriptor rules in BIP 380.
For BIP 387 Tapscript Multisig Output Script Descriptors, what should a beginner know about context restriction?
multi_a and sortedmulti_a are tapscript expressions and may occur only within tr().
For BIP 387 Tapscript Multisig Output Script Descriptors, what should a beginner know about threshold rules?
The threshold k must be no greater than the number of keys n.
Conclusion
BIP 387 standardises two useful tapscript threshold-policy expressions. Reliable wallet interoperability comes from preserving context, derivation and sorting rules exactly and verifying the resulting scripts independently on every participating system.
Primary sources
Check the current specification status and the documentation for the exact implementation you operate before moving production funds or changing a mining node.
Join the ASIC Mining Discussion
Members can read and join the discussion
Log in to read comments from other miners. Create a free account if you would like to ask a question or share your experience.
Membership helps us protect the discussion from spam and keep answers useful.