Portefeuilles HD et Chemins de Derivation Expliques (BIP44)
Table des matières
Lorsque vous configurez un portefeuille de cryptomonnaies et recevez une seed phrase de 12 mots, cette seule sauvegarde vous donne acces a chaque compte que le portefeuille creera --- sur Bitcoin, Ethereum, Solana et toute autre chaine prise en charge. Le mecanisme qui rend cela possible s'appelle un portefeuille HD, et le systeme d'adresses qu'il utilise est gouverne par des chemins de derivation.
Ce guide explique comment les portefeuilles HD transforment une seed en un nombre illimite de cles, ce qu'un chemin de derivation comme m/44'/60'/0'/0/0 signifie reellement, et pourquoi obtenir le bon chemin compte lorsque vous passez d'un portefeuille ou d'une blockchain a l'autre.
Qu'est-ce qu'un Portefeuille HD ?¶
HD signifie Hierarchical Deterministic (Hierarchique Deterministe). Le terme vient du BIP32, une specification publiee en 2012 qui definit comment deriver un arbre de paires de cles cryptographiques a partir d'une seule racine.
Hierarchique signifie que les cles sont organisees en structure arborescente --- une cle parente peut produire des cles filles, et ces filles peuvent produire des petites-filles. L'arbre peut se ramifier aussi profondement que necessaire.
Deterministe signifie que le processus est reproductible. Etant donnee la meme racine (la graine maitresse), le meme arbre de cles est produit a chaque fois, dans chaque portefeuille qui suit le standard.
Avant les portefeuilles HD, chaque nouvelle adresse necessitait de generer et sauvegarder une cle privee aleatoire separee. Si vous generiez 100 adresses, vous aviez besoin de 100 sauvegardes. En manquer une, et ces fonds etaient perdus. Les portefeuilles HD ont elimine ce probleme. Vous sauvegardez la seed une fois, et chaque cle que le portefeuille derivera a l'avenir est deja couverte par cette sauvegarde.
La racine de l'arbre provient d'une seed phrase BIP39. Le mnemonique est converti en graine binaire de 512 bits via PBKDF2 (comme decrit dans BIP39 Explique). Cette graine de 512 bits est divisee en cle privee maitresse (256 bits) et chain code maitre (256 bits). Ensemble, ils forment la racine a partir de laquelle l'arbre entier croit.
Anatomie de m/44'/60'/0'/0/0¶
Un chemin de derivation est l'adresse dans l'arbre qui identifie une cle specifique. Il ressemble a un chemin de fichier sur un ordinateur, et chaque segment indique quelle branche suivre.
Decodons m/44'/60'/0'/0/0, le chemin standard pour la premiere adresse Ethereum :
m / 44' / 60' / 0' / 0 / 0
| | | | | |
| | | | | +-- Indice d'adresse (0 = premiere adresse)
| | | | +------ Change (0 = externe/reception, 1 = interne/change)
| | | +----------- Compte (0 = premier compte)
| | +----------------- Type de monnaie (60 = Ethereum)
| +------------------------ Objectif (44 = standard BIP44)
+---------------------------- Cle maitresse (racine de l'arbre)
Detail de chaque niveau :¶
m --- La cle maitresse. Chaque chemin de derivation commence ici. C'est la racine derivee directement de votre seed.
44' --- L'objectif. Le nombre 44 indique que ce chemin suit le standard BIP44 pour les portefeuilles multi-comptes et multi-monnaies. L'apostrophe (ou ') marque cela comme une derivation "durcie", signifiant que la cle fille ne peut pas etre calculee a partir de la seule cle publique parente --- elle necessite la cle privee. C'est une mesure de securite.
60' --- Le type de monnaie. Chaque cryptomonnaie se voit attribuer un numero par SLIP-44 (plus de details ci-dessous). Ethereum est 60. Bitcoin est 0. Solana est 501. Ce niveau permet a une seed de servir plusieurs blockchains sans collision de cles.
0' --- L'indice de compte. Pensez-y comme des portefeuilles separes au sein de votre portefeuille. Le compte 0 est celui par defaut. Vous pourriez utiliser le compte 1 pour un autre usage --- epargne versus depenses, par exemple. La plupart des utilisateurs ne depassent jamais le compte 0.
0 --- Le niveau de change. Dans le modele UTXO de Bitcoin, 0 signifie adresses externes (reception) et 1 signifie adresses internes (change). Ethereum n'utilise pas les adresses de change de la meme facon, mais le niveau est preserve pour la compatibilite.
0 --- L'indice d'adresse. C'est le nombre final qui s'incremente pour produire de nouvelles adresses. L'indice 0 est votre premiere adresse, l'indice 1 est la deuxieme, et ainsi de suite. Votre portefeuille incremente cette valeur chaque fois que vous demandez une nouvelle adresse de reception.
BIP44 et Types de Monnaie SLIP-44¶
BIP44 a standardise la structure de chemin de derivation montree ci-dessus. Il a ete publie en 2014 et construit sur la derivation de cles de BIP32 avec une hierarchie fixe a cinq niveaux : objectif / type de monnaie / compte / change / indice d'adresse.
SLIP-44 (Satoshi Labs Improvement Proposal 44) maintient le registre des numeros de types de monnaie. Chaque blockchain se voit attribuer un entier unique pour que la meme seed produise des cles completement differentes pour differentes chaines. Voici quelques attributions courantes :
| Type de Monnaie | Blockchain | Chemin par Defaut |
|---|---|---|
| 0 | Bitcoin | m/44'/0'/0'/0/0 |
| 2 | Litecoin | m/44'/2'/0'/0/0 |
| 60 | Ethereum (et chaines EVM) | m/44'/60'/0'/0/0 |
| 144 | XRP | m/44'/144'/0'/0/0 |
| 195 | Tron | m/44'/195'/0'/0/0 |
| 501 | Solana | m/44'/501'/0'/0' |
| 9006 | Avalanche (C-Chain) | m/44'/60'/0'/0/0 |
Notez que la C-Chain d'Avalanche utilise le type de monnaie 60 (type d'Ethereum) car sa C-Chain est compatible EVM et partage le meme format d'adresse. Il en va de meme pour Polygon, Arbitrum, Optimism et Base --- ils utilisent tous m/44'/60'/0'/0/0, ce qui signifie que la meme adresse Ethereum est valide sur tous ces reseaux.
C'est pourquoi lorsque vous ajoutez Polygon ou Arbitrum a MetaMask, votre adresse est la meme que votre adresse Ethereum. Ils derivent tous du meme chemin. La distinction se fait au niveau du reseau (chain ID), pas au niveau de la derivation de cle.
Differentes Chaines, Differents Chemins¶
Alors que les chaines EVM partagent le chemin d'Ethereum, les chaines non-EVM utilisent leurs propres conventions, et les differences comptent.
Chemins Bitcoin¶
Bitcoin a evolue a travers plusieurs formats d'adresses, chacun avec son propre standard de derivation :
| Standard | Chemin | Type d'Adresse | Prefixe |
|---|---|---|---|
| BIP44 | m/44'/0'/0'/0/0 |
Heritage (P2PKH) | 1... |
| BIP49 | m/49'/0'/0'/0/0 |
SegWit Imbrique (P2SH-P2WPKH) | 3... |
| BIP84 | m/84'/0'/0'/0/0 |
SegWit Natif (bech32) | bc1q... |
| BIP86 | m/86'/0'/0'/0/0 |
Taproot | bc1p... |
La plupart des portefeuilles Bitcoin modernes utilisent BIP84 (SegWit natif) par defaut car il offre des frais de transaction plus bas. Si vous restaurez une seed dans un portefeuille et que vos fonds n'apparaissent pas, le portefeuille scanne peut-etre le mauvais chemin de derivation. Basculer entre BIP84 et BIP44 (ou vice versa) dans les parametres du portefeuille est generalement la solution.
Chemins Solana¶
Solana utilise ed25519 au lieu de secp256k1, donc sa derivation est structurellement differente. Le chemin standard est m/44'/501'/0'/0' --- notez que les quatre niveaux sont durcis (marques par '). Certains portefeuilles Solana utilisent m/44'/501'/0' ou m/44'/501', et le chemin specifique varie selon l'application de portefeuille. Phantom et Solflare utilisent des conventions differentes, ce qui peut causer de la confusion lors de la migration. Pour un guide detaille, consultez le Guide de Generation de Portefeuille Solana.
XRP et Tron¶
XRP utilise le type de monnaie 144 avec le chemin m/44'/144'/0'/0/0. Tron utilise le type de monnaie 195 avec m/44'/195'/0'/0/0. Les deux utilisent secp256k1 comme Bitcoin et Ethereum, mais leur encodage d'adresse differe.
BIP84 vs BIP44 : Pourquoi Bitcoin a Plusieurs Standards¶
Si vous avez utilise Bitcoin, vous avez peut-etre remarque que certaines adresses commencent par 1, d'autres par 3, et les modernes par bc1q. Ce n'est pas cosmetique --- chaque format correspond a un standard de derivation et un type de script differents.
BIP44 (m/44'/0'/...) genere des adresses P2PKH heritage (le format 1...). C'etait le chemin Bitcoin original derive de BIP32. Il fonctionne toujours, mais ces adresses utilisent plus d'espace de bloc par transaction.
BIP49 (m/49'/0'/...) genere des adresses SegWit imbriquees P2SH (le format 3...). C'etait un format de transition qui offrait les economies de frais de SegWit tout en maintenant la compatibilite avec les anciens portefeuilles.
BIP84 (m/84'/0'/...) genere des adresses SegWit natives utilisant l'encodage bech32 (le format bc1q...). C'est le format le plus efficace pour les transactions standard et c'est le defaut dans la plupart des portefeuilles modernes.
L'insight cle est que les trois formats peuvent etre derives de la meme seed phrase. Vos 12 mots ne changent pas. Ce qui change est le niveau d'objectif dans le chemin de derivation : 44, 49 ou 84. Un portefeuille qui prend en charge les trois scannera chaque chemin pour trouver vos fonds.
Lors de la generation ou restauration d'un portefeuille Bitcoin, verifiez toujours quel standard de derivation le portefeuille utilise par defaut. Si vous voyez un format d'adresse different de celui attendu, le portefeuille utilise probablement un standard BIP different. Pour explorer les formats d'adresses Bitcoin en detail, consultez Formats d'Adresses Crypto Expliques.
Derivation de Cle Etape par Etape¶
Voici comment fonctionne la derivation complete, de la seed phrase a une adresse Ethereum utilisable :
Etape 1 : Mnemonique vers Graine¶
Votre mnemonique de 12 mots est traite par PBKDF2-HMAC-SHA512 avec 2 048 iterations et le sel "mnemonic" (plus une phrase de passe optionnelle). La sortie est une graine binaire de 512 bits.
Etape 2 : Graine vers Cle Maitresse¶
La graine de 512 bits est traitee par HMAC-SHA512 avec la cle "Bitcoin seed" (cette chaine de cle est utilisee quelle que soit la blockchain cible). Les 256 bits de gauche deviennent la cle privee maitresse. Les 256 bits de droite deviennent le chain code maitre.
Etape 3 : Cle Maitresse vers Cles Filles¶
A partir de la cle maitresse, chaque niveau du chemin de derivation execute une fonction de derivation de cle fille (CKD). Pour les enfants durcis (marques par '), la cle privee parente et le chain code sont passes dans HMAC-SHA512 avec l'indice enfant. Le resultat est une nouvelle cle privee (fille) et un chain code.
Pour les enfants normaux (non durcis), la cle publique parente est utilisee a la place de la cle privee. C'est ce qui permet les portefeuilles en lecture seule --- vous pouvez deriver des cles publiques et des adresses sans avoir la cle privee.
Etape 4 : Cle Privee vers Cle Publique¶
Au dernier niveau de derivation, la cle privee fille est convertie en cle publique par multiplication sur courbe elliptique. Pour Ethereum, cela utilise la courbe secp256k1. L'operation est : Cle Publique = Cle Privee * G, ou G est le point generateur de la courbe.
Etape 5 : Cle Publique vers Adresse¶
La cle publique est hashee pour produire l'adresse blockchain. Pour Ethereum, la cle publique est hashee avec Keccak-256, et les 20 derniers octets (40 caracteres hex) deviennent l'adresse, prefixee par 0x. Pour Bitcoin, le processus implique SHA-256 suivi de RIPEMD-160, puis un encodage Base58Check ou bech32 selon le type d'adresse.
Vous pouvez voir ce processus entier en action en utilisant le Generateur d'Adresses Ethereum ou le Generateur d'Adresses Bitcoin de SafeSeed, qui montrent chaque etape de la seed a l'adresse.
Pourquoi C'est Important en Pratique¶
Comprendre les chemins de derivation n'est pas qu'academique. Voici des situations concretes ou cela compte :
- Restaurer un portefeuille dans un logiciel different. Si vous passez de Ledger a Trezor, ou de MetaMask a un autre portefeuille, assurez-vous que le chemin de derivation correspond. Meme seed plus chemin different egale adresses differentes et fonds apparemment manquants.
- Acceder a plusieurs chaines. Votre seed phrase couvre deja Polygon, Arbitrum et d'autres chaines EVM --- elles utilisent toutes le type de monnaie 60 d'Ethereum. Pas de sauvegarde separee necessaire.
- Deboguer des fonds manquants. Si vous restaurez une seed Bitcoin et ne voyez pas votre solde, essayez de basculer entre les chemins BIP44, BIP49 et BIP84 dans les parametres du portefeuille.
- Generer des adresses pour des usages specifiques. En incrementant l'indice de compte (le troisieme niveau), vous pouvez creer des portefeuilles logiquement separes --- un pour les depenses quotidiennes, un pour le stockage a long terme --- le tout a partir de la meme seed phrase.
Le systeme de chemins de derivation est ce qui transforme une seule seed phrase en un portefeuille multi-chaines et multi-comptes. C'est la couche d'infrastructure qui rend l'auto-conservation moderne des cryptomonnaies a la fois puissante et portable. Une fois que vous le comprenez, vous pouvez passer d'un portefeuille, d'une chaine et d'un format d'adresse a l'autre en toute confiance.