Aller au contenu
buybitcoinsmart

Glossaire / Adresses et clés

Portefeuille HD

Aussi appelé HD wallet, portefeuille déterministe hiérarchique, BIP32.

Qu'est-ce qu'un portefeuille HD ?
Un portefeuille HD génère toutes les clés dont il aura besoin à partir d'une seule phrase de récupération aléatoire, organisées en arbre de parents et d'enfants tel que le BIP-32 l'a défini en 2012.

Spécifié dans BIP-32.

Une seule phrase de récupération produit une clé maîtresse, la clé maîtresse produit des branches, et les branches produisent chaque adresse que vous utilisez. Le BIP-32 a été attribué le 11 février 2012, et pratiquement tous les portefeuilles matériels, mobiles et de bureau livrés aujourd'hui le suivent. C'est pourquoi douze mots sur une carte peuvent restaurer un portefeuille que vous utilisez depuis dix ans.

Comment cela fonctionne

Un portefeuille HD transforme un nombre en hiérarchie à l'aide d'un hachage à clé, appliqué encore et encore. La phrase de récupération entre dans HMAC-SHA512 avec la chaîne de clé fixe "Bitcoin seed", produisant 64 octets : les 32 de gauche deviennent la clé privée maîtresse et les 32 de droite deviennent le code de chaîne maître. Cette paire est la racine de tout ce qui se trouve en dessous.

Chaque étape suivante prend une clé, son code de chaîne et un numéro d'index, les hache de la même manière et produit une clé enfant dotée de son propre code de chaîne. Chaque nœud a 4 294 967 296 enfants possibles, répartis en deux moitiés : les index inférieurs à 2 147 483 648 sont normaux et peuvent être calculés à partir du seul côté public, tandis que les index égaux ou supérieurs à cette limite sont renforcés et exigent la clé privée. La répétition de l'étape construit un arbre, et une position dans cet arbre s'écrit sous la forme d'un chemin de dérivation.

Le déterminisme est ce qui rend ce design utile. La même phrase de récupération, donnée à toute implémentation correcte, produit exactement les mêmes clés dans le même ordre, pour toujours. Aucune clé n'est jamais stockée, seulement recalculée, ce qui explique que la sauvegarde soit une phrase plutôt qu'un fichier qui grossit à chaque paiement reçu.

Les mots forment une couche distincte, et confondre les deux couches cause la plupart des problèmes de restauration. Le BIP-39 définit comment une phrase issue d'une liste de 2 048 mots devient la valeur de départ, en l'étirant via PBKDF2 avec HMAC-SHA512 sur 2 048 itérations, salée avec la chaîne "mnemonic" plus une phrase secrète facultative. Le BIP-32 ne connaît rien aux mots et le BIP-39 ne connaît rien aux arbres. Ils sont joints par convention, ce qui explique que deux portefeuilles puissent s'accorder sur votre phrase et différer sur vos adresses.

Bitcoin Core ne crée que des portefeuilles déterministes hiérarchiques depuis la version 0.16.0. Avant cela, un portefeuille contenait un ensemble de clés aléatoires sans lien, et une sauvegarde devenait obsolète dès que l'ensemble la dépassait.

Pourquoi cela compte quand vous achetez du bitcoin

La phrase que vous notez lors de la configuration du portefeuille est la seule chose qui vous sépare de chaque bitcoin que vous achèterez un jour, et la structure en arbre est ce qui rend cette affirmation vraie.

Sauvegardez une fois et la sauvegarde reste complète. Cent retraits d'une plateforme d'échange vers cent adresses nouvelles sont tous des descendants d'une seule racine, donc rien de ce que vous faites ensuite n'agrandit ce que vous devez protéger. C'est la plus grande amélioration pratique de la conservation du bitcoin depuis la livraison du premier client, et c'est tout autant la raison pour laquelle une phrase de récupération photographiée une fois est compromise définitivement : la photographie couvre des bitcoins que vous n'avez pas encore achetés.

La portabilité est le second bénéfice, et elle comporte un piège. Une phrase notée sur un Trezor ou un Ledger se restaure dans Sparrow, Electrum ou BlueWallet parce qu'ils implémentent tous la même norme. Le piège est la route. Le BIP-44 produit des adresses commençant par 1, le BIP-49 produit 3, le BIP-84 produit bc1q, et le BIP-86 produit bc1p, toutes à partir de mots identiques. Restaurez dans un logiciel qui utilise par défaut une autre finalité et le solde affiche zéro tandis que les bitcoins restent intacts sur une autre branche. Noter le chemin de dérivation à côté de la sauvegarde, et rien d'autre à côté, évite cette panique particulière.

