Aller au contenu principal

Chemins de dérivation BIP-44 : comment les wallets génèrent des adresses

Lorsque vous configurez un wallet de cryptomonnaie et qu’il génère une phrase de récupération, cette seule seed doit produire des milliers d’adresses sur des dizaines de blockchains différentes, chacune avec sa propre clé privée, clé publique et son propre format d’adresse. BIP-44 définit la structure d’organisation qui rend cela possible : un arbre hiérarchique de clés dérivées d’une racine unique, avec une notation de chemin standardisée garantissant l’interopérabilité des wallets.

Comprendre les chemins de dérivation est essentiel pour toute personne qui doit récupérer des fonds dans un autre wallet, gérer des portefeuilles multi-coins, ou résoudre des soldes « manquants » après restauration d’une phrase de récupération.

La hiérarchie de dérivation des clés

BIP-32 : la base

BIP-44 s’appuie sur BIP-32 (Hierarchical Deterministic Wallets), qui définit une méthode permettant de dériver un arbre illimité de paires de clés à partir d’une seule clé maîtresse. BIP-32 a introduit deux concepts fondamentaux :

Dérivation de clés enfants — À partir de n’importe quelle clé étendue (une clé privée ou publique combinée à un chain code), vous pouvez dériver des clés enfants à différents index. Chaque enfant peut ensuite dériver ses propres enfants, créant ainsi un arbre.

