blockchain : Comprendre une restauration de portefeuille
Ceci est mon premier article sur la programmation liée à la chaîne de blocs, veuillez donc excuser mon ignorance. Je trouve la terminologie dans les spécifications BIP32 et BIP39 difficile à comprendre, alors j’essaie de confirmer ma compréhension ici. J’espère que quelqu’un pourra m’éclaircir les choses. Veuillez me corriger si ma compréhension est incorrecte. Voici.
J’ai acheté un Trezor et généré ma graine à l’aide du Trezor. Je comprends qu’il s’agit d’une implémentation de BIP39. Je crois comprendre que si je n’utilisais pas Trezor, je pourrais générer cette clé sur un ordinateur hors ligne comme Tails Linux ou Bitkey.IO Live CD. Je crois comprendre que cela sert de clé pour la signature de transactions à l’avenir. Mais, cela ne crée pas en soi d’adresses dans la chaîne de blocs elle-même.
Après avoir créé la clé, j’ai généré quelques adresses. Un pour Bitcoin, un pour Litecoin et ainsi de suite. Encore une fois, la simple création d’adresses n’affecte en aucune façon la chaîne de blocs. La seule chose qui est spéciale à propos de ces adresses est que la seule façon de créer ces adresses est d’avoir la graine en premier lieu. Cette compréhension est-elle correcte ?
Après ce point, la devise peut être envoyée aux adresses que j’ai créées. Cela signifie que le réseau de chaînes de blocs doit accepter que les transactions ont été effectuées, puis les transactions seront synchronisées sur tous les autres nœuds du réseau qui seront éventuellement visibles par moi lorsque je vérifierai l’adresse sur le logiciel de mon Trezor.
C’est là que ma compréhension devient un peu trouble. Il existe également quelque chose appelé une clé publique (xpub), et celles-ci peuvent être utilisées pour afficher les détails de mon portefeuille et de ses transactions, je pense. De plus, toute personne disposant de l’adresse de mon portefeuille peut y voir les transactions en interrogeant la chaîne de blocs.
Mais, sans la graine, personne ne peut transférer de pièces hors de mes adresses. La graine est nécessaire pour signer les transactions pour cela. Est-ce correct?
Maintenant, disons que mon Trezor est perdu ou détruit et qu’il ne me reste que la graine. Donc, j’achète un nouveau Trezor et je le branche. Je vais maintenant vouloir faire une restauration. Donc, je suppose que ce sera comme moi pour la phrase de 24 mots. Droit?
À ce stade, que se passe-t-il ? Je n’ai plus d’adresses ou de XPUB écrits, et j’en aurai besoin pour voir mes soldes avant de pouvoir signer à nouveau des transactions. Alors, comment le logiciel Trezor (ou un autre logiciel de portefeuille déterministe) récupère-t-il mon xpub et mes adresses ?
Est-ce qu’ils:
Edit : je suis en train de lire ceci. https://www.codeproject.com/Articles/784519/NBitcoin-How-to-scan-the-Blockchain. Il semble que la classe Scanner utilise la logique BIP37 pour filtrer les données de la chaîne de blocs afin d’accéder aux adresses susceptibles de contenir les transactions que j’ai besoin de voir. Alors, de quelles entrées a-t-il besoin pour le faire ? Puis-je dériver quelque chose de ma graine qui peut être utilisé en toute sécurité sur une API ?
De la maîtrise du Bitcoin :
Génération d’une clé publique À partir d’une clé privée sous la forme d’un
nombre k généré aléatoirement, on le multiplie par un point prédéterminé
sur la courbe appelée point générateur G pour produire un autre point
ailleurs sur la courbe, qui est la clé publique correspondante K.
Le point générateur est spécifié dans le cadre de la norme secp256k1
et est toujours le même pour toutes les clés en bitcoin.K=k*G68
où k est la clé privée, G est le point générateur et K est le
clé publique résultante, un point sur la courbe. Depuis le point générateur
est toujours la même pour tous les utilisateurs de bitcoin, une clé privée k multipliée
avec G résultera toujours en la même clé publique K. La relation
entre k et K est fixe, mais ne peut être calculé que dans un sens,
de k à K. C’est pourquoi une adresse bitcoin (dérivée de K) peut être
partagé avec qui que ce soit et ne révèle pas la clé privée de l’utilisateur (k).
Alors, cela signifie-t-il qu’en fait ma graine contient en fait une clé publique ? Et cette clé c’est le xpub ? Donc, en d’autres termes, est-il possible de générer un xpub à partir de la graine ? Est-ce correct?
Pour résumer la question :
Compte tenu de ma graine, comment le Trezor ou un autre portefeuille récupère-t-il toutes les adresses, xpubs, clés publiques, transactions, soldes, etc. associés, dérivés de la graine ?