Le minage c’est le procédé par lequel les transactions Bitcoin sont sécurisées. A cette fin les mineurs effectuent avec leur matériel informatique des calculs mathématiques pour le réseau Bitcoin. Comme récompense pour leurs services, ils collectent les bitcoins nouvellement créés ainsi que les frais des transactions qu’ils confirment. Elle est divisée par deux tous les quatre ans environ. Le 12 mai 2020 cette récompense passera à 6,25 bitcoins par bloc.
Les mineurs (ou les coopératives de mineurs) sont en concurrence et leurs revenus sont proportionnels à la puissance de calcul déployée.
« Pour décrire le minage, on pourrait utiliser l’exemple d’un gigantesque concours de sudoku où les participants recommencent une nouvelle grille dès que quelqu’un trouve une solution, et dont la difficulté s’ajuste pour qu’en moyenne une grille soit résolue toutes les dix minutes. Imaginons une grille géante de sudoku, avec plusieurs milliers de lignes et de colonnes. Il serait assez facile de vérifier qu’une grille terminée est bien remplie. Mais […] il faudra beaucoup de travail pour la terminer ! La difficulté des grilles peut être ajustée en changeant leurs tailles […], mais elles peuvent toujours être vérifiées facilement même si elles sont très grandes. Les puzzles à résoudre dans le réseau bitcoin se basent sur les hashs cryptographiques et présentent les mêmes caractéristiques que ces grilles de sudoku : ils sont très difficiles à résoudre mais il est très facile de vérifier qu’une solution est bonne, et leur difficulté peut être ajustée. » – Andreas M. Antonopoulos.
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 : l’agencement 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.
Pour optimiser leurs chances et lisser leurs gains, les mineurs se réunissent en coopératives (ou « pool »).