Maintenant que le fonctionnement général de la blockchain Bitcoin n'a plus de secret pour vous, penchons-nous plus en détail sur les rouages de l'un de ses mécanismes que nous avons déjà évoqué : le la preuve de travail, ou Proof of Work (PoW). Après un bref rappel historique, nous verrons l'intérêt de ce mécanisme pour Bitcoin, son fonctionnement, et vous présenterons la manière dont elle est utilisée pour sécuriser le réseau en maintenant l’intégrité de son registre comptable.
Temps de lecture estimé : 37 minutes
Table des matières
La naissance de la preuve de travail
Ceux d'entre vous qui ont pris connaissance des dates clés de l'histoire de Bitcoin savent déjà que l'invention du mécanisme de preuve de travail est bien antérieure à celle de Bitcoin. Le concept est imaginé en 1993 par Cynthia Dwork et Moni Naor, dans le but de prévenir des attaques de spam ou DDOS qui pullulent à cette époque.
Comme son nom l'indique, l'idée est de demander une preuve qu'un travail a été réalisé. Le travail consiste à utiliser la puissance de calcul d'un ordinateur pour résoudre une énigme mathématique. La preuve est la réponse de l'énigme. Elle doit être facilement vérifiable mais difficile à produire.
Le concept est ensuite repris en 1996 par Adam Back, auquel il inclut les fonctions de hachage cryptographiques. Son invention, appelée « hashcash », est citée dans le white paper de Bitcoin partagé par Satoshi Nakamoto.
Ce dernier y ajoute la notion de récompense financière qui sert à inciter à sécuriser le réseau Bitcoin.
Les éléments incontournables de la preuve de travail de Bitcoin
Nous devons commencer par présenter différents éléments et acteurs de Bitcoin, pour comprendre comment ils s'articulent afin de permettre au mécanisme de preuve de travail de fonctionner.
Les nœuds et les mineurs
Les nœuds sont des machines qui exécutent le logiciel Bitcoin, sont connectés au réseau et conservent une copie de la blockchain. Leur rôle est de valider, diffuser, traiter et stocker les transactions sur le réseau Bitcoin.
À l’origine, avec les premières versions du logiciel Bitcoin (aujourd'hui appelé « Bitcoin Core »), toutes ses fonctionnalités étaient rassemblées au sein de chaque nœud. Avec le temps et les évolutions du réseau, les nœuds se sont spécialisés, et peuvent être classés en différentes catégories :
- Les nœuds complets (full nodes) : comme leur nom l'indique, ils sont capables de jouer tous les rôles. Ils peuvent diffuser, valider et archiver les transactions en BTC. Ils possèdent une copie complète et à jour de la blockchain. Ils vérifient que les transactions et les blocs respectent les règles du protocole Bitcoin, et ils rejettent ceux qui ne les respectent pas ;
- Les nœuds légers (light nodes) : ce sont des nœuds qui ne possèdent pas une copie complète de la blockchain, mais seulement une partie des en-têtes de blocs. Ils se basent sur les nœuds complets pour obtenir les informations dont ils ont besoin, comme la validité d’une transaction ou le solde d’une adresse ;
- Les nœuds miniers (ou mineur) : ce sont les nœuds qui nous intéressent concernant la preuve de travail. Ils se chargent de la création des nouveaux blocs. Ils doivent travailler pour résoudre un problème mathématique et en apporter la preuve. Cela leur permet de gagner des BTC. Il peut s'agir de nœud complet ou léger. Dans ce cas, ils sont souvent regroupés avec d'autres dans des pools de minage, où ils mettent en commun leur puissance de calcul et partagent les récompenses obtenues en fonction de leur contribution.
Nous reviendrons sur les pools de minages dans la suite de cet article et sur les problèmes qu'ils peuvent causer en terme de centralisation.
Les fonctions de hachage cryptographiques
Voici une notion que nous avons déjà évoquée dans les articles précédents de cette Encyclopédie, qui représente l'un des piliers de Bitcoin.
Une fonction de hachage est un algorithme qui associe des valeurs de taille fixe (appelée valeur de hachage, empreinte, signature ou hash) à des données de taille quelconque. Dans le cas du hachage cryptographique, la fonction est à sens unique. Cela signifie qu'il est impossible de retrouver les données d'origine à partir de leur signature.
Bitcoin utilise une fonction de hachage cryptographique appelée SHA-256. Sans entrer dans les détails de son fonctionnement, elle prend en entrée des données de n’importe quelle taille et produit en sortie une valeur de hachage de 256 bits (32 octets) de précisément 64 caractères au format hexadécimal. Cette valeur de hachage est unique pour chaque entrée.
Voici un exemple pour mieux illustrer ces propos. Prenons la phrase : « Le journal du coin vous présente son encyclopédie » comme donnée d'entrée. En lui appliquant l'algorithme de hachage SHA-256, nous obtenons cette signature :
52bfdf631465247ab5773f656903f5d3866954a6a8971a7ca6a1321e50748b1c
Si nous modifions un seul caractère, en remplaçant le « j » de journal du coin, par un « J » majuscule, le hash obtenu n'a alors absolument rien à voir avec le précédent :
989017c96c09e9a6e5ab1277d465dc13e29f3aad25f991e430c08628ce3f0c04
Il est impossible de retrouver notre phrase initiale à partir du hash que nous avons obtenu. Nous verrons par la suite comment les mineurs Bitcoin utilisent la fonction de hachage SHA-256 pour valider les blocs.
Pour bien comprendre, vous pouvez aussi vous rendre sur ce site qui permet d'obtenir le hachage des entrées de votre choix. Voici quelques exemples :
Le fonctionnement de la preuve de travail
Le travail des mineurs et sa preuve
Le rôle des mineurs est de récupérer les transactions en attentes pour les intégrer avec d'autres données dans un bloc qui doit ensuite être ajouté à la blockchain.
L'ensemble des données contenues dans le bloc (dont nous avons vu la structure dans l'article précédent) doit passer par l'algorithme de hachage SHA-256 pour produire une signature. Cette signature du bloc sera ensuite elle-même intégrée au prochain bloc, de sorte à ce que chaque blocs soient liés.
Jusqu'ici, rien de bien difficile.
Sauf que pour être considéré comme valide, le hash doit répondre à des critères bien précis. Il doit commencer par un certain nombre de zéros et rester inférieur à une valeur donnée appelée la cible.
Et c'est là que les choses se corsent. Pour obtenir un hash valide, les mineurs ne peuvent changer dans les données du bloc que le « nonce », qui est un nombre aléatoire. En d'autres termes, le travail principal des mineurs consiste à trouver un nonce permettant d'obtenir une signature valide.
Ils doivent donc en essayer un maximum, le plus rapidement possible, pour trouver la solution avant les autres mineurs. Car c'est une compétition : seul le premier qui trouve cette solution voit son bloc validé et touche la récompense associée (des bitcoins) ! Le fait de trouver un hash valide constitue ainsi la preuve du travail de calcul effectué.
Le nombre de hash qu'une machine peut effectuer par seconde est appelé le hashrate. Les machines de minage actuelles peuvent miner plus de 110 Tera Hash par seconde (110 TH/s). Sachant qu’un Tera Hash représente 1 000 000 000 000 000 opérations par seconde, vous pouvez imaginer la quantité de nonces qu'une seule machine essaye en 10 minutes.
L'ajustement de la difficulté
La difficulté du problème, c’est-à-dire les critères de validité du hash, est ajustée par le protocole tous les 2 016 blocs (soit environ toutes les 2 semaines). Cet ajustement s'opère afin d'aligner les critères de validité du hash sur la puissance de hachage globale du réseau. L'objectif est qu'un bloc puisse être validé toutes les 10 minutes en moyenne.
Si la moyenne a dérivé à la hausse au moment du réajustement, la difficulté se réduit. À l’inverse si le minage des blocs est trop facile, la difficulté augmente.
Pour mieux comprendre à quoi correspond la difficulté, faisons une analogie avec un lancer de dés. Si l'on demande à une personne de lancer 10 dés, elle peut obtenir un résultat compris entre 10 (=10 x 1) et 600 (=10 x 6).
Imaginons que l'on décide que la cible à atteindre est 400. Si le jet de dés est supérieur, alors le joueur doit recommencer jusqu'à ce qu'il atteigne un chiffre inférieur ou égal à 400.
Si le joueur met moins de 10 minutes à réussir, alors la difficulté peut être augmentée, en demandant de faire un score maximal de 300. Par contre si le joueur met plus de 10 minutes à réussir, alors on peut réduire la difficulté, en augmentant le maximum de points auquel il a droit.
La difficulté de minage est étalonnée sur le premier bloc créé. Une difficulté de 100 signifie qu'il faut 100 fois plus de puissance de calcul qu’il en a fallu à Satoshi Nakamoto pour générer le premier bloc (aujourd'hui la difficulté est de 79 351 228 131 136,77 !).
Elle permet d'obtenir (à l'aide d'un calcul que nous détaillons ci-dessous) le nombre appelé « hash cible » ou « cible ». Pour que le bloc soit valide, le hash trouvé par le mineur doit être inférieur à la cible. En d'autres termes, plus la cible est petite, plus elle commence par un nombre important de zéros et plus il est difficile de trouver un hash plus petit.
Plus la puissance de calcul du réseau est élevée, plus la valeur de la cible est faible (c'est-à-dire qu'il y a plus de zéros au début) et plus la difficulté est grande (c'est-à-dire qu'il y a peu de solutions à ce problème). Une puissance de calcul considérable doit alors être déployée pour trouver cette solution (ce hash) par génération aléatoire. Si, en revanche, la puissance de calcul du réseau diminue, la difficulté sera revue à la baisse.
D'une manière générale, l'histoire de Bitcoin a montré que la difficulté augmente avec le temps. Il fallait par exemple une signature commençant par 17 zéros en mai 2016, alors qu'il en fallait 19 en mars 2024.
Ceci est dû au hashrate total du réseau qui augmente avec l'évolution des machines de minage et le nombre de mineurs connectés. À l'heure de l'écriture de ces lignes, il se situe à environ 660 millions de Tera Hash par seconde.
Calcul de la cible
Ce paragraphe est destiné aux plus matheux d'entre vous, qui souhaitent comprendre la relation entre la difficulté et le nombre de zéro en début de hash. Si vous n'aimez pas les maths vous pouvez passer directement à la suite (on ne vous en voudra pas).
La difficulté et la cible sont liées par la formule suivante :
La cible initiale est la difficulté de minage du bloc Genesis miné par Satoshi Nakamoto. Elle vaut 0x1d00ffff (le 0x au début signifie qu'il s'agit d'un nombre au format hexadécimal).
La cible actuelle est stockée dans le bloc sous le nom de « Bits ». Dans le bloc 834 196 pris en exemple ci-dessous, le Bits vaut 386 108 434.
Pour comparer la cible représentée par le Bits à la valeur de hachage, il faut convertir le Bits en hexadécimal (vous trouverez un convertisseur ici - on obtient 0x17038C12) puis le scinder en 2 parties :
- Le premier byte est l'index : ici 0x17 ;
- Les 3 bytes suivants représentent un coefficient : ici 0x038C12.
Il peut ensuite être comparé à la valeur de hachage au moyen de l'équation suivante (vous pouvez aussi l'utiliser pour calculer la valeur de la cible initiale et retrouver la valeur de la difficulté avec la formule donnée plus haut) :
On remplace en convertissant l'index et le coefficient en décimal :
On convertit à nouveau en hexadécimal pour avoir la forme du hash à obtenir :
Ici on peut voir que le hash du bloc 834 196 (0x00000000000000000002c73ef31f97f1c1bc5769ecbbc9cb326cf2b3830f114e) respecte bien la condition puisqu'il qu'il commence par 19 zéros et qu'il est inférieur à la cible.
Bravo à ceux qui auront lu cette partie (vous êtes fous) !
Le « chaînage » des blocs
Vous savez maintenant en quoi consiste le travail des mineurs et comment ils prouvent qu'ils l'ont bien effectué. Mais en quoi ce mécanisme rend-il le registre des transactions (la blockchain) immuable ?
Les plus attentifs d'entre vous savent qu'on l'a déjà évoqué dans l'article précédent, mais un rapide rappel ne fait jamais de mal.
Cela vient du fait que chaque bloc est en « relation mathématique » avec tous les blocs qui le précèdent. En effet, pour rappel, le hash d'un bloc n-1 se trouve parmi les données qui constituent un bloc n. Ce bloc n-1 comprenait déjà lui-même le hash du bloc n-2, qui comprenait le hash du bloc n-3, etc.
Ainsi, si un attaquant cherche à modifier une transaction contenue dans le bloc n-10, il devra reproduire la preuve de travail pour ce bloc et tous les blocs suivants. Cette tâche est pratiquement irréalisable en raison du coût énergétique et de la puissance de calcul requise (elle-même croissante).
La modification des règles de consensus
Les BIP
Il est parfaitement possible de changer les règles de consensus. Le protocole Bitcoin étant open source, n’importe qui peut en proposer une modification à tout moment, mais l'opération est délicate.
Il existe une méthode de description standardisée pour proposer des modifications appelée BIP (Bitcoin Improvement Proposal) c’est-à-dire une « Proposition d'Amélioration de Bitcoin » en français. Vous pouvez retrouver toutes celles qui existent à ce jour dans cette liste.
Toute la difficulté consiste à faire accepter ces changements à une majorité, voire idéalement à la totalité des participants au réseau. En effet, il ne s’agit pas de modifier le protocole Bitcoin tout seul dans son coin. Ceux qui le feraient se retrouveraient simplement isolés et désynchronisés du reste du réseau...
Non, pour qu’un changement des règles de consensus soit entériné, il faut qu’une large majorité des participants au réseau acceptent de suivre les nouvelles règles proposées. C'est là que l'opération devient délicate ; le réseau Bitcoin fonctionne de pair à pair, et il n'y a donc pas d'entité centrale qui le dirige. Personne n’est en mesure d’ordonner unilatéralement ce changement. En raisonnant a contrario, si quelqu'un était en mesure d'imposer par la force un changement des règles de consensus, cela signifierait que le réseau n'est plus décentralisé.
Par conséquent, pour qu'une modification des règles de consensus ait lieu, il faut impérativement qu'un maximum de participants au réseau soient convaincus du bien-fondé de cette modification. Sachant qu'au final, chacun sera libre d’adopter les modifications proposées en mettant à jour son client Bitcoin, ou de refuser tout changement en ne le mettant pas à jour.
Une centaine de développeurs triés sur le volet ont la possibilité d’agir sur le code source du programme informatique à la base de Bitcoin (Bitcoin Core). Pour faire partie de cette élite, la sélection est drastique. Il faut typiquement avoir déjà soumis un BIP adopté par la communauté ou salué par ses pairs, permettant ainsi d’être coopté au sein du groupe.
Si ces informaticiens peuvent modifier le code source, ils n'ont pas pour autant le pouvoir de faire accepter la mise à jour. Lorsqu’une nouvelle version du protocole est publiée, chacun des milliers de nœuds qui composent le réseau à travers le globe est libre de la télécharger et de l’installer, ou de ne pas le faire.
Pour résumer, les règles de consensus s'apparentent à un contrat social, explicitement consenti par l'ensemble des participants au réseau, qu'il n'est pas possible d'amender sans recueillir l'adhésion d'une large majorité de la communauté.
Dans la pratique, il existe deux façons de modifier les règles de consensus ; la première est qualifiée de soft fork, et la seconde de hard fork. Voyons cela plus en détail.
Le soft fork
Un soft fork, c’est une modification des règles de consensus qui vise à rendre ces règles plus strictes.
La première conséquence, c’est qu’un bloc de transaction validé suivant ces nouvelles règles plus strictes restera toujours valide au regard des anciennes règles (moins strictes). Un « soft fork » c’est un changement rétro-compatible. Ainsi, si la majorité des participants qui mettent à jour la blockchain adoptent ces nouvelles règles, le « soft fork » sera reconnu et le réseau restera uni, malgré les divergences.
En effet, la majorité des blocs validés selon les nouvelles règles seront systématiquement considérés comme valides et relayés par l’ensemble du réseau. À l'inverse, la minorité des blocs validés suivant les anciennes règles seront rejetés par la majorité dès qu’ils entrent en conflit avec les nouvelles règles de consensus.
Pour résumer simplement, un soft fork est une modification des règles de consensus qui ne risque pas d'engendrer une division du réseau à propos de la comptabilité de référence. Tout le monde continuera à utiliser la même blockchain après un soft fork, même la minorité de participants qui respecte encore les anciennes règles de consensus.
Plusieurs softs forks ont déjà eu lieu sur Bitcoin. Le plus célèbre d'entre eux est certainement celui de SegWit, activé en 2017. Il a augmenté la capacité des blocs, corrigé un problème de malléabilité des transactions et rendu possible le développement de solutions de deuxième couche comme le Lightning Network.
Le hard fork
Un hard fork, c’est une modification des règles de consensus qui a pour effet de rendre ces nouvelles règles incompatibles avec les précédentes.
L’avantage, c’est qu’un hard fork permet de modifier absolument n’importe quel aspect du protocole. Sans contrainte de rétro-comptabilité, tout peut être changé. Un hard fork pourrait par exemple permettre d'annuler une transaction. Plus généralement un hard fork permet de réécrire l'historique des transactions enregistrées dans la blockchain, permet de spécifier de nouvelles règles de gouvernance et pourquoi pas de définir de nouvelles règles d'émission des bitcoins.
L'inconvénient, c’est qu'en l’absence de consensus quasi-unanime de la part de tous les acteurs du réseau (mineurs, plateformes d’échange, développeurs, utilisateurs etc.), un hard fork a pour conséquence de diviser la communauté à propos de la comptabilité de référence.
Dans cette situation, le réseau se scinde en deux sous-groupes à partir du bloc qui précède le hard fork, générant chacun une blockchain différente suivant des règles incompatibles... Cette situation est évidemment fâcheuse. Ce schisme peut en effet entamer la confiance des participants, actuels ou potentiels, vis-à-vis de la pérennité du système. Un réseau de confiance dans lequel plus personne n'aurait confiance ne vaut plus grand-chose !
C'est la raison pour laquelle un hard fork conflictuel a peu de chance d'aboutir et de durer, tous les participants ayant à y perdre.
Si malgré tout les nœuds n'atteignent pas un consensus (par exemple si une moitié l'accepte tandis que l'autre la refuse), le réseau se divise en deux. Un premier réseau tourne alors sur l’ancienne version et l’autre sur la nouvelle mise à jour. Ces réseaux sont ainsi distincts, mais partagent le même historique jusqu’au moment de leur séparation.
Plusieurs hards forks ont déjà eu lieu sur Bitcoin. Ils ont conduit à la création de nouvelles cryptomonnaies : Bitcoin Cash, Bitcoin Gold, Bitcoin Diamond, etc. Ceux qui ne sont pas morts restent cependant beaucoup moins utilisés que Bitcoin.
La mise en oeuvre d'un fork
Sauf incident technique, les forks sont planifiés à l'avance.
Afin d’informer et de convaincre la communauté, les promoteurs d’un fork en font la publicité longtemps à l’avance, décrivent leurs motivations et les spécificités du changement via un BIP. Il est courant de proposer une date de mise en œuvre (sous la forme d'un numéro de bloc futur dans la blockchain) et un seuil d'adhésion minimal des mineurs en deçà duquel rien n'est entrepris.
Dans tous les cas, le déploiement ou le rejet d’un fork dépend toujours du soutien qu’il reçoit de la communauté.
La mise en oeuvre d'un soft fork
Sur le protocole Bitcoin, un soft fork est plus facile à implémenter qu’un hard fork, car il ne risque pas de diviser le réseau. Il suffit simplement qu'une majorité des mineurs l’adopte pour que les changements proposés deviennent effectifs. Le protocole Bitcoin a déjà été mis à jour plusieurs fois de la sorte avec succès (BIP-16, BIP-34, BIP-65).
La mise en oeuvre d'un hard fork
Les hard forks sont plus contraignants, tous les participants doivent nécessairement mettre à jour leur client et adhérer au fork, faute de quoi le réseau se retrouve divisé en deux.
Dans la pratique, les propositions de fork qui recueillent un large consensus sont normalement déployées sans encombre, tout en gardant à l’esprit qu’un bug est toujours possible, et que même un fork largement soutenu peut se comporter de façon inattendue. Ce sont le plus souvent des forks purement techniques, à savoir un changement des règles de consensus visant à corriger un bug ou à délivrer une amélioration indiscutable du protocole.
En revanche les forks motivés par des raisons autant politiques que techniques, en particulier les hards forks qui pourraient diviser le réseau, sont généralement plus conflictuels. Retenons simplement qu'en l'absence de consensus, il est certainement préférable de ne pas toucher aux règles de consensus...
La majorité économique comme règle de gouvernance
On peut parler d’ordre spontané quant à la gouvernance du protocole Bitcoin. La gouvernance émerge spontanément, en tant que résultat des décisions individuelles. Aucune entité extérieure au réseau ne peut imposer ses propres règles. La gouvernance de Bitcoin et l’ordre spontané émergent ainsi grâce à la théorie des jeux. Chaque participant au réseau poursuit son propre intérêt, et les règles du protocole découlent de ces intérêts individuels.
L’ordre spontané est au cœur des thèses de l’école autrichienne d’économie, et en particulier de la vision d’Hayek. Dans un marché libre, les incitations économiques des individus engendrent une répartition des ressources plus efficace que celle qui aurait été planifiée ou imposée par l’Homme. Ainsi, sur le réseau Bitcoin, chacun poursuit son propre intérêt, qu’il s’agisse des mineurs, des utilisateurs ou des fournisseurs de service. De l’agrégation de ces intérêts individuels émerge un ordre, qui bénéficie au système dans son ensemble, sans avoir recours à une entité centrale. C’est donc en quelque sorte, une forme d’anarco-capitalisme.
Dans la pratique, chaque entité individuelle participant au réseau a un pouvoir décisionnel en acceptant ou en rejetant les règles qui lui conviennent. Même si le taux d’adhésion des mineurs sert souvent d’indicateur de référence pour mesurer le soutien de la communauté vis-à-vis d’un fork, ce n’est qu’une partie de la réalité. Il est crucial de comprendre qu'au final, le pouvoir de faire évoluer le protocole Bitcoin (ou même Ethereum) appartient à l'ensemble des acteurs qui délivrent des services et apportent de la valeur au réseau. C'est la majorité économique résultant de cet ordre spontané qui gouverne Bitcoin.
Les mineurs ne peuvent pas imposer de modification du protocole contraire aux intérêts des autres participants sans en subir les conséquences. Les mineurs ne forment qu'une fraction de la majorité économique. S'ils décidaient d'adopter une modification du protocole, soft ou hard, qui déplaît aux autres créateurs de valeur (commerçants, plateforme d'échanges, développeurs, utilisateurs réguliers etc.), ils en viendraient inévitablement à se tirer une balle dans le pied.
Toute l'activité des mineurs est rémunérée en bitcoins, il est dans leur intérêt premier que cette unité de compte ait un maximum de valeur. Si à la suite d'un changement des règles de consensus la majorité des créateurs de valeur quittaient le réseau ou en choisissaient un autre, cela serait une très mauvaise nouvelle pour les mineurs. Voilà pourquoi ces derniers ont toujours intérêt à respecter l'opinion des autres créateurs de valeur. À défaut ils seraient les premiers à en payer les conséquences.
Ce point là est très important, puisqu'il permet directement de soutenir la décentralisation du réseau. Contrairement à d'autres cryptomonnaies, le jeton bitcoin n'est donc pas un jeton de gouvernance, comme nous l'évoquerons dans un prochain article de cette Encyclopédie.
Les problèmes résolus par la preuve de travail
Vous avez certainement maintenant compris le fonctionnement de la preuve de travail. Mais concrètement, quels problèmes fondamentaux résout-elle ?
Au sein de Bitcoin, la preuve de travail remplit parfaitement sa fonction initiale, à savoir imposer un coût élevé en ressources computationnelles et énergétiques visant à contrer le spam et les attaques DDOS. Mais ce n'est pas tout : elle est au cœur de la sécurisation du réseau !
La double dépense
La double dépense est un problème que nous avons déjà évoqué au cours de l'article précédent dédié à la blockchain. Pour rappel, il s'agit d'une situation où une même unité de monnaie numérique est dépensée plusieurs fois. La survenance de ce problème menacerait l'intégrité d'un système monétaire numérique tel que Bitcoin et rendrait les transactions non fiables.
La preuve de travail, aide à prévenir la double dépense en assurant qu'une fois qu'une transaction est confirmée dans un bloc ajouté à la blockchain, il devient extrêmement difficile de la modifier ou de la supprimer.
Cette difficulté s'accroît avec le temps, puisque chaque bloc ajouté après celui contenant notre transaction doit être modifié pour parvenir à cette double dépense. La double dépense devient alors impossible sans contrôler une majorité de la puissance de calcul du réseau (le hashrate).
De plus l'horodatage des blocs empêche également à un acteur malicieux d'effectuer une double dépense. S'il est tout à fait possible de diffuser sur le réseau deux transactions dépensant les mêmes bitcoins vers deux adresses différentes, seule la première transaction inscrite sur la blockchain sera valide. Grâce à l'horodatage, l'ensemble du réseau pourra voir que la deuxième transaction (la tentative de double dépense) est invalide.
Les généraux byzantins
Afin de décentraliser la maintenance du registre comptable et assurer la création des unités monétaires de Bitcoin, Satoshi Nakamoto a cherché une solution robuste au fameux problème des généraux byzantins.
Ce problème classique de l’algorithmique est le suivant : comment garder l’intégrité d’une information et assurer sa transmission au sein d’un réseau comportant des acteurs malicieux, sans qu'aucune autorité centrale ne soit nécessaire pour arbitrer ? Il est nommé ainsi par analogie historique, qui permet de mieux le conceptualiser.
Imaginons une cité, assiégée par plusieurs corps d’armées, dirigés par leurs généraux respectifs. Ces derniers ne peuvent communiquer que par le biais de messagers, se déplaçant à cheval (ou plutôt à dos de chameau). Ils doivent s’entendre sur l’heure et les modalités de l’attaque finale. Elle ne pourra réussir que si les troupes tombent parfaitement d’accord et attaquent de façon coordonnée.
Le problème, c’est qu’il y a au sein des généraux, tout comme parmi leurs messagers, des traîtres. Ils ne sont pas identifiés et vont tenter de fausser l’information. Comment trouver un mécanisme permettant de maintenir le consensus entre les généraux loyaux ?
En informatique, il s’agit de s’assurer qu’au sein de réseau de machines, une majorité suffisante continue de suivre le bon protocole de fonctionnement, malgré la présence éventuelle d’éléments défectueux. La première solution formelle fut proposée en 1982 par Leslie Lamport, Robert Shostak et Marshall Pease.
Vous l’aurez compris, dans le cas du réseau Bitcoin, il s’agit de s’assurer que tous les nœuds maintiennent la comptabilité monétaire du système, en suivant un ensemble de règles communes (consensus), tout en se préservant des attaques diverses ou des pannes.
C’est ici qu’entre en jeu la preuve de travail. Cet algorithme est tout simplement la meilleure solution qui ait été trouvée au problème des généraux byzantins. D'autres ont depuis vu le jour.
La preuve de travail permet de s’assurer que le réseau Bitcoin maintiendra un consensus autour de sa comptabilité de référence, même en présence de 50 % d’acteurs malicieux, en exigeant une preuve objective et vérifiable par tous du travail fourni. En effet, pour dupliquer ou corrompre une transaction validée par la preuve de travail, il faudrait pouvoir produire au moins la même quantité de travail. Et cela serait moins rentable que de sécuriser le réseau !
C'est en partie ici que réside le génie de Satoshi Nakamoto. En plus des mathématiques pures, il introduit dans l'équation une variable supplémentaire : la cupidité humaine. Grâce à un savant mélange d’incitations économiques, attaquer le réseau devient si coûteux qu’il est beaucoup plus rentable de le sécuriser. Cela fait directement appel aux notions de théorie des jeux, bien connues des économistes.
Les risques de la preuve de travail
L'attaque des 51 %
Pour qu’un groupe de mineurs puisse espérer pouvoir modifier la blockchain à son avantage, il reste une solution : détenir au moins 51 % de la puissance de calcul totale.
Ainsi, ces derniers pourraient décider de refuser des transactions effectuées par d’autres utilisateurs, ce qui lui donnerait un droit de censure sur le réseau. Il pourrait aussi effectuer des doubles dépenses. À terme, il pourrait produire une chaîne de blocs plus longue que celle de ses concurrents, qui serait ainsi celle de référence.
Heureusement, si cette attaque est dans l'absolu possible, il y a peu de chance que cela se produise dans la pratique.
D'une part, le coût d’achat de matériel ainsi que celui de l’énergie nécessaire pour le minage est tellement élevé, qu’il n’y a aucun intérêt (économique) à le faire. Des estimations faites en 2018 montrent que le coût d'une telle attaque menée pendant 10 jours aurait coûté environ 1,4 milliard de dollars (énergie et matériel compris). Le hashrate total était alors seulement de 30 millions de TH/s.
Aujourd’hui, avec près de 650 millions de TH/s, l'attaque coûterait plus de 3,4 millions de dollars par... heure ! Et on ne parle que d'électricité, la majorité du coup étant lié aux machines et infrastructures.
En effet, la logistique aussi bien matérielle, énergétique qu'humaine serait complexe à mettre en place. Il faudrait par exemple acheter, fabriquer ou récupérer des milliers de machines de minage, assurer leur alimentation en électricité, les installer et les brancher sur le réseau.
En d'autres termes, seul un État ou une riche entité motivée par la « destruction » de Bitcoin pourrait envisager une telle attaque, à condition d'accepter de perdre l'argent dépensé.
Si aujourd'hui il est beaucoup moins probable que cela se produise à nouveau, en 2014, la pool de minage GHash a détenu plus de 51 % du hashrate total du réseau pendant quelques heures. Elle a choisi de maintenir la sécurité plutôt que de produire des transactions frauduleuses.
Enfin, même si une entité arrivait à réussir une attaque 51 %, le reste du réseau pourrait choisir de « forker » la chaîne et reprendre le cours des choses à l'état du bloc précédant l'attaque, tout en excluant le groupe de mineurs malhonnêtes. Cela causerait des dégâts à courts termes, mais ne détruirait pas réellement Bitcoin.
Le 15 aout 2010, la communauté a déjà utilisé un fork pour remédier à une faille qui avait été exploitée pour produire 184 milliards de bitcoins ex-nihilo.
Dans cette vidéo, le célèbre expert et défenseur de Bitcoin Andreas M. Antonopoulos résume bien le risque associé à l'attaque 51 % et l'absence d'intérêt pour un acteur de choisir cette voie.
La centralisation du minage
Vous l'avez compris, les mineurs jouent un rôle essentiel au sein du réseau Bitcoin. Pour que le réseau reste décentralisé, il ne doit pas y avoir de monopole et les mineurs doivent rester en concurrence.
Ceci est un défi permanent, car tous cherchent des sources d’énergie peu coûteuses, afin de maximiser leurs profits. Certains pays sont ainsi susceptibles d'attirer et de concentrer l'activité minière, comme c'était le cas en Chine il y a quelques années.
Par ailleurs, l’augmentation de la difficulté de minage rend élevé le coût des machines efficaces. Ceci crée une barrière à l’entrée qui réduit grandement le nombre d'acteurs capables de participer.
Comme nous l'avons évoqué précédemment, pour faire face à ces barrières et augmenter leurs chances de valider les blocs, les mineurs se regroupent et combinent leurs ressources de calcul. Ils forment ce qu'on appelle des pools de minages.
Comme vous pourrez le constater sur les graphiques ci-dessous, il existe un risque majeur de centralisation lié aux pools de minage. Actuellement, ce sont seulement deux pools qui extraient la majorité des blocs Bitcoin : Foundry USA et Antpool. Si leur poids tend à changer avec le temps, le nombre d'acteur reste très limité comme le montre ci-dessous l'évolution de la distribution du hashrate entre les 6 derniers mois et les 3 dernières années à date de mi-mars 2023.
Au niveau de la répartition géographique, vous pouvez constater que la décentralisation est encore loin d'être optimale. Les États-Unis dominent suivis de la Chine et du Kazakhstan.
Quelques données sur le minage
Le coût et la rémunération du minage
Pour avoir une chance de trouver le nonce menant à un hash valide pour le réseau, il faut être très chanceux ou utiliser du matériel informatique puissant.
Au départ, un simple ordinateur personnel (celui de Nakamoto, par exemple) suffisait à miner. La puissance du processeur était suffisante. Puis avec le temps, la difficulté augmentant, il a été nécessaire d'utiliser des GPU, des cartes graphiques.
Aujourd'hui ce n'est plus possible, l'algorithme de minage nécessite du matériel puissant et spécifique, que l'on appelle des ASICs.
Au moment de la rédaction de cet article, il est par exemple possible de se procurer un Antminer S7 pour 5 780 euros développant une puissance de calcul de 9,5GH/S pour une puissance 3 425 W.
Les profits qu'il est possible d'en tirer dépendent de trois facteurs essentiels : le prix de l'électricité, le cours du bitcoin et le nombre de bitcoins remis comme récompense de bloc. Pour rappel, cette récompense est divisée par 2 tous les 4 ans.
Vous trouverez ci-dessous l'évolution des revenus des mineurs en dollars américains depuis 2010.
À l’instar de ceux qui gagnent à la loterie, il arrive assez fréquemment que des mineurs isolés avec une faible puissance de calcul parviennent à valider un bloc. C'est alors le jackpot pour eux !
L'évolution de Bitcoin (avec par exemple l'arrivée des Ordinals) peut aussi amener les utilisateurs à devoir payer des frais importants pour valider leurs transactions, qui pourraient alors constituer la principale motivation économique des mineurs s'ils dépassent les récompenses de blocs.
La consommation énergétique
Les calculs effectués par les mineurs entraînent une consommation énergétique importante, qui augmente avec l'adoption du réseau et la difficulté du minage, comme vous pouvez le constater sur le graphique ci-dessous (ligne orangée).
C'est l'un des plus gros inconvénients de la preuve de travail, largement mis en avant par les détracteurs de Bitcoin de façon plus ou moins justifiée.
En mars 2024, au moment de l'écriture de ces lignes, la consommation annualisée du réseau était estimée par l'Université de Cambridge à un total de 180,03 TwH.
Si vous n'êtes pas habitué à travailler avec l'électricité, ce chiffre risque de ne pas être très parlant. Afin de le rendre plus tangible, essayons de le comparer à d'autres utilisations de l'électricité, dont les données sont là aussi tirées de l'Université de Cambridge.
Selon l'Université de Cambridge, Bitcoin consommerait 0,21 % de l'énergie et 0,55 % de l'électricité produite dans le monde.
Bitcoin consommerait davantage d'électricité que l'extraction minière de l'or.
Cependant, ce chiffre peut être mis en perspective en comparant Bitcoin avec d'autres secteurs.
Une étude menée en 2023 montre par ailleurs que le minage de bitcoin est le secteur industriel qui utilise le plus d'énergies renouvelables, et qui tend le plus a s'améliorer avec le temps. Vous pouvez voir sur le graphique ci-dessous que la part d'énergie verte représente plus de la moitié du total avec 52,6 %.
Sur la simple base de ces données, l'impact énergétique de Bitcoin peut sembler excessif. Ces dernières sont en revanche contestées par beaucoup, étant en réalité très complexe d'en obtenir avec précision concernant le minage de bitcoin. Ce sujet est en effet éminemment complexe et ne peut être évalué ou commenté à partir d'une simple consultation de données arbitraires.
La consommation énergétique du minage fait l'objet de nombreux clichés que nous décortiquerons dans un prochain article. Mais en attendant, nous vous proposons de lire l'analyse très complète d'Alexandre Stachtchenko intitulée « Bitcoin : une solution contre-intuitive au changement climatique ».
Satoshi Nakamoto, de son côté, avait très tôt commenté la question de la consommation énergétique du Bitcoin et sa conclusion était déjà pleine de bon sens :
« C'est la même chose pour l'or et les mines d'or. Le coût marginal de l'extraction de l'or tend à rester proche du prix de l'or. L'extraction de l'or est un gaspillage, mais ce gaspillage est bien inférieur à l'utilité d'avoir de l'or comme moyen d'échange.
Je pense qu'il en sera de même pour le bitcoin. L'utilité des échanges rendus possibles par Bitcoin dépassera de loin le coût de l'électricité utilisée. Par conséquent, l'absence de Bitcoin serait un gaspillage net. »
Satoshi Nakamoto
Comme nous le verrons dans les Chapitres suivants, d'autres blockchains comme Ethereum ont fait le choix de passer du mécanisme de consensus par preuve de travail à un mécanisme de consensus par preuve d'enjeu. Beaucoup moins énergivore, il présente cependant d'autres inconvénients qui semblent totalement incompatibles avec la proposition de valeur de Bitcoin.
Ainsi, la preuve de travail est un mécanisme qui a fait ses preuves, rendant le réseau Bitcoin sécurisé, sa blockchain immuable et les attaques coûteuses et peu probables.
Si vous êtes parvenus à lire et comprendre l'ensemble de cet article : félicitations ! Vous venez de faire un pas important dans la compréhension de Bitcoin.
Maintenant que le mécanisme de consensus de Bitcoin vous est familier, vous pouvez continuer votre découverte en vous rendant sur l'article suivant afin de comprendre comment fonctionne une transaction sur ce réseau.