La sécurisation du réseau Bitcoin repose sur deux principes : les nœuds, ainsi que les mineurs.
Les nœuds :
Pour que le nouvel état du registre soit synchronisé facilement sur tous les ordinateurs du réseau, ce registre est découpé en blocs. Toutes les dix minutes environ, un nouveau bloc est créé.
Le principe est le suivant : les blocs précédant ne peuvent jamais être modifiés. Aucune transaction ne peut donc être annulée, et personne ne peut modifier l’historique des soldes et des transaction.
Ainsi, toutes les dix minutes environ, un nouveau bloc est créé, qui inclus les dernières transactions.
Il est donc inscrit dans le nouveau bloc, (pour imager en simplifiant, la réalité est un peu plus complexe) : Paul envoie 20 bitcoins à Pierre, Paul avait 30 bitcoins, son nouveau solde est donc de 10 bitcoin, et Pierre avait 30 bitcoins, son nouveau solde est donc de 50 bitcoins.
Une liste de plusieurs transactions comme celle ci-dessus est inscrite dans un fichier, appelé un bloc, et, une fois le bloc validé (nous reviendront par la suite sur la méthode de validation), toutes les personnes qui possède ce petit logiciel (appelé un nœud), vont télécharger ce nouveau bloc, le logiciel va vérifier que les informations sont cohérentes (par exemple si Paul possédait bien 30 bitcoins dans l’état précédant du registre, puis, si il ne trouve pas d’anomalie va l’intégrer comme dernier bloc du registre, qui ne sera donc plus modifiable.
S’il découvre un anomalie (par exemple que Paul n’avait que 5 bitcoins et ne pouvait donc pas effectuer cette transaction, il va rejeter ce bloc et ne l’intégrera pas dans son registre. Tous les nœuds du réseau vont effectuer la même opération (à l’exception de ceux qui essaient de commettre une fraude). Le registre va donc se scinder en deux, deux versions de celui-ci vont cohabiter, et la version qui aura la majorité des nœuds servira de référence.
La deuxième version de ce registre continue donc à exister, mais n’a plus de valeur aux yeux de la majorité des utilisateurs.
Pour effectuer une transaction frauduleuse, il faut donc corrompre une majorité des personnes ayant un nœud pour leur convaincre d’accepter la dite fraude.
En sachant que si des fraudes étaient constatées, l’annonce de cette nouvelle (que tout le monde pourrait contrôler, puisque les anciens blocs ne sont pas modifiables) ferait perdre toute valeur aux bitcoins que ces mêmes utilisateurs possèdent sur ce même réseau.
Et si le but n’était pas financier, mais politique par exemple, pour discréditer le réseau et se débarrasser du Bitcoin, il faudrait convaincre une majorité d’utilisateurs, qui sont des millions, répartis sur les cinq continents, et qui n’ont ni la même nationalité ni la même religion ni la même culture ni les mêmes opinions politiques. Cela s’apparente à une mission impossible.
Les nœuds ont donc pour rôle de vérifier qu’aucune fraude n’a été commise.
Mais d’autres acteurs prennent part à la sécurisation du réseau : les mineurs.
Les mineurs :
Ce sont eux qui proposent les transactions au réseau, que les nœuds vont par la suite vérifier. Il est donc primordial que ceux-ci ne proposent uniquement des transaction valides, afin que le réseau ne se divise pas en permanence entre les registres valides et ceux corrompus.
Le mineur qui gagne le droit d’émettre un nouveau bloc empoche deux récompenses : des bitcoins fraîchement créés, ainsi que des frais de transactions.
Pour gagner le droit de créer le prochain bloc, et donc de percevoir ces récompenses, les mineurs se départagent en essayant de trouver le « hash » de ce dit bloc.
Le hachage est une technique de cryptographie, utilisée fréquemment pour la vérification de mots de passes par exemple. Cela consiste à associer une valeur d’entrée (une suite de caractères de tailles variable, que se soit un fichier texte de plusieurs milliers de pages ou un mot de passe) à des séries de caractères de taille fixe. Chaque valeur d’entrée, après avoir effectué un calcul de hachage, se voit attribué une suite de caractères, appelée « hash ».
Le principal avantage de la fonction de hachage est qu’il est à la fois très facile de calculer le hash d’une valeur d’entrée, mais l’inverse est quasiment impossible.
Si une seule lettre d’un fichier texte de plusieurs milers de pages change, tout le hash est modifié.
On dit de cette fonction qu’elle est à sens unique. Pour reprendre l’exemple des mots de passes, si un pirate prends possession de la liste des hashs des mots de passes des utilisateurs d’un site internet, ils ne peuvent pas en déduire la liste des mots de passes des utilisateurs.
Cela permet au site internet de ne conserver nulle part les mots de passes, et ainsi garantir une meilleure sécurité.
Dans le cadre du minage, tous les mineurs sont donc en compétition pour trouver le hash du bloc à proposer. Pour trouver ce hash, la seule méthode est celle de la « force brute ». Cela consiste à tester toutes les combinaisons possible, une par une. Pour avoir le plus de chance possible de trouver le précieux hash, le but est de tenter le plus de combinaison possible en un minimum de temps.
Plus les ordinateurs (spécialement fabriqués pour le minage) peuvent tester de combinaisons par seconde, plus coûtent cher à l’achat, et plus ils consomment d’électricité.
Le premier mineur à trouver le hash du bloc l’annonce au réseau. Les autres mineurs testent alors la combinaison, et si elle est juste, donnent leur accord pour que le mineur ayant trouvé le hash valide le bloc, et empoche les récompenses. Les autres mineurs, tout de suite après avoir constaté que la combinaison la bonne, ont tout intérêt à commencer à recommencer à chercher le hash du bloc suivant le plus vite possible, afin de maximiser ses chance.
Afin qu’un bloc soit proposé toutes les dix minutes en moyenne, un algorithme détermine la difficulté de minage, et l’ajuste toutes les deux semaines environ. Cela consiste à ajuster le nombre de caractères du hash à trouver afin de valider un bloc.
Imaginons, par exemple, qu’au jour J il faut trouver les vingt premiers caractères du hash du bloc pour le valider, et qu’une entreprise géante commence à déployer des centaines de milliers d’ordinateurs pour miner des bitcoins. Dans un premier temps, puisque bien plus de combinaisons seront testées par secondes, les blocs seront validés plus fréquemment, toutes les cinq minutes par exemple. L’algorithme va donc s’apercevoir de cela, et va déterminer par calcul qu’à la prochaine mise à jour de la difficulté, il faudra dorénavant trouver par exemple les vingt-trois premiers chiffres du hash du bloc, afin que les blocs soient validés toutes les dix minutes en moyenne.
Il y a plusieurs raisons à cet objectif de 10 minutes d’intervalles entre chaque blocs. Les deux principales sont la sécurité, ainsi que le contrôle de l’émission de nouveau bitcoins.
Pour la sécurité, la logique est d’adapter la difficulté à l’évolution technologique. Les ordinateurs étant de plus en plus puissants avec le temps, si la difficulté n’augmentait pas avec le temps, au bout de quelques années, avec des ordinateurs très puissants, il serait relativement facile de proposer des nouveaux blocs corrompus sans que cela coûte cher en matériel et en électricité.
Contrôler l’émission de nouveaux bitcoins est également une des promesses de Bitcoin. Puisque de nouveaux bitcoins sont créés à chaque nouveau blocs, il est important que les blocs soient émis à intervalle réguliers.
La récompense diminue avec le temps. Tous les quatre ans environ (tous les 210 000 blocs en réalité), la récompense est divisée par deux. Celle-ci était de 50 bitcoins à la création du réseau, début 2009. En 2022, date d’écriture de ce livre, la récompense est de 6,25 bitcoins.
Le but de cette diminution progressive est double. Il s’agit d’une part de s’adapter à la hausse potentielle anticipée du cours du bitcoin (6.25 bitcoins valent en euros aujourd’hui beaucoup plus que 50 bitcoins en 2009). D’autre part, il s’agit de limiter l’émission de nouveaux bitcoins, une des promesses du réseau étant qu’il n’y aura jamais plus de 21 millions de bitcoins en circulation.
L’objectif étant, que quand la récompense sera d’environ zéro (cela est prévu pour l’an 2140), les mineurs soient rémunérés uniquement par les frais de transactions.
C’est ce principe de validation de blocs, par des mineurs qui dépensent de l’énergie pour sécuriser le réseau, que l’on nomme « preuve de travail » (proof of work, ou POW en anglais).
C’est celui-ci que beaucoup considèrent, à tort ou à raison, comme polluant. Le sujet de l’écologie est abordé dans le chapitre suivant : l’écologie et la preuve de travail