Output Descriptor est un texte décrivant les clés et les règles qu’un portefeuille doit employer pour construire des sorties Bitcoin : des enregistrements de montants et de leurs conditions de dépense ultérieure. Il aide à reproduire les bonnes adresses et à reconnaître leurs paiements. Ce n’est ni une transaction ni une sauvegarde complète ; il peut être entièrement public ou contenir des clés secrètes.
Anna change l’application avec laquelle elle observe son portefeuille matériel. Elle veut retrouver le suivi de ses fonds dans la nouvelle application sans saisir ses mots de récupération sur l’ordinateur. Ces mots de récupération, appelés Seed Phrase, constituent une sauvegarde permettant de retrouver les clés du portefeuille. Un descripteur public indique à la nouvelle application quelles clés publiques utiliser et comment produire les mêmes adresses. Imagine un mode d’emploi précis pour construire des adresses, pas un mot de passe supplémentaire. Le logiciel reconnaît souvent seul les réglages d’un portefeuille standard, mais deviner ne suffit pas pour une configuration inhabituelle ou Multisig (une configuration de portefeuille avec plusieurs clés de signature). Le descripteur ne transfère rien et ne modifie pas les paiements déjà reçus. Il décrit les règles à préserver lors de la restauration. [1] [8]
Une clé privée permet de créer une signature numérique autorisant une dépense. Une clé publique permet de vérifier cette signature, mais pas de la créer. Un descripteur public peut contenir un xpub : des données pour dériver d’autres clés publiques sans pouvoir signer. Il convient à une Watch-only Wallet, qui observe les paiements sans pouvoir les envoyer seule. Cet export mérite néanmoins d’être protégé pour ta vie privée : il peut relier de nombreuses adresses et leurs historiques. Un autre descripteur peut contenir un xprv, une clé privée étendue, ou WIF, un format de clé privée individuelle. Il s’agit alors de secrets pouvant permettre de dépenser selon les conditions prévues. Ne les soumets pas à un vérificateur en ligne et ne les conserve pas comme une note anodine. La configuration publique ne remplace pas les sauvegardes nécessaires à la signature. [1] [8]
Après l’import, Anna compare plusieurs adresses de réception avec le portefeuille d’origine. Avec un portefeuille matériel, elle vérifie les adresses sur l’écran fiable de l’appareil selon la procédure du fabricant. Elle vérifie aussi la configuration de la branche de monnaie rendue, qui lui restitue le reste des fonds lors d’un paiement. Un nom de compte identique ne suffit pas. Avant de compter sur une nouvelle sauvegarde, elle vérifie toute la procédure de restauration prévue pour son portefeuille, sans exposer inutilement les clés secrètes. Si l’application ne reconnaît pas le descripteur ou affiche d’autres adresses, elle examine d’abord compatibilité, réseau et réglages. Réécrire au jugé une expression inconnue n’est pas une réparation sûre. [5] [8]
Pour un portefeuille exigeant deux signatures parmi trois clés, deux jeux de mots de récupération et le souvenir que ‘c’était deux sur trois’ ne suffisent pas. Reconstituer les bonnes conditions de dépense nécessite les données publiques des trois clés, leurs règles de dérivation et le type exact de script. Un script exprime les conditions à remplir pour dépenser les fonds. Dans multi(k,...), l’ordre indiqué des clés est conservé ; k représente le nombre de signatures requis. La variante sortedmulti(k,...) trie les clés publiques dérivées selon leurs octets lors de chaque construction du script. Ce sont des règles différentes, pas deux noms interchangeables. Conserve l’export complet de configuration avec les sauvegardes des clés nécessaires à la signature protégées séparément. Une liste de noms d’appareils ne suffit pas. [2] [8]
Le caractère # peut être suivi de huit caractères appelés checksum, la somme de contrôle définie par BIP380. Le logiciel détecte ainsi de nombreuses erreurs de copie. Ce n’est ni la signature de l’auteur, ni un chiffrement, ni la preuve que le descripteur t’appartient. Celui qui remplace volontairement les clés par les siennes peut aussi calculer une nouvelle checksum correcte. Le contrôle du texte doit donc accompagner celui des adresses et de la provenance de la configuration. En cas d’erreur de checksum, récupère d’abord l’export original. Recalculer simplement la somme pourrait valider un texte déjà abîmé. [1]
Une clé peut être précédée de [fingerprint/path], l’information d’origine appelée key origin. Le fingerprint est un identifiant court de la clé initiale ; path décrit le chemin ayant produit la clé écrite ensuite. Cela aide l’appareil de signature à retrouver la bonne clé. Un autre chemin peut suivre le xpub pour dériver les adresses individuelles. Ces deux parties ont des fonctions distinctes ; ce ne sont pas de simples étiquettes de compte. Des clés différentes peuvent avoir le même fingerprint par coïncidence : il n’authentifie donc pas un appareil. Un export public ne peut pas non plus franchir librement Hardened Derivation, une étape exigeant des données privées. L’application exportatrice doit choisir le bon niveau de clé. [1]
L’étoile de /* indique le remplacement par des nombres successifs, par exemple 0, 1 et 2. Ce ranged descriptor décrit plusieurs adresses ; pour chaque opération, le logiciel définit la plage d’indices à traiter. La notation <0;1> de BIP389 peut réunir deux branches, généralement réception et monnaie rendue, si l’application la prend en charge. Mais le descripteur ne tient pas lui-même la liste des adresses utilisées ni le prochain numéro libre. Le gap limit, nombre d’adresses consécutives jamais utilisées après lequel la recherche s’arrête, n’est pas non plus automatiquement inclus. Jamais utilisée signifie sans historique de transactions : une adresse ayant reçu des fonds ensuite dépensés ne compte pas comme inutilisée. Restaurer peut donc demander l’état du portefeuille et une plage de recherche suffisamment large. [5] [6] [9]
Une sortie de transaction contient un scriptPubKey, le script qui fixe ses conditions de dépense future. Le descripteur indique comment le construire. wpkh(KEY) décrit Native SegWit avec une seule clé ; KEY est ici un nom de remplacement, pas une véritable clé. L’envelopper dans sh(wpkh(KEY)) change le format de sortie et l’adresse, même si la clé reste identique. D’autres expressions sont pk(), pkh(), wsh(), addr() et raw(). Elles ne sont pas interchangeables : addr() décrit par exemple une adresse connue, mais n’apporte pas les informations manquantes pour dépenser depuis celle-ci. Cette partie sert de référence de configuration ; elle ne demande pas aux débutants d’écrire leurs descripteurs à la main. [1] [8]
Une sortie Taproot peut être dépensée par la signature d’une clé ou selon des conditions de script jointes, si elle en contient. tr(KEY) décrit une clé interne sans branche de script permettant de dépenser ; tr(KEY,TREE) ajoute un arbre de scripts. Il faut donc conserver davantage qu’une liste de clés. Le regroupement des scripts dans l’arbre compte : le modifier peut changer leur empreinte commune, la Merkle root, et l’adresse finale, même si les conditions individuelles restent identiques. Toute permutation de branches ne la change toutefois pas. Miniscript aide à écrire et analyser les conditions ; multi_a exprime plusieurs signatures dans Tapscript, le langage de script de Taproot. Ni l’un ni l’autre ne remplace l’export complet de configuration. [3] [8]
RPC est une interface permettant de donner des commandes au logiciel depuis un autre programme ou depuis la ligne de commande. Dans Bitcoin Core 29, la commande RPC getdescriptorinfo analyse un descripteur. Elle renvoie une forme publique sans clés privées et les champs checksum, isrange, issolvable et hasprivatekeys. Le dernier indique si l’entrée contenait une clé privée ; issolvable ne signifie pas que tu possèdes les secrets nécessaires à la signature. deriveaddresses permet de comparer les adresses dérivées. À l’import, importdescriptors reçoit aussi timestamp, active, internal, range et next_index : début de recherche de l’historique, utilisation active de la configuration, branche interne de monnaie rendue, plage et prochain indice. Un rescan recherche de nouveau les transactions dans la chaîne. Un timestamp trop tardif peut omettre d’anciens paiements ; changer le descripteur ne les déplace ni ne les efface. Il faut une nouvelle sauvegarde du portefeuille après import. Ces commandes s’utilisent dans ta propre installation fiable, pas dans un formulaire web tiers. [5] [7] [8]
Pour une vision complète, lisez aussi Portefeuille, Watch-only Wallet, Multisig, PSBT, Miniscript, Bitcoin. Cette entrée est également citée par Watch-only Wallet, Extended Public Key (xpub), PSBT, Auto-garde.