Hash et Preuve de Travail : quelques explications

Avant de lire cette explication où nous aborderons les détails technique du hash et du minage pour le Bitcoin, nous vous conseillons d’être familier avec le concept de blockchain. Si vous souhaitez vous rafraîchir la mémoire, vous pouvez lire cette page.

Pour ces explications, nous prendrons en exemple Bitcoin par simplicité & primauté historique.

La Preuve de Travail est un mécanisme de consensus. Elle sert à coordonner les mineurs, pour sélectionner celui qui aura le droit d’ajouter un nouveau bloc à la blockchain. Dans la pratique, les mineurs maintiennent du matériel informatique dans l’espoir de remporter cette loterie régulièrement, puisqu’il y a un tirage toutes les 10 minutes. Ils cherchent “le bon hash“.

Qu’est-ce qu’un hash ?

Une fonction de hachage est un outil mathématique utilisé pour prendre une empreinte numérique d’un jeu de donnée ( textes, fichiers ou autres ). L’intérêt des fonctions de hachage est que cette opération n’est pas réversible : avec une empreinte, on peut vérifier l’intégrité d’un jeu de données, mais on ne peut pas le reconstituer. Une fonction de hachage parfaite ne génère jamais de collision. C’est-à-dire que la seule manière d’avoir 2 fois la même empreinte, c’est donc d’avoir exactement deux fois le même jeu de donnée.

Quelques exemples :

fonction de hachage; hash
Exemples de hachages de textes par la fonction md5;
(a) le texte utilisé est une version libre de Vingt mille lieues sous les mers ;
(b) la version modifiée est le même fichier texte, le 10e caractère de la 1000e ligne ayant été remplacé par le caractère “*”.
source : https://fr.wikipedia.org/wiki/Fonction_de_hachage

Un hash md5 fait toujours 32 caractères ( 128 bits ), et vous remarquerez que la moindre modification dans un livre entier génère une empreinte complètement différente.

Dans le cas de Bitcoin, l’algorithme n’est pas MD5, mais SHA256, et un hash SHA256 fait toujours 64 caractères.

Mais quel est le rapport avec Bitcoin ?

Comprenez bien ce détail : si plus de mineurs participent au réseau, la durée pour trouver un bloc se trouve alors réduite. Il faut donc que le réseau s’adapte à la puissance de calcul, c’est la difficulté.

Les mineurs cherchent le hash qui est une empreinte des transactions à ajouter au bloc actuel, et s’ajoute à ça une difficulté supplémentaire, qui sert à conserver ce délai de 10 minutes entre chaque bloc.

La difficulté

Prenons par exemple le bloc numéro 717172. Il a été miné le 4 Janvier 2022 à 16h19.
Son hash est 00000000000000000008601d38dc4a5402bbda9238d4b4f10d20efafac46b013

Le début du hash, ces nombreux zéros : c’est la difficulté. Chaque mineurs choisis un nombre arbitrairement, et espèrent qu’en ajoutant ce “nonce” aux transactions du bloc actuel, le résultat de la fonction de hash commence par X zéros.

Si le résultat n’a pas le nombre de zéro attendus, alors le bloc est rejeté et il faut réessayer avec un autre nonce.

Le matériel dédié au minage du BTC est spécifique, il est très coûteux & très énergivore, et génère des milliards de hashs par secondes.

La Preuve d’Enjeu ( proof of stake ) est une alternative des millions de fois moins énergivore.