2. Fonctionnement d’un wallet


Introduction

Un wallet (porte-monnaie) est l’outil qui permet à n’importe qui d’émettre une transaction sur une blockchain.

C’est l’outil central pour interagir avec la blockchain et il répond à la problématique suivante :

Lorsque j’émets une transaction, comment puis-je prouver que je suis bien le détenteur des cryptomonnaies qui sont associés à l’adresse depuis laquelle je veux les envoyer ?
Aussi, comment faire pour éviter que quelqu’un d’autre puisse faire une transaction qui sortirait des cryptomonnaies de mon adresse ?

On aimerait, exactement comme un compte en banque, que seul le propriétaire du compte puisse sortir de l’argent depuis son compte.

Ce que c’est un wallet

Un wallet peut prendre plusieurs formes, des interfaces différentes pour l’utilisateur.
Il peut être 100% logiciel, souvent une extension de navigateur.
Il peut aussi être sous forme physique, souvent une sorte de clé usb avec un petit écran et des boutons.

Avant de nous intéresser à la manière dont est générée une transaction par un wallet il faut comprendre les informations qui sont nécessaires à la création d’une transaction.

Clé privée, clé publique et adresse

Avant toute chose, il est nécessaire de se créer un compte, on appelle ça couramment une adresse, sur son wallet.
Donc, lorsque je veux me créer une adresse pour faire des transactions sur une blockchain, voici ce qu’il se passe.

1. Génération de la clé privée

Mon wallet génère une clé privée, c’est une longue suite de caractères aléatoires. Ici rien de spécial.

On entend souvent qu’il ne faut jamais divulguer sa clé privée ! On va comprendre plus tard par la suite.

2. Dérivation de la clé publique

On aborde ici un sujet important pour la sécurité. La clé publique est dérivée de la clé privée.

C’est un type de dérivation qui fonctionne de sorte qu’il est facile de trouver la clé publique lorsqu’on connaît la clé privée. Par contre il est quasi impossible de faire le chemin inverse, c’est ce qui fait la force du système.
Pour dériver la clé publique de la clé privée, c’est généralement une fonction de hashage qui est utilisée.
Par « quasi impossible » il est entendu qu’il faudrait un temps presque infini de calcul pour retrouver la clé privée depuis la clé publique.

C’est une fonction à sens unique :

  • Clé privée → Clé publique : calcul rapide.
  • Clé publique → Clé privée : computationnellement infaisable (il faudrait des milliers d’années de calcul pour réussir à trouver)

3. Dérivation de l’adresse

Finalement, l’adresse est dérivée de la clé publique.

En synthèse, il y a existe trois éléments indispensables au bon fonctionnement d’un wallet. La clé privée qui doit rester absolument secrète, ainsi que la clé publique et l’adresse qui sont visibles de tout le monde.

Émission d’une transaction

De la création à la diffusion de la transaction il y plusieurs processus qui prennent place.

Création de la transaction

Je vais créer ma transaction avec les données importantes :

  • Adresse de débit (donne l’argent, c’est elle qui émet la transaction)
  • Montant
  • Adresse de crédit (reçoit l’argent)

Nous avons ici toutes les informations utiles à la transaction en elle-même. Le wallet met la transaction en forme pour qu’elle corresponde bien aux standards de la blockchain sur laquelle on veut faire la transaction.

Signature de la transaction

Voilà le deuxième concept phare. Pour le comprendre analysons ce qu’il se passe quand j’émets une transaction.

Après sa création, la transaction est signée grâce à la clé privée. Seule la clé privée associée à l’adresse de débit permet de générer une signature valide pour la transaction.
Le résultat de cette signature permet à n’importe qui de vérifier entre autres :

  • Qu’elle provient bien de la personne qui détient la clé privée
  • Que la transaction n’a pas été modifiée

Diffusion de la transaction

La transaction signée est finalement diffusée sur le réseau. C’est à ce moment qu’il est intéressant de pouvoir vérifier, grâce à la clé publique liée à une transaction, qu’elle a bien été signée par le détenteur de la clé privée.
Typiquement, comme on l’a vu dans le chapitre sur le fonctionnement d’une blockchain, les mineurs vérifient que notre transaction n’est pas falsifiée grâce à notre clé publique puis ajoutent la transaction à un bloc.

Utilité des clés

La clé privée a donc deux fonctions :

  • Générer la clé publique
  • Signer les transactions

La clé publique en a une :

  • Vérifier que la signature est valide, si c’est le cas, c’est que c’est bien le détenteur de la clé privée qui a signé la transaction.

Un wallet permet avant tout de :

  • Stocker
    • La clé privée
    • La clé publique
    • L’adresse
  • Signer des transactions grâce aux informations stockées

Petites remarques

