Output Script Descriptors
Les descriptors décrivent un wallet de manière déterministe et inter-opérable (ex : wpkh([fp/84'/0'/0']xpub.../0/*)). Permettent à n'importe quel logiciel de regénérer les mêmes adresses. Standardisés par BIP-380. Indispensables aux multisigs modernes.
Définition et besoin
Les Output Script Descriptors (souvent abrégés descriptors) sont une mini-grammaire permettant de décrire, en une seule chaîne de caractères, l'intégralité de la logique de dérivation d'adresses d'un wallet : type de script, clés impliquées, chemin de dérivation, plage d'indices, etc. Introduits dans Bitcoin Core 0.17 (2018) puis standardisés par BIP-380 et la série 381-385.
Avant les descriptors, importer un wallet d'un logiciel à un autre était un cauchemar : il fallait deviner le type de dérivation, le format de script, la position du change… Les descriptors résolvent ce chaos.
Anatomie d'un descriptor
wpkh([d34db33f/84h/0h/0h]xpub6CUGRUo.../0/*)
| Composant | Signification |
|-----------|--------------|
| wpkh(...) | Type de script : Pay-to-Witness-Public-Key-Hash |
| d34db33f | Fingerprint de la clé maîtresse |
| 84h/0h/0h | Chemin BIP-84 standard pour SegWit natif |
| xpub6CUGRUo... | Clé publique étendue |
| /0/* | Chaîne externe, dérivation sur tous les indices |
Une checksum de 8 caractères (#xxxxxxxx) peut être ajoutée pour détecter les erreurs de saisie.
Types de scripts supportés
pkh(...)→ P2PKHwpkh(...)→ P2WPKHsh(...)→ P2SH (wrapping)wsh(...)→ P2WSHtr(...)→ P2TR Taprootmulti(k, key1, key2, ...)→ multisig classiquesortedmulti(k, ...)→ multisig avec clés ordonnées (BIP-67)
Exemple multisig
wsh(sortedmulti(2,
[fp1/48h/0h/0h/2h]xpub.../0/*,
[fp2/48h/0h/0h/2h]xpub.../0/*,
[fp3/48h/0h/0h/2h]xpub.../0/*
))
Ce descriptor décrit un multisig 2-of-3 SegWit natif. Il suffit de l'importer dans Sparrow, Bitcoin Core, BlueWallet ou Specter pour retrouver les mêmes adresses.
Cas d'usage
- Importer un watch-only wallet sans révéler la clé privée.
- Configuration multisig reproductible entre coordinateurs (Sparrow, Specter).
- Compatibilité PSBT : les hardware wallets reçoivent le descriptor pour comprendre le contexte de signature.
- Sauvegardes : un descriptor + une seed est tout ce qu'il faut pour reconstruire un wallet.
Liens avec Miniscript
Miniscript étend les descriptors pour décrire des politiques de dépense complexes (timelock, multipath, threshold). Le couple descriptor + Miniscript devient l'ABI standard du Bitcoin moderne.
À retenir
Les descriptors sont devenus le langage commun des wallets Bitcoin. Ils transforment ce qui était une configuration tribale en une chaîne portable, vérifiable et auditable. Indispensables dès qu'on dépasse le wallet singlesig basique.
Termes lies
- MiniscriptMiniscript est une représentation de Bitcoin Script lisible et composable. Permet d'écrire des politiques complexes (multisig avec timelock, etc.) sûrement. Implémenté par Liana, Bitcoin Core, BDK. Démocratise les scripts avancés.
- PSBTPSBT (Partially Signed Bitcoin Transaction, BIP-174) est un format standard pour transporter une transaction entre signataires. Indispensable au multisig et aux hardware wallets. Permet workflow off-line/air-gapped sans révéler la clé. Évolution majeure pour la sécurité.
- BIP-380BIP-380 standardise les Output Script Descriptors. Format universel pour décrire un wallet de manière déterministe.
- Multisig (multisignature)Une transaction multisig requiert plusieurs signatures pour être valide (M-of-N). Permet de partager le contrôle d'un wallet entre plusieurs parties ou clés stockées séparément. C'est l'outil clé pour la sécurité avancée et l'héritage. Standard avec Sparrow, Specter, Liana, Nunchuk.
Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.