Que calculent les mineurs ?

Les mineurs effectuent des hashs cryptographiques (deux SHA256 successifs) sur ce qu’on appelle un entête de bloc. Pour chaque nouveau hash, le logiciel de minage utilise un nombre aléatoire différent qu’on appelle le nonce. Le nonce est une valeur entière avec 32 bits de mémoire qui lui sont alloués. Cela signifie qu’il est limité à environ 4 milliards de possibilités seulement, ce qui, avec la puissance de hachage actuel du réseau, est largement insuffisant. On ajoute donc dans le hash l’horodatage du bloc en heure Posix, constamment actualisée. Autre élément variable sur lequel les mineurs peuvent jouer : la configuration des transactions. Intégrant le numéro de bloc, l’horodatage, le nonce, les données du bloc et hachage du bloc précédent, le hash produit ressemblera à ceci :

93ef6f358fbb998c60802496863052290d4c63735b7fe5bdaac821de96a53a9a

Ce hash peut être converti dans un très long nombre. (Il s’agit d’un nombre hexadécimal, ce qui signifie que les lettres A-F sont les nombres 10-15). Afin de rendre le minage difficile, il y a ce qu’on appelle la difficulté cible. Afin de créer un bloc valide, un mineur doit trouver un hash qui est inférieur à la difficulté cible. Par exemple, si la difficulté est de :

1000000000000000000000000000000000000000000000000000000000000000

n’importe quel nombre qui débute par un zéro serait accepté et considéré comme inférieur à la cible. Exemple :

0787a6fd6e0782f7f8058fbef45f5c17fe89086ad4e78a1520d06505acb4522f

Si nous diminuons la cible à :

0100000000000000000000000000000000000000000000000000000000000000

nous avons maintenant besoin d’un nombre débutant par deux zéros :

00db27957bd0ba06a5af9e6c81226d74312a7028cf9a08fa125e49f15cae4979

Parce que la cible est un nombre encombrant avec beaucoup de chiffres, un nombre plus simple est généralement utilisé pour exprimer la cible actuelle. Ce nombre est appelé la difficulté de minage. La difficulté de minage est étalonnée sur le premier bloc créé. Ce qui signifie qu’une difficulté de 70000 signifie 70000 fois plus de puissance de calcul qu’il en a fallu à Satoshi Nakamoto pour générer le premier bloc, quand il était le seul mineur et qu’il n’utilisait que le CPU d’un ordinateur.

La difficulté change tous les 2016 blocs. Le réseau ajuste la difficulté afin que le temps de génération de ces 2016 blocs soit de 14 jours, quelle que soit la puissance de calcul déployée. C’est pourquoi la difficulté augmente donc avec la puissance du réseau.