Que signifie la preuve de travail?
La preuve de travail décrit un système qui nécessite un effort non négligeable mais réalisable afin de dissuader les utilisations frivoles ou malveillantes de la puissance de calcul, telles que l'envoi de courriers indésirables ou le lancement d'attaques par déni de service. Le concept a été adapté à l'argent par Hal Finney en 2004 grâce à l'idée de «preuve de travail réutilisable». Après son introduction en 2009, le bitcoin est devenu la première application largement adoptée de l'idée de Finney (Finney a également été le destinataire de la première transaction bitcoin). La preuve de travail constitue également la base de nombreuses autres crypto-monnaies.
Explication de la preuve de travail
Cette explication se concentrera sur la preuve de travail car elle fonctionne dans le réseau bitcoin. Le Bitcoin est une monnaie numérique qui s'appuie sur une sorte de grand livre distribué appelé «blockchain». Ce registre contient un enregistrement de toutes les transactions bitcoin, organisées en "blocs" séquentiels, de sorte qu'aucun utilisateur n'est autorisé à dépenser deux fois ses avoirs. Afin d'éviter toute falsification, le grand livre est public ou «distribué»; une version modifiée serait rapidement rejetée par d'autres utilisateurs.
La façon dont les utilisateurs détectent la falsification dans la pratique consiste à utiliser des hachages, de longues chaînes de chiffres qui servent de preuve de travail. Mettez un ensemble de données donné via une fonction de hachage (le bitcoin utilise SHA-256), et il ne générera qu'un seul hachage. Cependant, en raison de «l'effet d'avalanche», même une infime modification d'une partie des données d'origine entraînera un hachage totalement méconnaissable. Quelle que soit la taille de l'ensemble de données d'origine, le hachage généré par une fonction donnée aura la même longueur. Le hachage est une fonction à sens unique: il ne peut pas être utilisé pour obtenir les données d'origine, uniquement pour vérifier que les données qui ont généré le hachage correspondent aux données d'origine.
Générer n'importe quel hachage pour un ensemble de transactions bitcoin serait trivial pour un ordinateur moderne, donc afin de transformer le processus en «travail», le réseau bitcoin définit un certain niveau de «difficulté». Ce paramètre est ajusté de sorte qu'un nouveau bloc soit "miné" - ajouté à la blockchain en générant un hachage valide - environ toutes les 10 minutes. La définition de la difficulté est accomplie en établissant une "cible" pour le hachage: plus la cible est basse, plus l'ensemble de 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 longue chaîne de zéros: le hachage du bloc # 429818, par exemple, est 000000000000000004dd3426129639082239efd583b5273b1bd75e8d78ff2e8d. Ce bloc contient 2 012 transactions impliquant un peu plus de 1 000 bitcoins, ainsi que l'en-tête du bloc précédent. Si un utilisateur modifiait un montant de transaction de 0, 0001 bitcoin, le hachage résultant serait méconnaissable et le réseau rejetterait la fraude.
Puisqu'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 en dessous de la cible? Ils modifient l'entrée en ajoutant un entier, appelé nonce ("nombre utilisé une fois"). Une fois qu'un hachage valide est trouvé, il est diffusé sur le réseau et le bloc est ajouté à la blockchain.
L'exploitation minière est un processus compétitif, mais il s'agit plus d'une loterie que d'une course. En moyenne, quelqu'un génère une preuve de travail acceptable toutes les dix minutes, mais qui ce sera à la conjecture de quiconque. Les mineurs se regroupent pour augmenter leurs chances d'exploiter des blocs, ce qui génère des frais de transaction et, pour une durée limitée, une récompense des bitcoins nouvellement créés.
La preuve de travail rend extrêmement difficile de modifier n'importe quel aspect de la blockchain, car une telle modification nécessiterait de réexaminer tous les blocs suivants. Cela rend également difficile pour un utilisateur ou un groupe d'utilisateurs de monopoliser la puissance de calcul du réseau, car la machinerie et la puissance nécessaires pour exécuter les fonctions de hachage sont coûteuses.
