Aller au contenu
buybitcoinsmart

Glossaire / Adresses et clés

Dérivation BIP-84

Qu'est-ce que la dérivation BIP-84 ?
La dérivation BIP-84 est le schéma qui fixe le niveau purpose d'un chemin BIP-32 à 84', de sorte qu'une phrase de récupération produit des adresses bc1q SegWit natives via l'encapsulation P2WPKH du BIP-141.

Spécifié dans BIP-84.

BIP-84 réutilise la structure à cinq niveaux du BIP-44 et ne change que la valeur purpose. Il a été attribué le 28 décembre 2017 et associe chaque compte à une clé étendue zpub dont les octets de version sont 0x04b24746. Pour vous, il détermine si une phrase de récupération restaurée retrouve votre solde bc1q ou signale un portefeuille vide.

Comment cela fonctionne

BIP-84 fait deux choses, et la première est de figer un nombre dans un chemin. Les clés découlent du squelette introduit par le BIP-44, écrit m / purpose' / coin_type' / account' / change / address_index, et le seul niveau que cette spécification revendique est le purpose, fixé à 84'. Le type de coin, le compte, le change et l'index d'adresse gardent le sens que le BIP-44 et le BIP-49 leur ont déjà donné, et l'auteur, Pavol Rusnak, réutilise explicitement la justification du BIP-49 plutôt que de la reformuler.

La seconde est le format de sortie. BIP-84 emprunte l'encapsulation au BIP-141 : le scriptPubKey est 0x0014 suivi du hachage de 20 octets de la clé publique, le scriptSig reste vide, et le witness porte la signature puis la clé. Rien dans cette sortie n'indique quelle valeur purpose l'a produite.

Les clés étendues de la branche ont leurs propres octets de version. Les clés publiques utilisent 0x04b24746, qui s'affiche zpub, les clés privées utilisent 0x04b2430c pour zprv, et le testnet utilise 0x045f1cf6 et 0x045f18bc pour vpub et vprv. Ces valeurs ne sont pas propres au bitcoin. SLIP-0132, le registre qui les recense, liste Groestlcoin et Syscoin sous le même 0x04b24746, car le format de sérialisation ne comporte aucun champ pour le type de coin, de sorte qu'un zpub vous indique le type de script et rien sur la chaîne à laquelle il appartient.

La spécification se décrit elle-même comme « not backwards compatible by design » et indique qu'un portefeuille incompatible « will not discover accounts at all ». C'est délibéré. Une valeur purpose distincte tient à l'écart d'un compte le logiciel écrit avant SegWit, qu'il gérerait mal, et un solde qui affiche zéro est un échec préférable à un portefeuille qui restaure à moitié en silence.

Où le voir

BIP-84 apparaît à trois endroits que votre portefeuille affiche déjà : le chemin de compte m/84'/0'/0', une clé étendue commençant par zpub, et des adresses de réception commençant par bc1q. SLIP-0132 associe cette ligne zpub pour le bitcoin au chemin m/84'/0', ce qui est l'association qu'une application affirme lorsqu'elle vous en remet une. Sparrow, noté 4,7 dans notre avis, prend en charge les portefeuilles à signature unique et multisignature sur les types de script courants, de sorte que le compte que vous ouvrez est celui que vous avez choisi et non un compte par défaut hérité.

La partie du document qu'il vaut la peine de reprendre est son bloc de vecteurs de test, qui transforme la question « ce portefeuille implémente-t-il le BIP-84 comme tous les autres » en une vérification qui prend une minute. Le BIP publie les résultats pour la phrase mnémonique « abandon » répétée onze fois puis « about » :

  • m/84'/0'/0'/0/0 donne bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu
  • m/84'/0'/0'/0/1 donne bc1qnjg0jd8228aq7egyzacy8cys3knf9xvrerkf9g
  • m/84'/0'/0'/1/0 donne bc1q8c6fshw2dlwun7ekn9qwf37cu2rn755upcp6el

Chargez cette phrase dans un logiciel inconnu sur une machine qui ne contient aucun bitcoin, choisissez SegWit natif, et comparez la première adresse de réception et la première adresse de change à ces chaînes. Si les deux correspondent, l'implémentation est d'accord avec la norme aussi sur la branche de change, ce que les gens oublient de vérifier. N'envoyez jamais rien à ces adresses : le BIP publie les clés privées correspondantes et SLIP-0132 publie la même phrase mnémonique, donc quiconque lit l'un ou l'autre document peut dépenser ce qui y arrive.

Dérivation BIP-84 vs P2WPKH

La dérivation BIP-84 dit d'où vient une clé, et P2WPKH dit comment les bitcoins sont verrouillés. Seul le second relève du consensus. Un portefeuille pourrait dériver une clé selon un chemin sans aucun 84', verrouiller la sortie avec le même motif 0x0014, et l'adresse bc1q obtenue serait indistinguable de la vôtre sur la chaîne. Ainsi, « une adresse BIP-84 » est un raccourci plutôt qu'une affirmation qu'un explorateur peut trancher, et la valeur purpose est une chose que vous notez dans une sauvegarde, car vous ne pourrez pas la relire sur la blockchain plus tard.

À ne pas confondre avec

Questions fréquentes

Quelle est la différence entre le BIP-84 et le BIP-49 ?

Le niveau purpose, et avec lui le format d'adresse. Le BIP-84 utilise 84' et produit des adresses bc1q SegWit natives sous une clé étendue zpub, tandis que le BIP-49, attribué le 19 mai 2016, utilise 49' et produit des adresses P2WPKH imbriquées dans P2SH sous un ypub. Une même phrase de récupération peut porter les deux comptes en même temps.

Un préfixe zpub prouve-t-il que je regarde un portefeuille bitcoin ?

Non. SLIP-0132 enregistre les mêmes octets de version, 0x04b24746, pour Groestlcoin et Syscoin ainsi que pour le bitcoin, car le format de clé étendue ne comporte aucun champ pour le type de coin. Le préfixe vous indique que le type de script est P2WPKH et rien sur la chaîne.

Dois-je noter m/84'/0'/0' avec ma sauvegarde ?

Notez-le à côté du nom du portefeuille, oui. Le chemin n'est pas secret et ne révèle rien en lui-même, mais un logiciel qui restaure les mêmes mots sur un niveau purpose différent dérive un ensemble d'adresses différent et affiche un portefeuille vide.

À lire ensuite

Termes associés

Plus de termes : Adresses et clés

Lire cette page en anglais