Dans un précédent article, nous avons expliqué en détail comment le bitcoin fonctionne en tant qu’une monnaie décentralisée. Mais comment se passe la vérification de transactions à l’absence d’un tiers de confiance? Nous nous penchons sur la question aujourd’hui mais avant d’en arriver là, il est important de comprendre que malgré sa complexité, l’invention de Satoshi Nakamoto n’est qu’un simple programme informatique. Décryptons ensemble le sujet sans plonger dans des concepts techniques.
Bitcoin, un protocole informatique
Bitcoin est un système de paiement électronique, mais il s’agit en fait d’un simple programme informatique. Lorsque vous l’exécutez, il se connecte à d’autres ordinateurs exécutant le même programme dans le monde entier.
Cela crée un réseau massif d’ordinateurs qui peuvent communiquer et partager des informations entre eux. Tout cela se produit pour une seule raison : partager un fichier ou une base de données appelée la blockchain.
La blockchain contient des transactions. N’importe qui peut effectuer une transaction et l’insérer dans un ordinateur du réseau. De là, elle sera transmise d’ordinateur en ordinateur jusqu’à ce que tout le monde en ait une copie. Au final, cette transaction se retrouve sur la base de données, la blockchain, hébergée par tous les ordinateurs ou nœuds du réseau.
Le problème de la double dépense
Vous pouvez en effet insérer deux transactions contradictoires dans le réseau en même temps. Par exemple, vous pouvez acheter une pizza dans une transaction, puis créer une autre transaction qui met en jeu le même bitcoin pour acheter une bière.
Si vous insérez ces deux transactions à différentes extrémités du réseau en même temps, certains ordinateurs recevront la transaction de la pizza en premier, et d’autres la transaction de la bière en premier.
La solution
Ces deux transactions ne peuvent pas être écrites dans le fichier, car cela constituerait une “double dépense”. Pourtant, nous avons un réseau d’ordinateurs avec des transactions contradictoires, et aucun ordinateur n’est responsable. Alors comment se prend la décision ?
Bitcoin résout ce problème par le “minage”. Au lieu d’écrire toutes les nouvelles transactions sur la blockchain (et d’enregistrer les doubles dépenses sur le fichier), toutes les nouvelles transactions sont conservées dans une zone d’attente appelée “pool de mémoire”. À partir de là, chaque ordinateur peut rassembler les transactions de son pool de mémoire en un “bloc”, et essayer d’ajouter ce bloc de transactions à la blockchain. Celui qui ajoute le premier son bloc à la blockchain décide de la transaction qui sera retenue.
C’est là que la compétition commence…
Chaque ordinateur commence par faire passer son bloc (chaque bloc est différent) par ce qu’on appelle sa “fonction de hachage”. Cette fonction prend un bloc et le brouille pour produire un nombre aléatoire à partir de celui-ci. Il est intéressant de noter que personne ne sait quel nombre une fonction de hachage va sortir en fonction des données qui lui sont fournies en entrée.
Quoi qu’il en soit, le concours consiste à essayer d’obtenir de cette fonction de hachage un nombre inférieur à un certain seuil. Si vous parvenez à obtenir un nombre suffisamment bas à partir de votre bloc, vous pouvez l’ajouter à la blockchain.
… et c’est la concurrence
Par exemple, disons que j’ai la transaction bière dans mon pool de mémoire. Je construis un bloc, j’y place la transaction de bière, puis je soumets ce bloc à la fonction de hachage. Si le nombre qui en ressort n’est pas inférieur au seuil, ma tentative a échoué. Cependant, je peux toujours apporter un petit ajustement aux données contenues dans le bloc (par exemple, ajouter un peu de données supplémentaires à la fin du bloc), et le soumettre à nouveau à la fonction de hachage.
Le “minage” consiste donc essentiellement à hacher mon bloc aussi vite que possible, en essayant d’être le premier à obtenir un résultat inférieur au seuil. Si j’ai de la chance, je serai le premier ordinateur du réseau à y parvenir et envoyer ce bloc au reste des ordinateurs du réseau, qui l’ajouteront à leurs bases de données. Après, parce que ce bloc contient la transaction de la bière, la transaction conflictuelle concernant la pizza est éliminée de la mémoire.
Ainsi, par pure chance et par hasard, la transaction de la bière est enregistrée dans la blockchain de façon immuable. À la réception du nouveau bloc réussi, les nœuds abandonnent le bloc en cours sur lequel ils travaillaient et retournent dans leur pool de mémoire pour en créer un nouveau. Cela signifie que la blockchain se construit en permanence, de nouveaux blocs de transactions étant ajoutés à la chaîne toutes les 10 minutes environ.
En conséquence, nous avons un système dans lequel n’importe qui peut insérer des transactions dans un réseau d’ordinateurs qui travaillent ensuite pour essayer de les ajouter à un fichier distribué.
C’est ainsi que le minage empêche toute double dépense d’être écrite dans le fichier et rend possible le fonctionnement d’un système de paiement électronique sur un réseau d’ordinateurs sans aucun point central de contrôle, c’est le Bitcoin.