Proof-of-work ou "preuve de travail" est une entité informatique difficile à produire (temps, consommation en puissance de calcul, argent) mais dont le résultat est facile à vérifier.
La preuve de travail est au cœur du fonctionnement du Bitcoin.
Pour créer une preuve de travail, on utilise un **processus aléatoire avec de faibles probabilités, qui nécessite un grand nombre d’essais avant de parvenir à une preuve de travail satisfaisante. **
Bitcoin utilise la preuve de travail « Hashcash », conçue par Adam Back.
L'application qui nous intéresse est la possibilité de vérifier la véracité d'une chaîne.
Pour une chaîne alphanumérique donnée, on incrémente cette chaîne d'une chaîne alphanumérique aléatoire tant que le hash de l’ensemble n'est pas inférieur à un seuil donné.
Le seuil est régulièrement mis à jour et l’intervalle moyen entre deux blocs correspond à environ 10 minutes.
On demande à l'utilisateur de fournir une « preuve de travail » qui requiert une action manuelle de sa part.
Hashcash
Le Bitcoin utilise le même mécanisme pour la génération de nouveaux blocs.
La preuve de travail valide un bloc s'il est bien construit et s'il contient bien toutes les transactions de la blockchain.
**À la preuve de travail correspond une difficulté, ajustée tous les 2016 blocs. **
Le temps de création d’un nouveau bloc est d'environ 10 minutes.
**Pour qu’un bloc soit validé, son hachage doit être inférieur ou égal à la valeur cible. **
Si c'est le cas, le bloc a été correctement généré.
Chaque nouveau bloc doit contenir les informations des blocs précédents.
Le système de preuve de travail classique est le SHA-256, système de cryptage à 256 bits.
Difficulté
La difficulté en crypto se réfère au minage de blocs.
Elle correspond à la difficulté de découvrir un nouveau bloc par rapport à la facilité maximale avec laquelle on pourrait en découvrir un.
Cette difficulté est recalculée tous les 2016 blocs en comparant le temps réel de génération de ces blocs avec le temps idéal (2 semaines).
Ensuite, il modifie la valeur cible par un pourcentage correspondant à la différence entre les deux temps.
Pour éviter des écarts trop important, Il n’y a jamais de changement supérieur à un facteur de 4 par révision.
L’un des grands intérêts est qu'en cas de fraude d'un mineur, le réseau Bitcoin dans son entier peut évaluer la validité d'un bloc en comparant la difficulté avec la difficulté du réseau en général. Difficulté qui change très souvent.
SHA-256
La valeur cible est un nombre très grand de 256 bits que se partagent tous les clients Bitcoin.
Le hachage SHA-256 pour l’en-tête d’un bloc doit être inférieur ou égal à la valeur cible du réseau.
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 maximale d’un nombre à 256 bits **
- Si le hachage est inférieur (ou égal) à la valeur cible, le mineur crée un nouveau bloc et des bitcoins. En échange, il reçoit quelques bitcoins en plus.
- Si le hachage est supérieur à la valeur cible, on dit que le mineur incrémente un nonce.
Un nonce est une fonction spéciale qui modifie le hachage en insérant des valeurs neutres dans le calcul afin de ne pas changer les données des blocs.
Conséquence : Génération d'un hachage entièrement différent.
Un nonce est incrémenté tant que bon hachage n'est pas trouvé.
Du coup, plus le nombre de mineurs grandit, plus la quantité de blocs créée va augmenter.
Et plus les blocs sont créés rapidement, plus le nombre de bitcoins de délivrés sera grand.
Ainsi, la difficulté générale du réseau augmente et diminue le temps pour créer un bloc.
Accélérer de manière trop significative le temps de création des bitcoins aura des répercussions négatives.
Une estimation a été définie dès le départ dans le protocole.
Inconvénients
Les deux reproches régulièrement fait à cet algorithme sont :
- La consommation d'électricité.
- L'attaque des 51%.
Pour gagner la loterie (le nonce), les mineurs sont obligés de tester toutes les combinaisons possibles. Pour augmenter leur probabilité, ils utilisent des machines de plus en plus puissantes (ex: ASICs).
Ce qui provoque une hausse de la demande d'énergie.
L'attaque des 51% consiste à contrôler plus de 51% de la puissance du réseau pour pouvoir modifier la blockchain.
En théorie, l'attaquant pourrait s'attribuer de la monnaie.
Ce scénario est improbable mais théoriquement pas impossible.