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 ?

blockchain : Comprendre une restauration de portefeuille

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:

  • ?
  • Toucher une API ? Si c’est le cas, comment? Est-ce qu’il envoie ma graine à l’API ? Quelle API ? Trezor maintient-il une sorte d’index des xpubs par graine ? Je ne pense pas que ce serait sécurisé du tout, et en fait annulerait complètement la sécurité du système
  • Existe-t-il une sorte de clé publique cachée dans ma graine qui peut être utilisée pour rechercher des adresses indexées ? Si oui, comment ça marche ? Existe-t-il une bibliothèque C# quelque part que je peux utiliser pour extraire cette clé publique de ma graine ?
  • Faire autre chose à laquelle je n’ai pas pensé. Quoi ?
  • Edit : je suis en train de lire ceci.//www./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 ?