Comment générer les bitcoins : le minage

Bitcoin (2)
Dans le système traditionnel des monnaies fiduciaires, l’Etat imprime des billets s’il en a le besoin. Avec les bitcoins c’est différent. En effet, les bitcoins ne sont pas imprimés du tout. Les ordinateurs de partout dans le monde « minent » des bitcoins en se faisant concurrence.

Le minage, comment ça se passe ?

Les utilisateurs s’envoient mutuellement des bitcoins sur le réseau Bitcoin et ce en permanence. Cependant, à moins que quelqu’un ne tienne un registre de toutes ces transactions, il est impossible de garder une trace de tous les mouvements et achats. Le réseau Bitcoin règle ce problème en recueillant toutes les transactions faites sur un laps de temps défini sur une liste ; cela s’appelle un bloc. Les mineurs doivent alors confirmer ces transactions et les retranscrire dans un « livre de comptes ».

Ce « livre de comptes » est, en fait, une longue liste de blocs, connue sous le nom de « blockchain » ou chaîne de blocs. Cette blockchain peut être utilisée pour parcourir toutes les transactions effectuées entre toutes les adresses Bitcoin à tous les niveaux du réseau. À chaque fois qu’un nouveau bloc de transactions est créé, il est ajouté à la blockchain. Cela crée une liste de plus en plus détaillée de toutes les transactions qui s’effectuent sur le réseau Bitcoin. Pour information, une copie régulièrement mise à jour est transmise à tous ceux qui y participent.

le minage

Ce registre général de toutes les transactions est tenu de façon numérique et est digne de confiance. Comment s’assurer que la blockchain fonctionne correctement et qu’elle n’a pas été truquée ? C’est là que les mineurs interviennent.

Lorsqu’un bloc de transactions est créé, les mineurs le traitent. Ils prennent l’information qui s’y trouve et y appliquent une formule mathématique en transformant le tout en tout à fait autre chose. Cet « autre chose » est beaucoup plus court et ressemble à une séquence aléatoire de lettres et de chiffres, que l’on appelle le hash, qui est en fait une signature électronique. Ce hash est stocké avec le bloc, à la fin de la blockchain.

Le hash a quelques caractéristiques intéressantes. Il est simple de produire un hash à partir d’un paquet de données d’un bloc Bitcoin, mais il est pratiquement impossible, rien qu’en regardant le hash de comprendre quelles données ont été utilisées pour le constituer. Et même s’il est relativement simple de produire un hash à partir d’une vaste quantité des données, chaque hash est unique. Il suffit de changer un caractère dans le bloc pour que le hash change complètement à son tour.

Les mineurs n’utilisent pas juste les transactions qui se trouvent dans un bloc pour générer le code. D’autres données sont également nécessaires pour ce procédé. Un de ces types de données constitue le hash du bloc précédent stocké dans la blockchain.

Chaque nouveau bloc contient alors le hash du bloc qui précède et cela crée une version électronique d’un sceau de cire. Ce hash confirme que ce bloc, ainsi que tous ceux qui suivent sont légitimes, car si vous le falsifiez cela ne peut passer inaperçu.

Miner des bitcoins
Si vous essayez de falsifier une transaction en changeant le bloc qui est déjà stocké dans la blockchain, cela modifiera le hash du bloc en question. Si quelqu’un vérifie l’authenticité du bloc en y exécutant la fonction de hash, le hash serait immédiatement repéré comme différent de celui déjà enregistré dans la blockchain. Ce bloc serait détecté et classé comme faux.

Comme le hash d’un bloc est utilisé pour reproduire celui du bloc suivant dans la chaine, en trafiquant un bloc, le hash du bloc suivant serait également modifié. Donc, le hash du bloc suivant serait également erroné. Cette tendance se poursuivrait alors sur d’autres blocs de la chaine en faisant chambarder le tout.

Concurrence pour les « coins »

C’est de cette manière que les mineurs « scellent » un bloc. Ils sont tous mis en compétition les uns avec les autres et utilisent un logiciel qui permet de signer les blocs. Celui qui génère un hash et donc signe un bloc, est appelé un mineur et est rémunéré en bitcoins. De cette façon la chaine est toujours à jour et tous les utilisateurs du réseau le savent. Cela représente à la fois un avantage et pour les mineurs et pour le réseau où les transactions continuent à affluer.

Blocs de minage
Le problème alors réside dans le fait qu’il est très facile de produire un hash à partir d’un ensemble de données. Les ordinateurs font cela très bien. Cependant le réseau du Bitcoin se doit de rendre cette tâche plus difficile, sinon tout le monde pourrait produire une centaine de hash par seconde et la totalité des bitcoins pourrait être produite en quelques minutes. Le protocole Bitcoin rend cette tâche délibérément plus difficile en introduisant le concept de « preuve de travail », (proof of work).

Le protocole Bitcoin ne peut donc pas juste accepter n’importe quel hash. Il exige une certaine façon de faire. Par exemple, le hash doit commencer par un certain nombre de zéros. Cependant, il n’y a pas moyen de savoir à quoi va ressembler le hash avant de le produire et dès qu’une autre donnée est ajoutée au total, le hash est totalement modifié.

Les mineurs ne sont pas censés s’occuper des données d’une transaction dans un bloc, ils doivent transformer ces données pour produire un hash. Pour cela ils utilisent un autre type de donnée aléatoire qu’on appelle « nonce ». C’est la donnée nécessaire pour valider les transactions et créer un hash. Si le hash ne correspond pas au format requis, le « nonce » est modifié et tout est à recommencer. Il faut parfois plusieurs tentatives pour trouver le « nonce » qui fonctionne et c’est la tâche de tous les mineurs sur le réseau. C’est comme ça que les mineurs gagnent des bitcoins.