La limite d'écart est la troisième chose à connaître. Un portefeuille restauré balaie vers l'avant 20 adresses inutilisées sous le BIP-44 puis cesse de chercher. Cliquer quarante fois sur un bouton de réception dans un portefeuille que vous n'avez jamais sauvegardé, puis utiliser la dernière adresse, est un moyen fiable d'obtenir une restauration qui affiche un solde vide.

Lire m/84'/0'/0'/0/0 niveau par niveau

Un chemin de dérivation fonctionne comme une adresse postale, en se resserrant à chaque niveau. Lisez le chemin natif SegWit standard de gauche à droite.

  • m est la clé maîtresse dérivée de votre phrase de récupération.
  • 84' sélectionne la finalité BIP-84, qui produit des adresses SegWit natives commençant par bc1q. L'apostrophe marque le niveau comme renforcé.
  • 0' est le type de cryptomonnaie, et 0 désigne le réseau principal du bitcoin. Le réseau de test serait 1'.
  • 0' est le compte, donc un compte distinct pour une entreprise serait 1'.
  • 0 est la chaîne : 0 pour les adresses que vous distribuez, 1 pour la monnaie rendue.
  • 0 est l'index d'adresse, qui augmente à chaque paiement reçu.

Les trois premiers niveaux sont renforcés et les deux derniers ne le sont pas, délibérément. Cette séparation est ce qui permet d'exporter une clé publique étendue au niveau du compte vers un portefeuille en lecture seule, qui peut alors générer des adresses de réception et de monnaie rendue sans jamais pouvoir atteindre un compte voisin ni remonter vers la clé maîtresse.

Portefeuille HD vs phrase de récupération

Un portefeuille HD est un schéma de dérivation ; une phrase de récupération est une façon de noter le nombre à partir duquel il démarre. Le BIP-32 définit l'arbre et accepte toute valeur de départ (seed) de 128 à 512 bits, en recommandant 256. Le BIP-39 définit les mots. Electrum livre son propre format de phrase incompatible et reste entièrement déterministe hiérarchique, ce qui montre que les deux couches sont réellement indépendantes. La distinction compte quand un logiciel affirme prendre en charge la restauration BIP-39 : c'est une promesse sur la lecture de vos mots, pas sur la branche qu'il examinera ensuite.

Portefeuille HD vs chemin de dérivation

Un portefeuille HD est l'arbre ; un chemin de dérivation est un itinéraire à travers lui. Les gens décrivent un portefeuille comme « un portefeuille BIP-84 » comme s'il s'agissait d'une catégorie de produit, mais tout portefeuille BIP-32 peut parcourir n'importe quel chemin, et la plupart des logiciels actuels afficheront volontiers plusieurs comptes à des finalités différentes à partir d'une seule phrase de récupération. Traitez le chemin comme une coordonnée que vous notez avec la sauvegarde, non comme une propriété de l'application que vous avez installée par hasard.

À ne pas confondre avec

Questions fréquentes

Dois-je sauvegarder chaque adresse créée par mon portefeuille HD ?

Non. Chaque adresse provient de la même phrase de récupération par un calcul fixe, donc la phrase de récupération couvre déjà les adresses que vous n'avez pas encore utilisées. Notez le chemin de dérivation avec la phrase et la sauvegarde est complète.

J'ai restauré ma phrase de récupération et le solde est à zéro. Que s'est-il passé ?

Presque toujours le chemin de dérivation ou la limite d'écart. Les mêmes mots produisent des adresses différentes selon les BIP-44, BIP-49, BIP-84 et BIP-86, et un portefeuille restauré cesse de balayer après 20 adresses inutilisées. Essayez les autres finalités et augmentez la limite d'écart avant de supposer que quoi que ce soit est perdu.

Un portefeuille HD est-il moins sûr que de générer les clés une à une ?

Non, et il est généralement plus sûr. Chaque clé provient toujours de 128 à 256 bits d'entropie, et une seule sauvegarde élimine la défaillance la plus courante, à savoir une sauvegarde obsolète qui ne contient pas une clé que vous avez utilisée par la suite.

Deux applications de portefeuille peuvent-elles partager le même portefeuille HD ?

Oui. Importez la même phrase dans les deux et définissez le même chemin de dérivation : elles dériveront des adresses identiques et afficheront des soldes identiques. Signer depuis les deux en même temps peut produire des transactions conflictuelles, donc traitez-en une comme principale.

À lire ensuite

Termes associés

Plus de termes : Adresses et clés

Lire cette page en anglais