Qu’est-ce que la preuve de travail (PoW, Proof-of-Work) ?

8 juin 2021actualisé

La preuve de travail (PoW) décrit un système qui exige une quantité d’effort non négligeable mais réalisable afin de dissuader les utilisations frivoles ou malveillantes de la puissance informatique, comme l’envoi de spams ou le lancement d’attaques par déni de service. Le concept a ensuite été adapté à la sécurisation de la monnaie numérique par Hal Finney en 2004 grâce à l’idée de “Reusable Proofs of Work” utilisant l’algorithme de hachage SHA-256.

Après son introduction en 2009, Bitcoin est devenu la première application largement adoptée de l’idée de PoW de Finney. La preuve de travail constitue également la base de nombreuses autres crypto-monnaies, permettant un consensus sécurisé et décentralisé.

Déclarations clés

  • La preuve de travail (PoW) est un mécanisme de consensus décentralisé qui demande aux membres d’un réseau de faire des efforts pour résoudre une énigme mathématique arbitraire afin d’empêcher quiconque de jouer le système.
  • Le Proof-of-Work est largement utilisé dans le minage de crypto-monnaies, pour valider les transactions et miner de nouveaux jetons.
  • Grâce à la preuve de travail, les transactions de Bitcoin et d’autres crypto-monnaies peuvent être traitées en peer-to-peer de manière sécurisée sans avoir besoin d’un tiers de confiance.
  • La preuve de travail à l’échelle nécessite d’énormes quantités d’énergie, qui ne font qu’augmenter à mesure que d’autres mineurs rejoignent le réseau.
  • Proof-of-Stake (PoS) est l’un des nombreux mécanismes de consensus novateurs créés comme alternative à Proof-of-Work.

Comprendre la preuve de travail

Cette explication se concentrera sur la preuve de travail telle qu’elle fonctionne dans le réseau Bitcoin. Bitcoin est une monnaie numérique qui repose sur une sorte de grand livre distribué appelé “blockchain”. Ce grand livre contient un enregistrement de toutes les transactions Bitcoin, organisées en “blocs” séquentiels, afin qu’aucun utilisateur ne puisse dépenser deux fois un de ses avoirs. Afin d’éviter toute falsification, le grand livre est public, ou “distribué” ; une version altérée serait rapidement rejetée par les autres utilisateurs.

Dans la pratique, les utilisateurs détectent les falsifications grâce aux hachages, de longues chaînes de chiffres qui servent de preuve de travail. Fais passer un ensemble de données donné par une fonction de hachage (Bitcoin utilise SHA-256), et celle-ci ne générera jamais qu’un seul hachage. Cependant, en raison de l'”effet d’avalanche”, la moindre modification d’une partie des données d’origine donnera lieu à un hachage totalement méconnaissable. Quelle que soit la taille de l’ensemble des données d’origine, le hachage généré par une fonction donnée sera de la même longueur. Le hachage est une fonction à sens unique : il ne peut pas être utilisé pour obtenir les données originales, mais uniquement pour vérifier que les données qui ont généré le hachage correspondent aux données originales.

Générer n’importe quel hachage pour un ensemble de transactions Bitcoin serait trivial pour un ordinateur moderne, alors pour transformer le processus en “travail”, le réseau Bitcoin fixe un certain niveau de difficulté. Ce réglage est ajusté pour qu’un nouveau bloc soit “miné” – ajouté à la blockchain en générant un hachage valide – toutes les 10 minutes environ. Le réglage de la difficulté se fait en établissant une “cible” pour le hachage : plus la cible est basse, plus l’ensemble des hachages valides est petit et plus il est difficile d’en générer un. En pratique, cela signifie un hachage qui commence par une très longue chaîne de zéros.

La méthode Proof-of-Work a été créée à l’origine pour proposer une solution au problème croissant du spam.

Considérations particulières

Comme un ensemble de données donné ne peut générer qu’un seul hachage, comment les mineurs s’assurent-ils de générer un hachage inférieur à la cible ? Ils modifient l’entrée en ajoutant un nombre entier, appelé un nonce (“nombre utilisé une fois”). Une fois qu’un hachage valide est trouvé, il est diffusé au réseau, et le bloc est ajouté à la blockchain.

