Bitcoin est le premier système de paiement électronique décentralisé. Ce réseau permet d’effectuer des transferts de bitcoins entre individus, sans tiers de confiance. Ça veut dire qu’on n’a plus besoin d’une banque !
Comment Bitcoin peut remplacer une banque dans son travail de vérification, de sécurisation et de validation des transactions ? Dans son réseau, des mineurs utilisent le mécanisme de preuve de travail (ou de proof-of-work) pour réaliser des transferts de bitcoins entre deux parties.
Depuis plusieurs semaines, je veux faire des recherches sur ces technologies derrière Bitcoin. J’ai envie de comprendre comment fonctionne ce réseau et pourquoi c’est (apparemment) révolutionnaire. Sauf que je procrastine. Chaque fois que je me lance, je tombe sur des termes que je ne comprends pas vraiment : proof-of-work, mineurs, fonction de hachage, arbre de merkle, facteur de difficulté, etc. 🤯
Les explications que je regarde ne sont pas toujours très accessibles. Et je n’ai trouvé aucun contenu qui présente simplement ces notions et fait le lien entre elles. Du coup, j’ai décidé d’écrire l’article sur lequel j’aurais aimé tomber. Et ça m’a carrément motivée dans mes recherches.
Dans ce premier guide, on décrypte le concept de minage de cryptomonnaie en prenant l’exemple de Bitcoin. Pour accompagner mes propos, j’ai interrogé Loïc Morel, un spécialiste en stratégie de sécurisation de bitcoins. Bonne lecture. 🦋
Avant de découvrir le fonctionnement du minage de bitcoins, je propose de comprendre pourquoi des personnes ont décidé de mettre en place ce système. Pour répondre à cette interrogation, on va observer le rôle d’une banque en partant d’un exemple très simple.
Julie veut envoyer 100 € à Matthieu.
Elle peut le payer en liquide ou lui faire un virement. Quelle que soit la solution choisie, Julie doit passer par sa banque pour confirmer son retrait ou son transfert d’argent d’un montant de 100 €.
La banque se place comme un intermédiaire centralisé de confiance pour faciliter et sécuriser l’échange de monnaies entre Julie et Matthieu. Elle vérifie que Julie dispose des fonds suffisants sur son compte bancaire. Et dans le cas du virement, elle assure la transaction vers le compte de Matthieu.
Sauf que parfois la confiance apportée par les banques est défaillante. 😰
Par exemple, la crise des subprimes aux États-Unis, en 2008. Elle se caractérise par la difficulté des ménages américains à rembourser leur prêt immobilier après la hausse du taux d’intérêt de leurs emprunts. Des habitations sont saisies et vendues aux enchères. La chute de l’immobilier entraîne celle des institutions financières du pays, notamment la banque Lehman Brothers.
Cette grave crise économique s’est étendue au reste du monde. Des millions de personnes ont perdu leurs économies, tandis que les gouvernements sont intervenus massivement pour sauver le système bancaire.
Autre problématique majeure rencontrée dans la finance traditionnelle : les banques peuvent exercer un droit de censure sur les transactions financières.
Par exemple, le Crédit Agricole Atlantique Vendée avait refusé une demande de virement de 15 000 euros vers la plateforme d’échanges de cryptomonnaies Kraken. La banque s’est justifiée de “préserver les intérêts de (ses) clients”.
Une banque peut décider à notre place ce qu’on fait de notre argent. Et ce comportement n’est pas nouveau. 🫠
Depuis plusieurs années, des personnes montrent leur désaccord avec ce système monétaire défaillant et contrôlé par des élites financières. En 2008, une alternative est proposée : Bitcoin.
31 octobre 2008. Satoshi Nakamoto partage un document intitulé « Bitcoin : un système de paiement électronique pair-à-pair ». Dans ce white paper, il présente Bitcoin, comme un réseau électronique permettant d’effectuer des transactions entre individus, sans intermédiaire. Par exemple, les banques.
Si l’invention de Nakamoto est révélée pendant la crise des subprimes, elle ne constitue pas une réponse à cet événement. Derrière sa création se cachent des années de lutte pour les libertés individuelles numériques et de recherches sur les technologies cryptographiques.
Pour découvrir l’histoire palpitante de la première cryptomonnaie, je t’invite à lire ma première enquête intitulée Bitcoin : l’invention d’un contre-pouvoir.
En plus d’être le fruit d’années de recherches et de combat, Bitcoin n’est pas la première tentative de monnaie décentralisée. Par exemple, l’eCash introduit en 1994 par un certain David L. Chaum (je t’explique qui est ce monsieur dans l’article juste au-dessus 👆). Néanmoins, ces premiers systèmes de paiement numérique décentralisés n’ont pas simultanément réussi à :
Bitcoin est le premier a y parvenir.
Comment est-ce que ce système de paiement électronique décentralisé peut-il fonctionner ? On décrypte tout ça dans la prochaine partie !
Le minage correspond au travail de vérification, de sécurisation et de validation des transactions sur le réseau d’une cryptomonnaie. Ici on va prendre l’exemple de Bitcoin pour tenter de comprendre comment fonctionne ce système. Cette partie est super intéressante, mais on utilise plein de termes techniques. 🥲
J’ai essayé de faire des schémas et des tableaux propres et simples pour clarifier au maximum mes explications. C’est ce qui m’a personnellement le plus aidé à déchiffrer toutes ces technologies cryptographiques.
C’est quoi des technologies cryptographiques ? La cryptographie désigne le chiffrement des messages à l’aide de clés secrètes. L’histoire de la cryptographie commence avec le code de César, pendant l’Antiquité.
Jules César et ses légionnaires utilisaient un code cryptographique pour sécuriser leurs communications. Si des ennemis interceptaient des messages sensibles, ils n’étaient alors pas capables de les déchiffrer. 🔎
Le code de César se basait sur un chiffrement par décalage de l’alphabet, où chaque lettre était décalée de 3 rang, vers la droite. A devient D. B devient E. Etc. En suivant ce principe, le mot “Bitcoin” devient “Elwfrlq”.
B | I | T | C | O | I | N |
E | L | W | F | R | L | Q |
L’étymologie du mot « cryptomonnaie » fait référence à la cryptographie. Ce sont des monnaies qui utilisent des technologies cryptographiques dans le but de sécuriser leur réseau (mais pas seulement).
Avant de parler des transactions de cryptomonnaie, on doit se familiariser avec une première technologie cryptographique : la fonction de hachage.
Une fonction de hachage transforme un message de taille arbitraire en une suite de caractères de taille fixe, appelé un hash. Chaque hash est unique et permet d’identifier le message initial.
Message de taille arbitraire | Fonction de hachage | Hash de 14 caractères |
blockchain | ➡️ | 2ef4c8967fa1d8 |
La blockchain Bitcoin | ➡️ | b43cca7f78c2a6 |
La blockchain Bitcoin a été créé par Satoshi Nakamoto | ➡️ | 67b32fad6ee4a1 |
En faisant mes recherches, il m’a semblé que les fonctions de hachage jouaient de nombreux rôles et intervenaient à différents endroits du réseau Bitcoin. J’ai préféré demander l’avis de Loïc quant à leur utilité. Il m’a répondu que les fonctions de hachage sont utilisées dans :
Si tu ne comprends pas tous ces termes, t’inquiètes moi non plus. 😅 Mais, on peut surtout retenir que les fonctions de hachage sont utiles pour plein de choses différentes. Et plus loin dans l’article, on reviendra sur la preuve de travail et l’arbre de Merkle.
Maintenant, on associe la fonction de hachage et le hash avec la notion de bloc. Un bloc se divise en deux parties : un entête (ou un header) et une liste des transactions effectuées.
L’entête d’un bloc se compose de plusieurs éléments. Pour le moment, on en retient trois (on ajoutera les autres au fur et à mesure) :
Ces éléments sont hachés dans le but d’obtenir un message chiffré de taille fixe. Autrement dit, ils passent dans une fonction de hachage cryptographique. Bitcoin utilise une fonction de hachage SHA-256, avec un hash de 64 caractères. Loïc me précise que les éléments de l’entête des blocs passent deux fois dans cette fonction.
Une fonction de hachage définit préalablement les règles de validation des blocs. Par exemple, on décide que pour valider un bloc, il faut que son hash commence par 4 fois le caractère 0. Visuellement, ça donne ça :
Bloc | Fonction de hachage | Hash de 64 caractères |
Numéro #18 Nonce 75203 → valeur modifiable Message La blockchain Bitcoin a été créé par Satoshi Nakamoto | ➡️ | 00002fad6ee4a12fad6ee4a12fad6ee4a12fad6ee4a12fad6ee4a12fad6ee4a1 |
Le numéro du bloc et son message ne peuvent pas être modifiés pour calculer le hash. Ainsi, pour le valider, il faut trouver la bonne valeur du nonce. On peut tester des chiffres aléatoirement. 1. Puis, 2. Puis, 3. Etc. Sauf que le résultat du nonce peut être 7 comme 139 000. Et faire 139 000 tests, c’est long. 🤯
La fonction de hachage est à sens unique. Du coup, il est impossible de prédire le nonce qui permettra de valider le bloc.
Pour accélérer ce processus de validation, on parle de minage des blocs par un mécanisme de proof-of work (ou preuve de travail). Des ordinateurs spécialisés vont miner un bloc, c’est-à-dire :
Comme on peut le voir, le minage ne propose pas des calculs complexes, mais plutôt fastidieux, où les machines doivent résoudre le problème en tâtonnant. Ces ordinateurs s’appellent des ASICs (comme sur l’image en-dessous). Ils sont utiles que pour le minage. Le travail qu’il effectue demande des ressources importantes en électricité, plaçant les cryptomonnaies au cœur de débats environnementaux houleux.
PHOTO D'UN ORDINATEUR DE MINAGE
Pourquoi on parle de minage de cryptomonnaie ? Le terme minage fait référence aux travailleurs dans les mines qui allaient extraire de l’or. Car comme l’or, la quantité de bitcoins est limitée. Elle ne dépassera jamais les 21 millions.
Tu te doutes que les mineurs ne font pas ça bénévolement. En plus, le minage de bitcoins demande une importante consommation d’électricité, ce qui est très coûteux. Non seulement les participants veulent compenser ces dépenses, mais ils veulent aussi dégager des bénéfices.
Comment sont-ils rémunérés ? Pour la validation d’un bloc, les participants du réseau perçoivent une récompense. Elle se compose de :
On passe au fonctionnement de la blockchain.
C’est une chaîne de blocs validés par ordre chronologique. Autrement dit, la blockchain rassemble l’historique de tous les blocs validés sur un réseau. Et chaque bloc respecte les mêmes règles de validation. Dans notre exemple, le fait que leur hash doit commencer par 0000.
Pour rappel, chaque bloc de la chaîne dispose des mêmes éléments dans son entête, c’est-à-dire un numéro, un nonce et un message de taille arbitraire. À l’exception du premier bloc, chacun se compose d’un élément supplémentaire : le hash du bloc précédent. Il permet de lier les blocs entre eux. Comme ceci :
CAPTURES ÉCRAN TABLEAU
C’est quoi une blockchain distribuée ? Ça veut dire que la blockchain est diffusée à l’ensemble des participants du réseau, via des nœuds indépendants. Et les nœuds correspondent à des ordinateurs qui :
Au 7 novembre 2023, on estime 16 695 nœuds sur le réseau Bitcoin. Ils sont répartis dans le monde de la façon suivante :
PHOTO RÉPARTITION MINEURS
Depuis la création du réseau Bitcoin, l’historique des blocs validés est public. Sa blockchain est donc totalement transparente, car toute personne peut y accéder et consulter ses informations. Toi aussi tu veux accéder à la blockchain de Bitcoin ? Découvre-là sur le site Blockchain.com ! 🧐
En plus d’être partagée et transparente, la blockchain de Bitcoin est fiable. Pour l’illustrer, je reprends nos deux blocs, juste au-dessus.
La falsification d’un élément dans un bloc change son hash qui ne commence plus par les quatre 0 requis. Le bloc n’est donc plus valide et ceux qui suivent non plus, puisque leur validation est liée au hash du bloc qui les précède.
Par exemple, si je change simplement la majuscule de Bitcoin dans le message du bloc 1, son hash sera totalement différent. Le bloc 2 étant relié au bloc 1 aura également un hash modifié. ⛔ Ça donnerait ça :
CAPTURES ÉCRAN TABLEAU
Les hashs des blocs ci-dessus ne commencent plus par les 0000 requis. Ils sont invalides. Pour vérifier l’intégrité d’une blockchain, il suffit de regarder le hash du dernier bloc et de voir s’il répond bien aux règles définies dans le protocole.
On a dit que la blockchain de Bitcoin est distribuée. Si un ordinateur modifie un élément dans un bloc et le valide, les hashs du bloc falsifié et ceux qui suivent seront différents des autres participants du réseau.
Sauf que Bitcoin est une démocratie, où un nœud = un vote. Son protocole de consensus s’accorde sur le résultat trouvé par la majorité de ses participants. La falsification d’un élément par un ordinateur ne sera donc pas validée par les autres participants du réseau.
Les informations écrites sur la blockchain de Bitcoin sont donc immuables (= on ne peut pas les changer). Pour réussir à valider un bloc falsifié, il faudrait qu’un acteur représente plus de 51 % des nœuds de Bitcoin. C’est l’attaque 51.
D’après Loïc, cette attaque représente un réel risque, mais il y a peu de chance que cela se produise. Posséder plus de la moitié des nœuds du réseau serait très complexe (et coûteux) à mettre en place et les bénéfices seraient minimes. Par exemple, l’attaquant pourrait censurer ou annuler des transactions.
De par sa diffusion, sa transparence et sa fiabilité, Bitcoin est décentralisé. Le principe de confiance et de pouvoir est dilué entre les différents nœuds du réseau. Schématiquement, on peut le voir ainsi :
PHOTO NOEUDS RÉSEAU
Disclaimer : la majorité des blockchains ne sont ni distribuées ni décentralisées. Certaines fonctionnent sur un serveur centralisé. La blockchain seule ne peut garantir l’immuabilité et la véracité des informations publiées dessus.
On commence à observer les contours du réseau Bitcoin, mais on n’a pas encore parlé d’un élément fondamental : la monnaie sous forme de tokens.
Comme expliqué, chaque bloc d’une blockchain se compose d’un numéro, d’un nonce, d’un message de taille arbitraire et du hash du bloc précédent. Dans le cadre d’une blockchain utilisée pour un système de paiement électronique, on note une différence parmi ces éléments.
Au lieu d’avoir un message basé sur un texte, on enregistre des transactions de tokens (ou de jetons). Le nombre de transactions est également arbitraire. Tu peux en avoir 3, 5 ou 7 par exemple.
Une transaction correspond à un transfert de valeurs entre deux parties. Ici, les personnes échangent des BTC (le sigle des bitcoins). Voilà à quoi ressemble l’entête d’un bloc avec ce nouvel élément :
CAPTURES ÉCRAN TABLEAU
Comme tout système de paiement, il est indispensable de tenir à jour un registre des comptes. Dans le réseau Bitcoin, ce grand livre comptable partagé et public se matérialise à travers la blockchain.
En lien avec les transactions, voici l’arbre de hachage (qu’on appelle aussi l’arbre de Merkle). Je pensais que c’était un concept hyper compliqué, mais finalement non, si on ne commence pas par cette notion. 😅
C’est une structure regroupant l’ensemble des transactions sélectionnées par un mineur dans un bloc. Elle constitue la seconde partie d’un bloc.
Dans l’arbre de Merkle, chaque élément est haché, puis les hashs sont hachés ensemble, etc. Ce principe est répété pour ne garder qu’un seul hash, appelé racine de Merkle. Et visuellement, ça ressemble à un arbre :
PHOTO RACINE DE MERKLE
Cette structure assure l’optimisation de la blockchain de Bitcoin. Les transactions validées et enfouies sous plusieurs blocs peuvent être effacées pour alléger le réseau. C’est à ce moment-là que l’arbre de hachage intervient.
Placée dans l’entête du bloc, la racine de Merkle permet de réduire la place occupée par toutes ces transactions en un hash de 64 caractères. On reprend l’entête du bloc n°748 (celui qu’on a étudié juste au-dessus) :
CAPTURES ÉCRAN TABLEAU
Avant dernier point : l’horodatage.
Pour comprendre cette notion, on doit reprendre chaque étape d’une transaction de bitcoins sur le réseau :
Étape 1 : une transaction de BTC est effectuée entre 2 parties.
Étape 2 : comme on est dans une blockchain distribuée, un nœud validateur reçoit la transaction. Il la vérifie. La valide. Puis, il le transmet à d’autres participants du réseau qui suivent ce même processus de validation.
PHOTOS
Étape 3 : cependant, la transaction n’est pas encore considérée comme validée. Elle doit être ajoutée dans un bloc du réseau Bitcoin. En attendant, elle se trouve dans la Mempool, un espace virtuel qui regroupe les transactions en attente.
Étape 4 : des nœuds miniers (ou des mineurs) récupèrent les transactions dans la Mempool et les incluent au sein d’un bloc candidat. Comme ça :
PHOTOS
Étape 5 : ensuite, le mineur va tenter de trouver le nounce du bloc pour obtenir un hash valide. Il passe alors deux fois les éléments de l’entête du bloc dans la fonction de hachage cryptographique SHA-256. C’est le mécanisme de proof-of-work.
Étape 6 : une fois le hash trouvé et le bloc validé, le nœud minier le diffuse aux autres participants du réseau Bitcoin.
Étape 7 : pour exprimer leur acceptation du bloc, les participants créent un nouveau bloc en utilisant le hash du bloc validé comme hash précédent.
C’est presque terminé.
Car petite précision : quand un mineur tente de constituer et de valider un bloc candidat, il est loin d’être seul. L’ensemble des nœuds du réseau sont en compétition pour valider le prochain bloc de la blockchain.
Chaque bloc candidat ne propose pas forcément les mêmes transactions. Donc, les autres nœuds peuvent accepter le bloc à condition que les transactions enregistrées dessus soient valides et n’aient pas déjà été dépensées.
Dans la finance traditionnelle, la banque vérifie les transactions pour éviter ce problème de double dépense. Le système de Bitcoin utilise l’horodatage comme preuve de dépense de ses tokens.
L’horodatage est une technologie de chiffrement qui enregistre numériquement la date et l’heure de génération d’un bloc. 🕐 📅
CAPTURES ÉCRAN TABLEAU
L’horodatage est aussi un élément de l’entête du bloc. C’est un nombre entier de 32 bits établi sur l’heure UNIX. Cette méthode définit le nombre de secondes écoulées depuis le 1er janvier 1970, à minuit.
Par exemple, ce bloc a été validé le 7 novembre 2023 à 13h47 et 23 secondes. En heure UNIX cela correspond à 1699361243. Et si on le convertit en bits, on obtient une suite de ce style : 01101001100111010100110010001001.
Enfin, on termine avec le facteur de difficulté.
Pour comprendre simplement cette notion de facteur de difficulté, Loïc Morel propose une métaphore très parlante. Il compare le mécanisme de preuve de travail avec un jeu de cartes. Le but du jeu est que le joueur (le mineur) trouve une carte (trouve un hash de l’entête du bloc) inférieure à la carte cible imposée par le maître du jeu (le facteur de difficulté).
Par exemple, les cartes sont disposées face cachée, devant toi. La règle est que tu dois piocher une carte inférieure à celle de la reine. Et si elle est supérieure, tu dois en retirer une nouvelle. Puisque la seule carte supérieure à la reine et celle du roi, trouver une carte valide rapidement est très probable.
Maintenant, la règle devient : tirer une carte inférieure à 7. En comparaison à la reine, tu vas probablement passer plus de temps avant de piocher une carte valide. Le minage de bitcoins fonctionne de la même façon.
Au début, je t’avais donné la règle des quatre 0 pour comprendre simplement le concept de validation d’un bloc.
Dans le réseau Bitcoin, la règle de validation est la suivante : pour valider un bloc candidat, les mineurs cherchent un hash commençant par un certain nombre de zéros. Ce nombre doit être inférieur au facteur de difficulté.
Par exemple, le facteur de difficulté valide un bloc si son hash commence par 10 zéros. Ensuite, il ajuste ce nombre et demande aux mineurs de trouver 12 zéros pour valider un bloc. Plus le nombre de zéro augmente et plus il est difficile de trouver un hash valide.
Mais, pourquoi cette variable ?
En moyenne, les nœuds de Bitcoin doivent publier un nouveau bloc toutes les 10 minutes. C’est écrit dans son protocole. Si le nombre de nœuds augmente, alors la probabilité de trouver un hash valide plus rapidement augmente aussi.
Pour conserver cette moyenne de génération des blocs sur le réseau Bitcoin, on ajuste le facteur de difficulté. C’est un nombre de 256 bits. En baissant le facteur de difficulté, on baisse la difficulté de minage. Et inversement.
Et la conservation de cette moyenne de publication des blocs, toutes les 10 minutes, c’est important. Elle permet de connaître à l’avance l’émission des bitcoins et de stabiliser la cryptomonnaie. On parle de tokenomics.
Pour ajuster le facteur de difficulté, le protocole Bitcoin se base sur la moyenne de publication des 2016 derniers blocs. Cet ajustement se fait donc toutes les deux semaines environ. Et c’est l’horodatage des blocs validés qui permet de déterminer cette moyenne. Le calcul est le suivant :
Nouveau facteur de difficulté = Ancien facteur de difficulté x (Temps des 2016 derniers blocs en secondes / 1 209 600 secondes) |
On reprend une dernière fois l’entête de notre bloc n°748. Le facteur de difficulté est défini de telle sorte que le hash du bloc doit commencer par au moins 7 zéros. Un bloc valide ressemble à ça :
CAPTURES ÉCRAN TABLEAU
Et voilà comment fonctionne le minage de cryptomonnaie ! Enfin, en prenant l’exemple du réseau Bitcoin. Comme souligné plus haut, les cryptomonnaies ne fonctionnent pas toutes de la même façon.
La moindre différence peut changer complètement le fonctionnement ou la sécurité du réseau. Il faut bien regarder 👀
PHOTOS
Hâte de te partager mes prochaines recherches !
Source :