Le minage

Loading…

L’opération de minage consiste à assembler des transactions en « blocs », en ajoutant un en-tête qui contient notamment la taille du bloc, le nombre de transactions qu’il contient, la date et l’heure, une somme de contrôle (« hash ») qui empêchera toute modification du bloc et servira également d’identificateur unique au bloc, et l’identificateur du bloc précédent.

Les mineurs incluent dans leurs blocs une transaction particulière qui les crédite d’un certain nombre de bitcoins créés à cet effet, ainsi que de frais de transaction proposés par leurs émetteurs. Cette rémunération ne sera toutefois effective que si le bloc est définitivement accepté dans la chaîne de blocs par les autres nœuds. C’est cette création de monnaie qui explique l’utilisation du terme « minage », par analogie avec l’exploitation des mines d’or.

Un bloc peut contenir un nombre quelconque de transactions, typiquement entre 1000 et 2000, sans toutefois que la taille du bloc puisse dépasser 1 megabyte.

Au sein d’un bloc, les transactions sont stockées sous la forme d’un arbre de Merkle.

La somme de contrôle (ou empreinte) du bloc est calculée en appliquant deux fois successives l’algorithme de hashage SHA-256 à l’ensemble formé par les éléments suivants :

  • le numéro de version du logiciel
  • l’empreinte de l’en-tête du bloc précédent
  • la racine de l’arbre des transactions du bloc (qui est lui-même une empreinte indirecte de l’ensemble des transactions du bloc)
  • l’horodatage (temps écoulé depuis le 1er janvier 1970 0 h, en secondes)
  • la difficulté

HashFlare
Le calcul de cette empreinte est rendu particulièrement difficile en imposant qu’elle soit inférieure à une certaine valeur (la « difficulté »), donc que sa représentation binaire commence par un certain nombre de zéros. Pour cela, l’en-tête est complété par un nombre arbitraire de 32 bits appelé « nonce », qui sera intégré dans le calcul de l’empreinte.

Une propriété des algorithmes de hachage est que, même connaissant les empreintes obtenues avec certains nonces, il est impossible de déterminer la valeur de l’empreinte avec un nouveau nonce sans réexécuter l’algorithme. On ne peut donc trouver un nonce approprié que par essais successifs.

Pour une valeur donnée du nonce, la probabilité de calculer une empreinte inférieure à la difficulté est très faible, et donc de nombreuses tentatives doivent être effectuées. Entre 2014 et 2016, le nombre moyen de nonces que chaque mineur a dû tester entre chaque création de blocs est passé de 1 milliard à 200 milliards79. Comme ce calcul consiste à effectuer un très grand nombre de fois le même calcul avec des données différentes, il se prête bien au calcul parallèle.

La difficulté est réajustée tous les 2016 blocs pour tenir compte de la puissance de calcul réelle du réseau et permettre en moyenne d’ajouter un bloc toutes les 10 minutes, ce qui revient à dire que la durée probable de calcul d’une empreinte valide est de 10 minutes pour l’ordinateur ou le groupe d’ordinateurs le plus puissant du réseau.

Ce système de preuve de travail et d’enchaînement des blocs par leur empreinte rend toute altération de la chaîne de blocs impossible. Un attaquant qui souhaiterait modifier une transaction dans un bloc donné serait obligé de recalculer sa somme de contrôle et celles de tous les blocs suivants. Puisque la difficulté augmente avec le temps, ainsi que le nombre de blocs qui suivent la transaction modifiée (son degré de confirmation), le temps nécessaire à une telle modification augmente très rapidement.

Quand un mineur a construit un bloc valide dont la somme de contrôle satisfait la condition de difficulté, il le diffuse aux nœuds voisins, qui en vérifient la validité avant de le rediffuser à leur tour.

Les blocs valides sont ainsi diffusés de proche en proche à tous les nœuds du réseau, après avoir été vérifiés à chaque fois, mais sans plus pouvoir être modifiés. À partir du nonce inclus dans l’en-tête, il est facile et rapide de vérifier la validité du bloc (un parallèle simpliste peut être fait à un jeu de Sudoku : sa résolution est difficile et requiert du temps et du calcul humain mais sa vérification est très facile une fois la solution trouvée).

 

Mieux vaut-il acheter 1 bitcoin ou le miner?

Liens utiles

MyCryptoBuddy

Calculateur Nicehash

Tuto mining