Avant de m’intéresser au sujet, je pensais qu’un wallet stockait les cryptomonnaies mais on comprend bien que ce n’est pas le cas. Le wallet ne stocke que la clé privée. Il permet de générer une transaction, de la signer puis la diffuser sur le réseau.

Clé privée

On comprend maintenant l’importance de la clé privée. Qui connait la clé privée peut faire des transactions valide pour l’adresse qui y est associée.

Si je venais à découvrir la clé privée de big boss The Rock, je pourrais par exemple transférer tout leur avoir sur mon adresse et souvenez-vous, il n’y a pas de service client sur la blockchain, donc on ne peut pas annuler une transaction valide ! Avec tout cet argent j’irais ensuite volontiers faire un tour chez Audemars Piguet.

Types de wallet

Maintenant qu’on a compris l’utilité d’un wallet il me semble important de savoir qu’il en existe différentes sortes.

Hot wallet

Est connecté à Internet

Exemples : Metamask, Rabbit, Phantom
Avantages : Pratique et rapide
Inconvénients : Vulnérables aux hacks

Cold wallet

Hors ligne

Exemples : Ledger, Trezor
Avantages : Sécurité maximale
Inconvénients : Moins pratiques

Custodial wallet

Un tiers de confiance gère les clés

Exemples : Binance, Swissborg, Kraken…
Avantages : Simplicité, Récupération de l’accès aux fonds possible
Inconvénients : Risque dû à la dépendance à l’exchange

Non-custodial wallet

Tu gères les clés

Exemples : Metamask, Ledger
Avantages : Souveraineté totale
Inconvénients : La perte de la clé privée est définitive

Prenons trois petits exemples pour comprendre comment les clés sont gérées.

Une clé Ledger est un cold wallet, non-custodial. Lorsque je veux générer une transaction il faut que je connecte le Ledger à mon ordinateur. La transaction est générée directement sur le hardware du Ledger, c’est très pratique car si même si j’ai un virus sur mon ordinateur, celui-ci ne peut avoir aucune influence sur mon Ledger. C’est le moyen le plus sécurisé de détenir ses cryptomonnaies, à condition de ne pas perdre les identifiants

Un wallet Phantom est disponible comme application sur mobile et comme extension de navigateur. Dans tout les cas, c’est un hot-wallet (car directement connecté à internet) mais aussi non-custodial car c’est à l’utilisateur de gérer ses clés.

Pour finir, un compte sur Swissborg est un custodial wallet. En fait, on se connecte à son compte de façon plus traditionnelle avec un email et un mot de passe. Par contre on ne contrôle pas directement nos clés, dans ce cas elles sont stockées sur les serveurs de Swissborg.

Seed phrase

Dernier concept. Vous endenterez parler de seed phrase lorsque vous chercherez des infos sur les wallets. Ce n’est rien d’autre qu’une phrase de généralement 24 mots qui peut être traduite dans le format officiel de la clé privée. Elle est très utile car le format d’une clé privée est compliqué à lire.

Exemple d’une clé privée : 5KzXfBw7uK8GkQ4xZ1mGzN2iXbM9rM8K9nFvM4Q5gY7kZ8pW9aD2tM3v

Exemple d’une seed phrase :

“Hotel, avocado, fragile, agent, jealous, bottle, all, gaget, lesson, before, after, nobody, …”

Il est très facile de passer de l’un à l’autre, tous les wallets ont un code qui permet de le faire. Lors de la création d’une adresse avec un wallet, le wallet ne va donc pas vous montrer la clé privée mais la seed phrase. Cela évite les erreurs lorsque l’on veut recopier le texte en l’écrivant par exemple.

La seed phrase est une représentation de la clé privée dans un format plus facilement lisible pour l’utilisateur.

Disclaimer

L’article du jour essaye d’expliquer le principe de fonctionnement d’un wallet et n’est surtout pas un tutoriel sur le fait d’en utiliser un. Il est primordial de regarder des tutoriels sur la bonne gestion d’un wallet avant d’y ajouter des fonds !

Conclusion

On aura donc compris ce que sont les clés privées, publiques et que l’adresse est générée depuis cette dernière.

Il faut absolument retenir que la clé privée est la clé de voûte du système. Celui qui la connaît peut signer n’importe quelle transaction pour l’adresse concernée sur la blockchain. Il est donc primordial d’en être le seul détenteur et de ne la divulguer à personne !

Le type de wallet qu’on utilise dépend des sacrifices qu’on est prêt à faire, encore une fois, il est très utile de s’informer à travers des tutoriels si on souhaite gérer son wallet.


Être informé des dernières publications par mail

Email

The form has been submitted successfully!
There has been some error while submitting the form. Please verify all form fields again.

Commentaires

S’abonner
Notification pour
guest
0 Commentaires
Le plus ancien
Le plus récent
Commentaires en ligne
Afficher tous les commentaires