Le minage est un processus compétitif, mais il s’agit plus d’une loterie que d’une course. En moyenne, quelqu’un générera une preuve de travail acceptable toutes les dix minutes, mais on ne sait jamais qui ce sera. Les mineurs se regroupent pour augmenter leurs chances de miner des blocs, ce qui génère des frais de transaction et, pendant une période limitée, une récompense en Bitcoins nouvellement créés.

La preuve de travail rend extrêmement difficile la modification de tout aspect de la blockchain, car une telle modification nécessiterait de miner à nouveau tous les blocs suivants. Il est également difficile pour un utilisateur ou un groupe d’utilisateurs de monopoliser la puissance de calcul du réseau, car les machines et la puissance nécessaires pour réaliser les fonctions de hachage sont coûteuses.

Si une partie d’un réseau minier commence à accepter une autre Proof-of-Work, on parle de hard fork.

Exemple de Proof-of-Work

La preuve de travail exige qu’un ordinateur s’engage de façon aléatoire dans des fonctions de hachage jusqu’à ce qu’il arrive à une sortie avec la quantité minimale correcte de zéros de tête. Par exemple, le hachage du bloc #429818, miné le 16 octobre 2017, est 000000000000000000c508bc2ada8ebc62cf1c69cb66a163d9a99abad87599b6. La récompense du bloc pour ce hachage réussi était de 12,5 BTC.

Ce bloc contiendra toujours 1 768 transactions impliquant un peu plus de 1 000 bitcoins, ainsi que l’en-tête du bloc précédent. Si quelqu’un essayait de modifier le montant d’une transaction, même de 0,00001 Bitcoin, le hachage résultant serait méconnaissable et le réseau rejetterait la tentative de fraude.

FAQ sur la preuve de travail

Que signifie Proof-of-Work (preuve de travail) ?

PoW exige que les nœuds d’un réseau fournissent la preuve qu’ils ont dépensé de la puissance de calcul (c’est-à-dire du travail) afin d’obtenir un consensus de manière décentralisée et d’empêcher les mauvais acteurs de prendre le contrôle du réseau.

Comment la preuve de travail valide-t-elle une transaction cryptographique ?

Le travail lui-même est arbitraire. Pour Bitcoin, il s’agit d’itérations des algorithmes de hachage SHA-256. Le “gagnant” d’un tour de hachage, lui, agrège et enregistre les transactions du mempool dans le bloc suivant. Comme le “gagnant” est choisi au hasard, proportionnellement au travail effectué, cela incite tous les membres du réseau à agir honnêtement et à n’enregistrer que les vraies transactions.

Pourquoi les crypto-monnaies ont-elles besoin de Proof-of-Work ?

Parce qu’elles sont décentralisées et de pair à pair par conception, les blockchains telles que les réseaux de crypto-monnaies ont besoin d’un moyen de parvenir à la fois au consensus et à la sécurité. La méthode Proof-of-Work est l’une de ces méthodes qui fait qu’il est trop coûteux en ressources d’essayer de prendre le dessus sur le réseau. Il existe aussi d’autres mécanismes de preuve qui demandent moins de ressources, mais qui présentent d’autres inconvénients ou défauts, comme la preuve d’enjeu (PoS) et la preuve de combustion. Sans mécanisme de preuve, le réseau et les données qui y sont stockées seraient vulnérables aux attaques ou au vol.

Bitcoin utilise-t-il la preuve de travail ?

Oui. Il utilise un algorithme PoW basé sur la fonction de hachage SHA-256 pour valider et confirmer les transactions ainsi que pour émettre de nouveaux Bitcoins en circulation.

En quoi la Proof-of-Stake (PoS) diffère-t-elle de la PoW ?

PoS est un mécanisme de consensus qui attribue de manière aléatoire le nœud qui extrait ou valide les transactions du bloc en fonction du nombre de jetons détenus par ce nœud. Plus le nombre de jetons détenus dans un portefeuille est élevé, plus le pouvoir de minage lui est effectivement accordé. Bien que PoS soit beaucoup moins gourmand en ressources, il présente plusieurs autres défauts, notamment une plus grande chance d’attaque de 51% dans les Altcoins plus petits et des incitations à accumuler des jetons et à ne pas les utiliser.