Qu’est-ce qu’une preuve de travail (proof of work) ?

Les e-mails

Une preuve de travail (en anglais proof of work) est une entité informatique qui a été difficile de produire – parce que cela a coûté de l’argent, parce que cela a pris beaucoup de temps – en vue de satisfaire des exigences particulières. Cette entité doit être créée de façon à ce qu’il ne soit pas nécessaire de prendre du temps pour vérifier qu’elle corresponde auxdits critères : le but de la preuve de travail est qu’il n’y ait justement plus besoin de prendre du temps pour vérifier ces choses.

Pour créer une preuve de travail, l’on peut utiliser un processus aléatoire avec de faibles probabilités, de sorte qu’il faille passer par une grande quantité d’essais avant de parvenir à une preuve de travail satisfaisante. Bitcoin utilise la preuve de travail dite « Hashcash ».

Une des applications de Hashcash est de vérifier que telle ou telle adresse e-mail ne soit pas du spam. Pour ce faire, on demande au propriétaire de l’adresse e-mail de fournir une « preuve de travail » qui requiert une action manuelle de sa part. Cela n’est pas ardu pour un être humain, mais pour un algorithme qui génère automatiquement beaucoup d’adresses email, cela requerrait énormément d’efforts de parvenir à fournir la preuve de travail nécessaire.

 

les blocs de la blockchain

La même idée est utilisée pour Bitcoin, précisément pour la génération de nouveaux blocs de la blockchain. Cette preuve de travail valide un bloc comme ayant été correctement construit, comme ayant correctement archivé toutes les transactions Bitcoin. À la preuve de travail correspond une difficulté qui est ajustée tous les 2016 blocs de sorte que le taux de création d’un nouveau bloc reste aux alentours de 10 minutes.

Créer un nouveau bloc étant carrément un exploit tant il est peu probable d’y parvenir (c’est pour cela que l’on parle de loterie concernant le minage de blocs), quel ordinateur sur le réseau Bitcoin y arrivera est parfaitement imprévisible.

Pour qu’un bloc soit jugé valide, il faut que son hachage soit inférieur ou égal à la valeur cible. Si c’est le cas, alors cela signifiera que chaque bloc a été correctement généré – pour rappel, chaque nouveau bloc de la blockchain doit contenir les informations de tous les blocs précédents. Le système de preuve de travail le plus communément utilisé est le SHA-256, qui repose sur une système de cryptage à 256-bit.

 

La valeur cible

La valeur cible est un nombre exagérément grand de 256-bit que se partagent tous les clients Bitcoin. Le hachage dit SHA-256 pour l’en-tête d’un bloc d’un être inférieur ou égal à la cible actuelle du réseau afin qu’il soit accepté par ce dernier. Plus la valeur cible est basse, plus il est difficile de générer un bloc.

Générer un bloc n’est pas vraiment une équation à résoudre mais plutôt une loterie. Chaque hachage fournit un chiffre aléatoire entre 0 et la valeur maximal d’un nombre à 256-bit (dont la grandeur est impossible à imaginer, littéralement). Si votre hachage est inférieur (ou égal) à la valeur cible, vous « gagnez » : vous créez un nouveau bloc, créez des bitcoins et en recevez comme récompense.

Si votre hachage est supérieur à la valeur cible, alors l’on dit que vous incrémentez un nonce. Ce jargon étrange signifie qu’un nombre vide d’informations (comme ça il ne change pas les données des blocs) est ajouté à votre hachage ; cette action a pour effet de changer complètement le chiffre de hachage. Tant que vous ne trouvez pas le bon nombre, vous allez continuez à incrémenter ce nonce.

Chaque 2016 blocs (ce qui prend, en conditions optimales, 2 semaines), chaque client Bitcoin compare le temps réel que cela a pris pour générer ces blocs avec le temps idéal de 2 semaines, et va modifier la valeur cible par un pourcentage équivalent à la différence entre les deux temps. Cela rend la preuve de travail plus, ou moins difficile. Il n’y a cependant jamais de changement supérieur à un facteur de 4 par chaque révision de difficulté pour éviter de trop grands écarts.

À lire (impérativement) aussi :

  1. Que signifie la « difficulté » ?
  2. Qu’y a-t-il dans un « block » de la blockchain ?
  3. Comment le minage fonctionne-t-il ?
  4. Qu’est-ce qu’une preuve d’enjeu (proof of stake ) ?