Après avoir exploré comment le hashing crypto, la création des clés privées, publiques et des signatures, découvrez comment sont créées les adresses Bitcoin.
Les adresses Bitcoin, comment cela fonctionne ?
Maintenant que nous en savons plus sur le hashing crypto et la création de clés privées et clés publiques, concentrons-nous sur la création et l’utilisation des adresses.
Tout d’abord, avant de comprendre le fonctionnement des adresses, il est important de rappeler où nous en sommes. Désormais, nous avons un hashing par la fonction SHA256 qui nous donne une donnée, une suite de nombres.
Cependant, cette suite de chiffres est encore longue. Et non seulement elle utilise beaucoup d’espace de stockage, elle permet aussi par la même occasion de favoriser ce que l’on appelle le burn de jetons.
Le burn consiste à envoyer des cryptos dans “le néant” c’est-à-dire vers une mauvaise adresse. Les jetons sont donc perdus à jamais dans la blockchain. C’est pourquoi plus l’adresse est longue, plus l’utilisateur a de chance de se tromper et donc de perdre à jamais ses fonds.
C’est pourquoi Satoshi Nakamoto a introduit non pas une, mais deux fonctions de hashing pour permettre de raccourcir cette data. Après que la clé publique est obtenue par hashing en SHA256, elle est ensuite hashée une seconde fois par la fonction RIPEMD160, une fonction qui génère un nombre de 160 bits (20 octets). Cette clé publique hashée est alors appelée PKH.
Cette étape permet donc d’avoir le parfait compromis entre taille et sécurité, car le PKH n’est qu’une version raccourcie de la clé publique.
A titre d’informations, RIPEMD160 a été développé par une université européenne en collaboration avec une communauté crypto. Tandis que SHA256 a été développé par la NSA. Même si les deux sont sécurisées et vérifiées par de nombreux utilisateurs, l’implication de la NSA dans le Bitcoin a fait émerger de nombreux débats et suspicions.
Mais une fois le PKH créé, il existe encore une dernière étape pour rendre le processus encore plus simple pour l’utilisateur. En effet, une nouvelle étape s’est ajoutée avec l’encodage Base58.
Encodage Base58 pour obtenir son adresse
Même si Base64 est un encodage connu et très répandu, le Bitcoin utilise l’encodage Base58. Alors pourquoi ? Tout simplement parce que le Base58 permet d’obtenir des adresses beaucoup plus lisibles en se séparant de tous symboles compliqués comme les + ou les /. Le Base58 permet donc d’éviter les erreurs de frappes et réduit donc encore plus les risques de pertes de fonds.
Dans le Base64, le caractère A représente les bits 000000, B représente 000001 et le caractère / représente 111111. Pour Base58, il n’existe que les 58 caractères alphanumériques pour éviter les erreurs de lecture également.
En effet, l’encodage Base58 rend le PKH beaucoup plus lisible pour un humain. Cela permet donc de vérifier l’adresse beaucoup plus facilement.
Mais ce n’est pas tout, l’encodage Base58 comprend aussi une étape appelée checksum. En somme, l’adresse encodée en Base58 est passée sous un checksum et la partie restante, une “nouvelle version de PKH”, est utilisée pour recalculer une checksum. Les deux checksum (celle supprimée et celle recalculée) sont ensuite comparées pour voir si elles correspondent bien.
L’erreur de cette étape de checksum est possible sur une chance d’environ 1 sur 4,3 milliards, ce qui la rend presque totalement fiable.
Ce checksum intégré aux adresses est donc potentiellement le plus gros avantage des adresses par rapport aux PKH, puisqu’ils permettent de détecter automatiquement les erreurs de frappes et d’input.
Il est également bon de noter qu’autant d’adresses que nous le souhaitons peuvent être créées. En effet, une adresse peut être créée à partir d’une PKH, et une PKH peut être obtenue à partir d’une adresse. A l’inverse, il est impossible de retrouver une clé privée à partir d’une PKH ou d’une clé publique.
Malgré tout, l’avantage des adresses est de justement faciliter le processus en ayant une seule adresse à communiquer afin de recevoir des fonds.
De plus, les adresses ne sont pas uniquement des hashing de clés publiques, mais plus précisément du locking script d’un output. Comme vu précédemment, un lock est créé, là où est notamment déposée la clé publique et les instructions de transactions.
L’adresse est donc plus comme une instruction sur le type et le contenu du script du lock de l’output.
Pour faire simple, une adresse est créée grâce à plusieurs étapes :
- deux fonctions de hashing SHA256 et RIPEMD160 interviennent sur le locking script pour obtenir une public key hash PKH.
- Encodage Base58 pour obtenir une adresse plus courte et plus lisible
- Checksum intégré pour éviter les envoie vers de mauvaises adresses.
En résumé, la création d’adresse permet d’obtenir trois bénéfices majeurs :
- La détection d’erreur : grâce à la fonction checksum, l’adresse est validée et jugée par celle-ci.
- Plus facile d’utilisation : n’utilisant aucun caractère compliqué et ayant une taille encore plus réduite, l’adresse est beaucoup plus simple d’utilisation qu’une PKH. Elle est donc plus commode à partager et rend l’utilisation du Bitcoin et des cryptos plus user-friendly.
- Plus lisible : grâce aux 58 caractères de Base58, elle est plus facilement lisible par un humain et rend donc la vérification moins contraignante.
Sur le même sujet :