• Loïc Morel

Qu'est-ce que le minage de bitcoins ?

Le minage ou mining de bitcoins désigne le fait de s'adonner au mécanisme de Proof-of-Work qui permet de sécuriser et de faire fonctionner le réseau distribué Bitcoin. Ce processus donne lieu à la création de nouveaux bitcoins qui viennent récompenser le mineur pour le travail fourni.


Quel est le fonctionnement technique de cette Proof-of-Work ? Qui sont les mineurs ? Comment sont créés les nouveaux bitcoins ? Je vais aborder tout cela dans ce post.


pendule



Rappel sur le fonctionnement du réseau.


Pour rappel, le réseau Bitcoin est complètement distribué. C'est-à-dire qu'il ne fonctionne pas avec un serveur centralisé, comme la majorité des autres systèmes que vous connaissez, mais avec des dizaines de milliers de nœuds, qui sont à la fois client et serveur. Tous ces nœuds sont des ordinateurs qui hébergent la base de données distribuée, qui se synchronisent ensemble et qui font un consensus sur les règles de Bitcoin. Toutes les transactions passées sont ainsi sauvegardées dans un registre unique et distribué nommé la "chaîne de preuve de travail" (parfois également nommé "block chain").


Lorsqu'un utilisateur veut réaliser une transaction sur le réseau, il va la construire, la signer, puis la transférer à un nœud du réseau. Le nœud qui reçoit la transaction la vérifie puis il la transmet aux autres nœuds du réseau qui font de même. La transaction se diffuse ainsi dans le réseau mais n'est pas encore considérée comme confirmée. Pour qu'elle le soit, il faut qu'elle soit ajoutée à un bloc sur la chaîne de preuve de travail. En attendant, elle est dans ce qu'on appelle la Mempool, comme un espace virtuel où l'on regroupe toutes les transactions en attente.


Schéma du chemin d'une transaction

Astuce : Pour qu'une transaction soit considérée comme totalement validée et irréversible, il est conseillé d'attendre 6 confirmations, c'est-à-dire 6 blocs.



Les nœuds miniers.


Les nœuds miniers ou mineurs sont avant tout des nœuds classiques. En plus de leur rôle de nœud, ils ont la spécificité de participer au mécanisme de Proof-of-Work (preuve de travail).


Leur objectif va donc être de prendre les transactions en attente dans la Mempool et de les inclure dans un bloc.


Pour la réalisation de cet objectif, les mineurs perçoivent une récompense. Cette récompense est unique pour chacun des blocs et vient récompenser le mineur qui a trouvé en premier un bloc valide. Elle est composée de :

  • La récompense coinbase : Cette récompense représente la création de nouveaux bitcoins pour payer le mineur gagnant.

  • Les frais de transaction : Tous les frais engagés par toutes les transactions incluses dans le bloc valide.


Récompense coinbase + frais de transaction


Les mineurs doivent avoir une incitation à participer à ce mécanisme puisque tout cela est très coûteux. La participation au mécanisme de Proof-of-Work demande une grande puissance de calcul. Les mineurs vont donc devoir investir dans des ordinateurs spécialisés onéreux qui utilisent de l'électricité : des ASICs.


Malgré que l'accès à ce mécanisme soit totalement libre, miner du bitcoin ne s’improvise pas. Cela nécessite des moyens considérables si l'on veut être rentable. C’est pourquoi aujourd’hui, la grande majorité des mineurs sont des entreprises spécialisées.


Afin de garantir des revenus récurrents, beaucoup de mineurs choisissent de réunir leurs forces dans des pools de minage. Ils mettent alors en commun leur puissance de calcul et partagent les récompenses au prorata de la puissance fournie par chacun au groupe.




Le Halving.


La récompense coinbase est un montant fixe déterminé par le protocole. En 2021, son montant est de 6.25 bitcoins par bloc validé. Ainsi, chaque mineur qui trouve un bloc valide touche en récompense les frais des transactions + 6.25 bitcoins tout neufs.


Cette récompense est divisée par 2 tous les 210 000 blocs (environ tous les 4 ans). Cet événement est appelé "Halving". Ainsi, en 2009 à la création de Bitcoin, la récompense coinbase était de 50 bitcoins par bloc trouvé, en 2012 elle est passée à 25 bitcoins, en 2016 à 12.5 bitcoins et puis en 2020 à 6.25 bitcoins.


La récompense coinbase s’arrêtera aux alentours de l’année 2140 lorsque la masse monétaire totale de bitcoins sera environ égale à 21 millions d’unités. Les mineurs ne seront alors plus que rémunérés par les frais des transactions des utilisateurs.




Réalisation d'un bloc et Proof-of-Work.


