Les fonctions de hachage
La preuve de travail va valider les transactions, diffuser les nouveaux blocs à la blockchain et la sécuriser. Pour valider un bloc et l’intégrer à la blockchain, les mineurs sont en compétition pour trouver en premier le résultat d’une équation complexe : le nonce (un nombre arbitraire utilisé qu’une fois).
Cependant, il est facile de tester un résultat pour savoir si l’on a trouvé la solution. Ce nombre à trouver est pseudo-aléatoire comme nous allons le voir.
Le résultat à trouver est celui d’une fonction de hachage. Il en existe plusieurs.
Pour Bitcoin, il s’agit de SHA-256. Une fonction de hachage prend en entrée une chaîne de caractère d’une taille arbitraire et la transforme en une chaîne de taille fixe (256 bits pour la SHA-256) appelée le hash (ou condensé).
Comme son nom l’indique, elle va hacher la chaîne jusqu’à ce qu’elle soit de la taille souhaitée.
Le système binaire
Un bit peut seulement prendre deux valeurs : 0 ou 1
Pour un humain normal, c’est du charabia, mais l’ordinateur lui comprend et exécute cette fonction très rapidement. C’est cette fonction que le mineur va exécuter des millions/milliards de fois jusqu’à trouver un résultat adéquat, et cela, pour chaque bloc à valider.
Le hash en sortie de fonction est une chaîne de caractères en hexadécimal.
Le système hexadécimal ?
L’alphabet hexadécimal est composé de chiffres de 0 à 9 et de lettres de a à f
- Facile et rapide à tester
- Déterministe : Une même entrée donne toujours le même hash en sortie
- Irréversible (résistante à la préimage) : il est impossible de déterminer la valeur d’entrée à partir de la valeur de sortie
- Résistante à la falsification : la moindre modification de la chaîne en entrée modifie complètement le hash en sortie. Sur l’image ci-dessus, la moindre modification (un h minuscule au lieu d’un H majuscule) sur la chaîne en entrée donne un hash absolument différent
- Résistante aux collisions : presque impossible d’avoir le même hash pour deux entrées ou plus. Il existe obligatoirement des collisions, mais il faudrait des milliers (millions) d’années ou une technologie qui n’existe pas encore pour les trouver