Un portefeuille logiciel utilise un nombre aléatoire pour générer une clé privée principale.
Ensuite, grâce à un algorithme déterministe et irréversible, il peut dériver un nombre illimité de clés privées enfants à partir de cette clé privée principale.
Pourquoi avons-nous besoin d’un algorithme déterministe et irréversible ?
Parce que déterministe signifie que toutes les clés privées enfants peuvent toujours être générées à partir de la même clé privée principale, tandis que irréversible signifie que la clé privée principale ne peut pas être reconstruite à partir d'une clé privée enfant.
C'est pourquoi on l'appelle un portefeuille hiérarchique déterministe (HD). La structure de dérivation des clés privées ressemble à un arbre : une clé parent peut dériver plusieurs clés enfants, chaque clé enfant peut dériver plusieurs clés petits-enfants, et ce processus peut se poursuivre indéfiniment.
Lorsqu'un portefeuille HD est créé pour la première fois ou lorsqu'un portefeuille est sauvegardé, une phrase mnémonique est générée. Une phrase mnémonique est une séquence de mots anglais. Cette séquence est utilisée pour générer la seed, et la graine est ensuite utilisée pour générer toutes les clés privées du portefeuille. En d’autres termes, la phrase mnémonique sert de sauvegarde du portefeuille, car elle peut être utilisée pour restaurer le portefeuille. La graine, à son tour, correspond au nombre aléatoire d'origine derrière le portefeuille déterministe.
L'un des avantages majeurs d'un portefeuille HD est que seule la clé publique principale est requise pour générer un nombre quelconque de clés publiques enfants. En d'autres termes, de nouvelles adresses publiques peuvent être créées à partir de la clé publique principale sans nécessiter d'accès aux clés privées, qu'il s'agisse de la clé privée principale ou des clés privées enfants. Cependant, toutes ces adresses générées peuvent toujours être contrôlées par la clé privée principale.
Bien entendu, cette conception comporte également des risques. Si la phrase mnémonique est exposée, cela équivaut essentiellement à exposer toutes les clés privées. Une fois que cela se produit, la sécurité des actifs numériques du portefeuille est effectivement perdue.
Pourquoi tant de clés privées sont-elles nécessaires ?
La raison pour laquelle les utilisateurs ont besoin d'autant de clés privées peut être comprise grâce au mécanisme de changement dans les transactions Bitcoin.
Une transaction Bitcoin est une structure de données qui contient des entrées et des sorties. Il comprend également les informations de script nécessaires qui transfèrent la valeur de sa source (l'entrée) à sa destination (la sortie).
Pour comprendre les entrées et sorties Bitcoin, il est important de connaître le concept de UTXO (Unspent Transaction Output). Un UTXO est l’unité de base d’une transaction Bitcoin et représente un résultat de transaction non dépensé. Un seul bitcoin est en fait distribué sur de nombreuses transactions et de nombreux blocs sous la forme d'UTXO. En réalité, il n’existe pas d’enregistrement centralisé stockant un simple solde de compte ; au lieu de cela, il n’existe que des UTXO décentralisés verrouillés sur leurs propriétaires respectifs.
Un UTXO peut représenter n’importe quelle quantité de valeur, mais une fois créé, il est indivisible de la même manière qu’une pièce physique ne peut pas être divisée en deux. Si la valeur d'un UTXO est supérieure au montant nécessaire à une transaction, la totalité de l'UTXO doit quand même être dépensée et l'excédent sera restitué sous forme de monnaie.
Par exemple, imaginez que vous possédez un UTXO valant 20 unités et que vous souhaitiez payer 1 unité. La transaction doit consommer la totalité de l'UTXO de 20 unités et créer deux sorties : une sortie envoie 1 unité au destinataire, tandis que l'autre renvoie 19 unités à votre portefeuille en guise de monnaie. En ce sens, la plupart des transactions Bitcoin génèrent du changement.
Cela nous amène à une autre question : la modification doit-elle être renvoyée à l'adresse d'origine ou à une adresse nouvellement générée ?
Lorsque Satoshi Nakamoto a conçu Bitcoin, un mécanisme de changement d'adresse a été utilisé, ce qui signifie qu'une nouvelle adresse est souvent créée pour recevoir le changement de chaque transaction. L’avantage de cette conception est qu’elle contribue à protéger la confidentialité des utilisateurs et réduit certains risques de sécurité.
Dans la vraie vie, cela peut être comparé à l’ouverture de plusieurs comptes bancaires sous différents noms et identités dans différentes banques. Même si quelqu’un peut observer le flux d’argent sur chaque compte, il devient beaucoup plus difficile pour lui de tout retracer jusqu’au véritable propriétaire des actifs numériques. Cela fait partie de ce qui donne à Bitcoin son relatif anonymat.
C'est pourquoi les utilisateurs de portefeuilles ont besoin de tant de clés privées. Étant donné que les clés publiques et les clés privées existent toujours par paires et que chaque transaction peut générer une nouvelle adresse de changement, stocker et sauvegarder les clés privées correspondant à toutes ces adresses deviendrait autrement un défi technique majeur. Le portefeuille HD résout ce problème en permettant à une seule racine de générer un nombre illimité de clés publiques enfants et de clés privées enfants, améliorant ainsi considérablement la convivialité des portefeuilles numériques.