Mais alors pourquoi il y a-t-il besoin de machines si spécifiques pour miner du bitcoin ? Et comment fonctionne concrètement le mécanisme de Proof-of-Work ?




La chaîne de blocs.


Pour rappel, les mineurs travaillent à partir d'un registre unique distribué nommé la chaîne de blocs. Toutes les transactions passées sont enregistrées dans cette base de données et classées par blocs. Tous ces groupes de transactions se mettent les uns après les autres, dans l'ordre chronologique, et sont dépendants du bloc qui les précède. Le protocole Bitcoin a pour objectif qu'un nouveau bloc soit publié toutes les 10 minutes.


Pour que cette dépendance entre les blocs ait lieu, chaque nouveau bloc doit inclure dans son entête le hash du bloc précédent. Ainsi, si quelqu'un essaie de tricher en modifiant un bloc dans le passé, tous les blocs suivants seront complètement différents. Un tricheur devrait donc recalculer tous les hash valides des blocs suivants, ce qui lui demanderait une puissance de calcul phénoménale.


Schéma dépendance des blocs
Source : Bitcoin: A Peer-to-Peer Electronic Cash System, Satoshi Nakamoto (White Paper)


Le mineur qui participe à la Proof-of-Work va donc piocher dans les transactions qui sont en attente dans la Mempool et commencer à fabriquer un bloc candidat. Comme dans le schéma ci-dessous, il va ajouter les transactions les unes après les autres dans son bloc candidat.


Schéma constitution d'un bloc
Ceci est un schéma, en réalité on peut évidemment entrer bien plus que 6 transactions dans un bloc.

Astuce : Les mineurs choisissent en priorité les transactions avec le plus de frais. Si vous augmentez vos frais de transaction, votre transaction sera validée plus rapidement.

A ce moment-là, notre mineur n'est évidemment pas tout seul. Des milliers d'autres mineurs sont également en train de fabriquer chacun leur propre bloc candidat et chacun se prépare pour la compétition qui mènera à la récompense du bloc validé. Comme les mineurs sont libres de choisir leurs transactions, les blocs candidats peuvent être chacun différent les uns des autres.




La composition d'un bloc.


Si l'on veut être plus précis, un bloc n'est pas seulement un agglomérat de transactions. Il est composé de diverses informations. Ces informations sont divisées en deux sous-parties : L'arbre de Merkle et l'entête du bloc.


L'arbre de Merkle (ou arbre de hachage) regroupe l'ensemble des transactions choisies par le mineur. Toutes ces données sont structurées en arbre de Merkle de manière à ce que l'on puisse les vérifier facilement sans forcément avoir accès aux données de base. Cette structure, au sein de Bitcoin, va permettre de gagner énormément de place dans la base de données en chaîne de blocs, tout en pouvant vérifier facilement et rapidement chaque transaction.


Cet arbre de Merkle va créer une racine de Merkle qui sera un condensat de toutes les transactions présentes dans cet arbre. Cette racine demande donc très peu de place par rapport à la place initialement demandée par toutes les transactions incluses.


Arbre de Merkle
Tx = Transaction

La deuxième sous-partie, l'entête de bloc, regroupe les informations suivantes :

  • Le hash de l'entête de bloc du bloc précédent.

  • L'horodatage ou timestamp qui permet d'indiquer la date et l'heure de génération du bloc.

  • Le facteur de difficulté.

  • Le nonce.

  • Et la fameuse racine de Merkle issue de notre arbre de Merkle.


Schéma constitution entête de bloc



Proof-of-Work.


Pour rappel, l'objectif de Bitcoin est de produire un bloc seulement toutes les 10 minutes, de façon régulière et stable. Mais cela doit se faire sans l'intervention d'une autorité centrale puisque Bitcoin est complètement distribué. Pour arriver à ce résultat, Bitcoin utilise le mécanisme de Proof-of-Work.


L'objectif de la Proof-of-Work va être d'une part de protéger le réseau Bitcoin face à des actes malveillants et des attaques informatiques : notamment des spams et attaques DDoS. Et d'autre part, cela va permettre de mettre en place un système d'horodatage régulier, laissant le temps aux dizaines de milliers de nœuds composant le réseau de se synchroniser. Vous l'aurez compris, c'est de là que vient le nom de Pandul.


Nous avons donc déjà vu comment chaque mineur crée son bloc candidat. Pour qu'un bloc candidat soit validé par le réseau, il faut ensuite que le hash de son entête de bloc soit inférieur au facteur de difficulté.


Le mineur va donc prendre l'entête de son bloc candidat, il va la passer dans l'algorithme de hachage SHA256 deux fois (double hachage). Si le résultat qui en découle est inférieur au facteur de difficulté, le bloc est validé et le mineur empoche la récompense.


Schéma de la recherche d'un hash valide