Dérivation durcie vs normale — La dérivation normale permet de dériver des clés publiques enfants à partir d’une clé publique parente (utile pour les wallets en lecture seule). La dérivation durcie nécessite la clé privée parente et offre une isolation de sécurité plus forte entre les branches. Les index durcis s’écrivent conventionnellement avec une apostrophe (ex. 44').

BIP-43 : champ Purpose

BIP-43 a établi la convention d’utiliser le premier niveau de l’arbre de dérivation pour indiquer le « purpose » — en pratique, le standard BIP suivi. BIP-44 utilise le purpose 44', BIP-49 utilise 49' (pour les adresses P2SH compatibles SegWit), BIP-84 utilise 84' (pour SegWit natif), et BIP-86 utilise 86' (pour Taproot).

BIP-44 : le chemin complet

BIP-44 définit un chemin de dérivation à cinq niveaux :

m / purpose' / coin_type' / account' / change / address_index

Chaque niveau a une signification précise :

NiveauChampDurciDescription
1PurposeOui (44')Identifie le standard de dérivation
2Coin TypeOuiIdentifie la cryptomonnaie
3AccountOuiSépare les fonds en comptes logiques
4ChangeNon (0 ou 1)Externe (0) ou monnaie interne (1)
5Address IndexNon (0, 1, 2...)Numéro d’adresse séquentiel

Purpose (44')

Le champ purpose est toujours 44' pour la dérivation standard BIP-44. Autres valeurs courantes :

  • 49' — BIP-49 (SegWit encapsulé en P2SH)
  • 84' — BIP-84 (SegWit natif / Bech32)
  • 86' — BIP-86 (Taproot / P2TR)

Ces valeurs définissent différents types d’adresses et sont expliquées dans leurs BIP respectifs.

Coin Type

Le coin type identifie à quelle cryptomonnaie appartiennent les clés dérivées. Les coin types enregistrés incluent :

CoinCoin TypePréfixe de chemin
Bitcoin0'm/44'/0'
Bitcoin Testnet1'm/44'/1'
Litecoin2'm/44'/2'
Dogecoin3'm/44'/3'
Ethereum60'm/44'/60'
Ethereum Classic61'm/44'/61'
Cosmos118'm/44'/118'
Solana501'm/44'/501'
Cardano1815'm/44'/1815'
Polkadot354'm/44'/354'

Le registre complet des coin types est maintenu dans SLIP-44 et contient plus de 1 000 entrées.

Account

Le niveau account permet aux utilisateurs de créer des comptes logiques séparés dans le même wallet, comme plusieurs comptes bancaires. Le compte 0' est la valeur par défaut :

  • m/44'/0'/0' — Bitcoin Account 0
  • m/44'/0'/1' — Bitcoin Account 1
  • m/44'/60'/0' — Ethereum Account 0

Les comptes utilisent une dérivation durcie, ce qui signifie que connaître la clé publique étendue d’un compte ne révèle pas les clés d’un autre compte. Cela assure une isolation de confidentialité entre comptes.

Change

Le niveau change distingue :

  • 0 (chaîne externe) — Adresses données aux autres pour recevoir des paiements.
  • 1 (chaîne interne) — Adresses utilisées en interne par le wallet pour vous renvoyer la monnaie.

Dans le modèle UTXO de Bitcoin, lorsque vous dépensez une sortie de transaction, la sortie entière doit être consommée. Si vous envoyez 0.5 BTC depuis une sortie de 1 BTC, les 0.5 BTC restants sont envoyés vers une adresse de change contrôlée par votre wallet. La chaîne de change garde ces adresses séparées des adresses de réception pour des raisons d’organisation et de confidentialité.

Ethereum et d’autres blockchains basées sur des comptes n’utilisent pas la chaîne de change de la même manière, car elles n’ont pas de modèle UTXO. Les wallets Ethereum utilisent généralement uniquement la chaîne externe (change = 0).

Address Index

L’address index est le numéro séquentiel de l’adresse au sein d’une chaîne. Les wallets incrémentent ce compteur chaque fois qu’une nouvelle adresse est générée :

  • m/44'/0'/0'/0/0 — Première adresse de réception
  • m/44'/0'/0'/0/1 — Deuxième adresse de réception
  • m/44'/0'/0'/0/2 — Troisième adresse de réception
  • m/44'/0'/0'/1/0 — Première adresse de change
  • m/44'/0'/0'/1/1 — Deuxième adresse de change

Chemins de dérivation des principales cryptomonnaies

Bitcoin

Bitcoin utilise plusieurs chemins de dérivation correspondant à différents types d’adresses :

StandardCheminType d’adressePréfixeExemple
BIP-44m/44'/0'/0'Legacy (P2PKH)1...1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
BIP-49m/49'/0'/0'SegWit-compat (P2SH-P2WPKH)3...3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy
BIP-84m/84'/0'/0'Native SegWit (P2WPKH)bc1q...bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4
BIP-86m/86'/0'/0'Taproot (P2TR)bc1p...bc1p5d7rjq7g6rdk2yhzks9smlaqtedr4dekq08ge8ztwac72sfr9rusxg3297

Important pour la récupération : si vous restaurez une phrase de récupération dans un nouveau wallet et que vous ne voyez pas votre solde, le wallet scanne peut-être un chemin de dérivation différent de celui utilisé par votre wallet d’origine. Essayez d’alterner entre les types d’adresse Legacy, SegWit et Taproot, ou spécifiez manuellement le chemin de dérivation.

Ethereum

Ethereum utilise généralement un seul chemin de dérivation :

m/44'/60'/0'/0/0   — Premier compte
m/44'/60'/0'/0/1 — Deuxième compte (certains wallets)

Cependant, certains wallets (comme Ledger Live) dérivent plusieurs comptes au niveau account :

m/44'/60'/0'/0/0   — Compte 0
m/44'/60'/1'/0/0 — Compte 1
m/44'/60'/2'/0/0 — Compte 2

Alors que d’autres (comme MetaMask) incrémentent l’address index :

m/44'/60'/0'/0/0   — Compte 1
m/44'/60'/0'/0/1 — Compte 2
m/44'/60'/0'/0/2 — Compte 3

Cette incohérence peut créer de la confusion lors d’une récupération. Notez toujours quel logiciel wallet a créé votre phrase de récupération.

Solana

Solana utilise Ed25519 (une courbe elliptique différente de secp256k1) avec le chemin :

m/44'/501'/0'      — Phantom, Solflare
m/44'/501'/0'/0' — Certaines implémentations

Cardano

Cardano utilise un schéma de dérivation de clés différent (Ed25519-BIP32 / CIP-1852) avec le chemin :

m/1852'/1815'/0'/0/0  — Première adresse de paiement
m/1852'/1815'/0'/2/0 — Première clé de staking

Notez le champ purpose 1852' (CIP-1852, nommé d’après l’année de naissance d’Ada Lovelace) au lieu de 44'.

Dérivation durcie vs normale

Comprendre la différence entre dérivation durcie et normale est crucial pour la sécurité.

Dérivation normale (non durcie)

  • Utilise les index de 0 à 2^31 - 1.
  • Les clés publiques enfants peuvent être dérivées depuis la clé publique étendue parente sans la clé privée parente.
  • Avantage : permet les wallets en lecture seule (ex. un serveur peut générer de nouvelles adresses de réception avec seulement le xpub, sans jamais détenir de clés privées).
  • Risque : si un attaquant obtient à la fois une clé privée enfant ET la clé publique étendue parente, il peut calculer la clé privée parente et toutes les clés privées sœurs.

Dérivation durcie

  • Utilise les index de 2^31 à 2^32 - 1 (écrits comme 0' à 2^31 - 1').
  • Nécessite la clé privée étendue parente pour dériver les clés enfants.
  • Avantage : compromettre une clé enfant ne compromet pas le parent ni les sœurs.
  • Risque : impossible de dériver des clés publiques enfants depuis la seule clé publique étendue parente (pas de fonctionnalité lecture seule à ce niveau).

Pourquoi BIP-44 utilise une dérivation durcie pour les trois premiers niveaux

Purpose, coin type et account sont tous durcis (44'/0'/0') parce que :

  1. La compromission d’une clé privée d’adresse (au niveau non durci 5) ne doit pas compromettre le compte.
  2. Les comptes doivent être isolés les uns des autres.
  3. Les différents coins doivent être isolés les uns des autres.

Les niveaux change et address index sont non durcis (0/0) pour permettre aux wallets en lecture seule de générer des adresses de réception sans la clé privée maîtresse.

La gap limit

Les wallets ne scannent pas un nombre infini d’adresses. La spécification BIP-44 introduit le concept de « gap limit » — le nombre d’adresses inutilisées consécutives qu’un wallet scanne avant de s’arrêter. La gap limit standard est de 20.

Si vous avez généré les adresses 0 à 25, mais que seules les adresses 0, 5, 10 et 25 ont déjà reçu des fonds, le wallet va :

  1. Scanner l’adresse 0 — a des transactions, continuer.
  2. Scanner les adresses 1–4 — inutilisées, mais dans la gap limit.
  3. Scanner l’adresse 5 — a des transactions, réinitialiser le compteur de gap.
  4. Continuer jusqu’à rencontrer 20 adresses consécutives sans transaction.

Problème : si vous avez généré de nombreuses adresses au-delà de la gap limit (fréquent avec les processeurs de paiement marchands), une restauration de wallet peut ne pas retrouver tous vos fonds. Vous devrez peut-être augmenter la gap limit dans les paramètres du wallet pendant la récupération.

Outil SafeSeed

Utilisez le SafeSeed Key Derivation Tool pour explorer les chemins de dérivation BIP-44 de manière interactive. Entrez une phrase de récupération (utilisez une phrase de test, pas votre vraie) et voyez comment différents chemins de dérivation produisent différentes adresses pour différents coins. Tout le traitement se fait dans votre navigateur.

Clés étendues : xpub, ypub, zpub

Les clés étendues encodent le matériel de clé avec des métadonnées sur le chemin de dérivation :

PréfixeStandardType d’adresseRéseau
xpub / xprvBIP-44Legacy (P2PKH)Mainnet
ypub / yprvBIP-49SegWit-compat (P2SH-P2WPKH)Mainnet
zpub / zprvBIP-84Native SegWit (P2WPKH)Mainnet
tpub / tprvBIP-44Legacy (P2PKH)Testnet

Le préfixe indique au logiciel wallet quel type d’adresse dériver. Si vous exportez un xpub et l’importez dans un wallet qui attend un zpub, vous verrez des adresses différentes (incorrectes).

Avertissement de confidentialité sur les clés publiques étendues

Partager un xpub (ou ypub/zpub) permet au destinataire de :

  • Dériver toutes les adresses de réception passées et futures.
  • Suivre tout votre historique de transactions et votre solde.
  • Relier vos adresses entre elles, détruisant les bénéfices de confidentialité d’une nouvelle adresse par transaction.

Ne partagez jamais de clés publiques étendues, sauf avec des parties auxquelles vous faites entièrement confiance pour votre confidentialité financière (ex. votre comptable, un wallet en lecture seule sur votre propre serveur).

Problèmes courants de chemin de dérivation

« J’ai restauré ma phrase de récupération mais mon solde est à zéro »

C’est le problème de chemin de dérivation le plus courant. Causes possibles :

  1. Mauvais type d’adresse — Vous utilisiez des adresses SegWit (BIP-84, m/84'/0'/0') mais le nouveau wallet scanne les chemins Legacy (BIP-44, m/44'/0'/0'). Changez de type d’adresse.
  2. Mauvais coin type — Certains wallets utilisaient le coin type 0 pour tous les coins dans d’anciennes implémentations.
  3. Mauvais account — Vous avez peut-être utilisé le compte 1 ou supérieur.
  4. Gap limit — Vos adresses utilisées étaient au-delà de la gap limit par défaut de 20.
  5. Chemin de dérivation personnalisé — Certains wallets utilisent des chemins non standard.

« Mes deux wallets affichent des adresses différentes à partir de la même phrase de récupération »

Si deux wallets génèrent des adresses différentes à partir de la même phrase de récupération, ils utilisent des chemins de dérivation ou des types d’adresse différents. Vérifiez les paramètres de dérivation dans les deux wallets.

Checklist de récupération

Lors de la restauration d’un wallet à partir d’une phrase de récupération :

  1. Vérifiez que le wallet prend en charge BIP-39.
  2. Sélectionnez le bon type d’adresse (Legacy, SegWit ou Taproot).
  3. Vérifiez que le chemin de dérivation correspond au wallet d’origine.
  4. Augmentez la gap limit si vous avez utilisé beaucoup d’adresses.
  5. Vérifiez tous les comptes (pas seulement le compte 0) si vous avez créé plusieurs comptes.

Avancé : chemins de dérivation personnalisés

Certains cas d’usage avancés nécessitent des chemins de dérivation personnalisés :

  • Configurations multi-signatures — BIP-48 définit des chemins de dérivation pour les wallets multisig : m/48'/0'/0'/2' (pour multisig SegWit natif).
  • Lightning Network — Certaines implémentations Lightning utilisent des chemins de dérivation personnalisés pour les clés de canaux.
  • Wallets orientés confidentialité — Wasabi et d’autres wallets axés sur la confidentialité peuvent utiliser des chemins spécifiques.

Documentez toujours les chemins de dérivation que vous utilisez. Si vous ne pouvez pas reconstruire le chemin exact, vous ne pouvez pas récupérer les fonds.

FAQ

Qu’est-ce qu’un chemin de dérivation en cryptomonnaie ?

Un chemin de dérivation est une notation structurée qui indique comment dériver une clé ou une adresse particulière depuis une seed maîtresse dans un wallet déterministe hiérarchique (HD). Il suit le format m/purpose'/coin_type'/account'/change/address_index, où chaque niveau affine vers une clé spécifique de l’arbre de dérivation.

Pourquoi différentes cryptomonnaies utilisent-elles différents coin types ?

Des coin types différents garantissent que la même phrase de récupération produit des clés séparées et sans lien pour chaque blockchain. Cela évite les interférences accidentelles entre chaînes et garantit que la compromission de clés sur une chaîne n’affecte pas les clés d’une autre.

Puis-je utiliser la même phrase de récupération pour Bitcoin et Ethereum ?

Oui. La même phrase de récupération BIP-39 peut dériver des clés pour Bitcoin et Ethereum (et beaucoup d’autres cryptomonnaies). Elles utilisent des chemins de dérivation différents — Bitcoin en m/44'/0'/0' et Ethereum en m/44'/60'/0' — donc les clés et adresses dérivées sont totalement indépendantes.

Que signifie l’apostrophe (') dans les chemins de dérivation ?

L’apostrophe indique une dérivation durcie. La dérivation durcie nécessite la clé privée parente et offre une isolation de sécurité plus forte : compromettre une clé enfant ne révèle pas les clés parentes ni sœurs. Les niveaux non durcis (sans apostrophe) permettent la dérivation de clés publiques enfants à partir d’une clé publique parente.

Pourquoi mon wallet affiche-t-il un solde nul après restauration d’une phrase de récupération ?

La cause la plus fréquente est une incompatibilité de chemin de dérivation. Votre wallet d’origine utilisait peut-être un type d’adresse différent (Legacy vs SegWit vs Taproot), chacun utilisant un chemin de dérivation différent. Essayez de changer de type d’adresse dans le wallet de récupération, ou spécifiez manuellement le chemin de dérivation utilisé par votre wallet d’origine.

Qu’est-ce que la gap limit et pourquoi est-ce important ?

La gap limit est le nombre d’adresses inutilisées consécutives qu’un wallet scanne avant de supposer qu’aucune autre adresse n’a été utilisée. Le standard BIP-44 fixe cette valeur à 20. Si vous avez généré beaucoup d’adresses (par ex. pour un commerçant qui accepte des paiements), certaines adresses financées peuvent être au-delà de la gap limit et invisibles pendant la récupération. Augmentez la gap limit dans les paramètres du wallet pour les retrouver.

Tous les wallets utilisent-ils BIP-44 ?

La plupart des wallets modernes prennent en charge BIP-44 ou ses successeurs (BIP-49, BIP-84, BIP-86). Cependant, certains wallets utilisent des chemins de dérivation propriétaires. Electrum, par exemple, utilise son propre schéma mnémonique et de dérivation. Documentez toujours quel wallet a créé votre phrase de récupération et quels chemins de dérivation il utilise.

Guides associés