TERM_DEF // UPGRADES_BIPS / BIP_390_MUSIG_DESCRIPTOR_KEY_EXPRESSION
BIP 390 (MUSIG()
DESCRIPTOR KEY EXPRESSION)
DESCRIPTOR KEY EXPRESSION)
BIP 390 (musig() Descriptor Key Expression). New descriptor key-expression for MuSig2 aggregate keys.
This page sits in the Upgrades & BIPs section — The proposal process and the major upgrades that shaped Bitcoin. Read on for what it is, why it exists, how it works under the hood, and what to watch out for.
This page sits in the Upgrades & BIPs section — The proposal process and the major upgrades that shaped Bitcoin. Read on for what it is, why it exists, how it works under the hood, and what to watch out for.
WHAT_BIP_390_MUSIG_DESCRIPTOR_KEY_EXPRESSION_IS
BIP 390 (musig() Descriptor Key Expression) — at a glance
UPGRADES
BIP 390 — "musig(" is a proposal in the Descriptors family, first published in 2024 with status draft. New descriptor key-expression for MuSig2 aggregate keys. Its technical mechanism: musig() key expression aggregating two or more co-signer xpubs. expresses MuSig2 wallets in the standard descriptor format
Why it exists
DESIGN
BIP 390 (musig() Descriptor Key Expression) exists to solve a specific problem: represent MuSig2 aggregate keys inside output-descriptors/">output descriptors. Without a written, numbered spec, every wallet and node implementer would interpret the requirement differently — and Bitcoin's value depends on every implementation agreeing exactly. BIP-390 is the single source of truth for this concern, so any new client built today can match the behaviour of every client built since 2024.
HOW_IT_WORKS
Mechanism
HOW IT WORKS
Mechanically, BIP-390 musig() key expression aggregating two or more co-signer xpubs. Adoption today: expresses MuSig2 wallets in the standard descriptor format.
1. Author drafts BIP-390 against the BIP-2 template — abstract, motivation, specification, rationale.
2. The text + a reference implementation are posted on the bitcoin-dev list and as a PR to bitcoin/bips.
3. Reviewers tear it apart: ambiguities, security concerns, edge cases, interaction with prior BIPs.
4. Once stable, the BIP editor merges it; it gets a number (BIP-390) and the status "draft" or "proposed".
5. Implementations land in Bitcoin Core / wallets / other clients. For consensus changes: activation parameters chosen.
6. After deployment + adoption, BIP-390 is promoted to "final"; deprecated proposals get "replaced" or "withdrawn".
WORKED_EXAMPLE
BIP-390 — quick reference card
EXAMPLE
BIP number : 390
Title : musig(
Area : Descriptors
First published: 2024
Status : draft
Fork class : no
Motivation : represent MuSig2 aggregate keys inside output descriptors.
Mechanism : musig() key expression aggregating two or more co-signer xpubs.
Where it shows up : expresses MuSig2 wallets in the standard descriptor format.
Read the spec : https://github.com/bitcoin/bips/blob/master/bip-0390.mediawiki
KEY_PROPERTIES
OPT-IN
No authority can force a BIP on anyone. Adoption depends entirely on whether the change is genuinely useful.
NUMBERED
Stable numeric reference — BIP-390 means the same thing across every wallet, miner, and node that has read this spec.
NON-CONSENSUS
BIP-390 is not a consensus rule — clients can implement it without coordinating with the network at large.
DRAFT
BIP-390 is still in draft — reference code may exist but mainnet adoption is partial or pending.
COMMON_PITFALLS
Things that catch people out
PITFALLS
- BIP-390 is still in DRAFT status — its details can change before activation, and any code built against it may need adjustment.
- Don't confuse "draft" / "proposed" / "final" status — read the BIP header before relying on it in production.
- The BIP number is just an editorial counter — it doesn't imply correctness or stability. Always cross-reference with the latest bitcoin/bips repo.
RELATED_CONCEPTS
Other terms from Upgrades & BIPs — click any to read its page:
TERMINOLOGY_INDEX
TERMINOLOGY
BIP 390 (musig() Descriptor Key Expression)
New descriptor key-expression for MuSig2 aggregate keys.
Segregated Witness (SegWit, BIP 141)
The 2017 upgrade separating witness-data/">witness data, fixing tx malleability, and introducing weight units.
Taproot (BIP 341)
Tapscript (BIP 342)
Script-language updates accompanying Taproot — new opcodes, removed limits.
Schnorr (BIP 340)
The Schnorr signature spec adopted by Taproot.
BIP Process
The community workflow for proposing, discussing, and tracking changes to Bitcoin.
Soft Fork Activation
MASF (Miner-Activated Soft Fork)
Activation triggered by miner signaling in block versions.