Si le résultat n'est pas valide, le mineur va modifier le Nonce. Le Nonce est comme un nombre que le mineur peut modifier librement dans son bloc candidat. Une fois le Nonce modifié, l'entête de bloc sera également modifiée. Le mineur calcule alors de nouveau le hash, qui sera différent du précédent. Si ce nouveau hash est inférieur au facteur de difficulté, le bloc est validé. Sinon, le mineur recommence encore et encore à modifier le Nonce et vérifie le résultat jusqu'à qu'un bloc valide soit trouvé.


Schéma de la modification des Nonces


Tous les mineurs font ce calcul en même temps, ils sont donc en compétition. Le premier mineur qui trouve un haché de son bloc candidat inférieur au facteur de difficulté transmet son bloc au réseau et gagne la récompense coinbase et les frais de transaction de son bloc.


Schéma de diffusion du nouveau bloc valide


Vous avez donc compris que, contrairement à ce qui est dit dans beaucoup d'articles qui parlent du minage de bitcoins, ce processus n'est pas un calcul très complexe. On parle plutôt ici d'un problème résolu par tâtonnement.


Les ASICs, ces ordinateurs spécialisés dans le minage de bitcoins, sont en réalité simplement des machines optimisées pour réaliser ce mécanisme de Proof-of-Work. Elles vont être capables de calculer très rapidement le hash de l'entête du bloc, grâce à l'algorithme de hachage SHA256, et de tester un très grand nombre de possibilités. Dans ce schéma, plus vous avez un ordinateur puissant, plus vous testerez de possibilités et plus vous aurez de chances de trouver un bloc valide (et donc d'empocher la récompense).




Le facteur de difficulté.


Lorsque l'on a compris ce mécanisme, on comprend que de façon probabiliste, au plus il y a de mineurs, au plus il y a de chances qu'un bloc valide soit trouvé rapidement. Cela peut être problématique puisque, pour rappel, le réseau Bitcoin doit avoir un bloc créé toutes les 10 minutes. C'est là qu'intervient le facteur de difficulté.


Le facteur de difficulté est un nombre de 256 bits. Il est utilisé dans le processus de validation d'un bloc. Pour qu'un bloc soit validé, le hash de son entête doit être inférieur au facteur de difficulté.


Ce facteur de difficulté est donc un outil d'ajustement. En le modifiant, on modifie en termes de probabilité le temps nécessaire pour calculer un hash valide. En effet, si l'on baisse le facteur de difficulté alors cela augmente la difficulté du minage, et inversement, si l'on augmente le facteur de difficulté alors on baisse la difficulté du minage.


Pour illustrer et simplifier, le mécanisme de minage est un peu comme un jeu de cartes ou l'objectif du joueur (le mineur dans notre cas) est de trouver une carte (trouver un hash de l'entête) inférieur à la carte cible imposée par le maître du jeu (facteur de difficulté). Je vous présente alors un éventail du jeu de cartes, sans que vous puissiez voir les cartes, et je vous demande de piocher une carte inférieure au roi. Si cette carte n'est pas valide, vous pouvez la poser et en piocher une autre jusqu'à que vous tombiez sur une carte inférieure au roi. Vous allez alors sûrement trouver une carte valide très rapidement. Par contre, si je vous demande de trouver une carte inférieure au 3, vous allez sûrement passer plus de temps avant de tomber sur une carte valide.


Le minage de bitcoins fonctionne de la même façon. Lorsque beaucoup de mineurs participent au réseau, les blocs vont être trouvés trop rapidement, le réseau Bitcoin abaisse alors le facteur de difficulté afin de revenir à la norme : 1 bloc / 10 minutes. Et inversement, si beaucoup d'ordinateurs se déconnectent en même temps, les blocs vont être trouvés trop lentement, le réseau augmente alors le facteur de difficulté.


Concrètement ce facteur de difficulté est calculé par les nœuds du réseau et mis à jour tous les 2016 blocs. C'est-à-dire toutes les deux semaines. Les nœuds réalisent alors un calcul simple :

 Nouvelle cible de difficulté = Ancienne cible de difficulté * (Temps des derniers 2016 blocs en secondes / 1 209 600 secondes)



Conclusion.


La Proof-of-Work est un des composants vitaux du réseau Bitcoin. Sans elle, le réseau ne peut être sécurisé, synchronisé et distribué. C'est notamment grâce au minage que le réseau Bitcoin fonctionne comme une horloge suisse depuis 2009, 24h/24 et 7j/7.


Lorsque l'on vous parle de remplacer cette horlogerie suisse, notamment dans d'autres projets de crypto-monnaies, soyez conscient que cela implique forcément de faire des concessions sur la distribution et sur la sécurité du réseau en question.




Pour aller plus loin :