Site icon Blog de la Transformation Digitale

Blockchain : Fonctionnement du minage en 7 étapes

Blockchain : Fonctionnement du minage en 7 étapes

Dans un précédent article, je vous ai expliqué tout le fonctionnement d’une blockchain en 7 étapes. Mais, vous êtes-vous déjà demandé comment fonctionne le processus de minage sur une chaîne de blocs? Ou encore comment votre transaction est confirmée et ajoutée à la chaîne de blocs? Oui? Moi aussi. Etant donné que je ne trouvais pas d’explications claires et détaillées sur ce processus, j’ai décidé d’en écrire une moi-même. Voici comment une transaction est traitée sur une blockchain, en sept étapes.

Toutes les technologies de blockchain se basent sur un principe commun. Ce principe a un nom qui fait une référence archaïque étonnante pour ce type de technologie de pointe : le minage.

En quoi consiste le minage?

Le minage est tout simplement la création d’un bloc valide par un des membres du réseau.

Un bloc est un groupe d’opérations, qui vont être groupées entre elles. Ce bloc est ensuite mis à la suite de la chaîne de blocs (ou de la blockchain si vous préférez), constituant ainsi un nouveau maillon de cette chaîne.

Le minage est donc une opération fondamentale d’une chaîne de blocs, quelle qu’elle soit. Et c’est ce qui la distingue d’un système centralisé classique.

Prenons un exemple simple

Par exemple, Damien envoie 100 Bitcoins à Georges, et, de son côté, Bernard envoie 200 Bitcoins à Michel.

Damien et Bernard soumettent à tous les participants au réseau Bitcoin leurs demandes respectives de transaction. Ces transactions ne sont cependant pas pour autant valides d’office. En effet, l’envoi d’une demande d’opération nécessite une vérification. Techniquement, Georges pourrait demander à envoyer 100 Bitcoins à Damien alors qu’il n’en possède que 50 dans son porte-monnaie.

Les demandes d’opérations vont donc être mises en attente et stockées dans un ce qu’on appelle un pool. La demande de transaction sera ensuite récupérée par un des membres du réseau pour faire partie d’un nouveau bloc. Il ne se limite donc pas seulement à la demande d’envoi de 100 Bitcoins soumise par Damien. En outre, u Enfin la taille d’un bloc est limitée. Ainsi, par exemple, la limite est de l’ordre de 1 Mo par bloc sur le réseau Bitcoin.

Le processus de base du minage

Dans le cas classique (Bitcoin et tous ses dérivés), le processus de base se déroule en 7 étapes :

Nous allons maintenant creuser un peu plus le fonctionnement en détaillant chacune des 7 étapes du minage.

Les 7 étapes du processus de minage

Chaque utilisateur possède un « porte-monnaie » ou « portefeuille » (wallet en anglais). Celui-ci peut être de type physique, logiciel ou en ligne. Son portefeuille lui sert à stocker ses crypto-monnaies (ou ses jetons) et à déclencher les transactions sur le réseau correspondant. Nous reviendrons, dans un prochain article sur les portefeuilles existants en 2019 et sur la façon de les choisir en fonction de vos besoins.

Le réseau est constitué de noeuds. Les nœuds sont essentiels au maintien de l’intégrité d’une blockchain. En termes simples, un nœud est simplement une copie de la blockchain qui existe sur un ordinateur ou un autre type de périphérique matériel.

Les nœuds sont essentiellement des « registres distribués » (on parle de ledgers) sur lesquels les utilisateurs s’appuient pour suivre les transactions de crypto-monnaie qui se sont produites sur la blockchain. Quiconque le souhaite peut créer un nœud. Il disposera alors de sa propre copie de l’historique complet des transactions de la blockchain pour une crypto-monnaie spécifique ou pour un certain nombre de crypto-monnaies différentes. Toutefois, chacun des nœuds nécessite énormément de mémoire. En effet, les chaînes de blocs peuvent contenir une quantité importante de données. Pour cette raison, toute personne souhaitant créer un nœud doit avoir la capacité pour traiter toutes ces données. C’est aussi ce qui permet de sécuriser la chaîne de blocs. (Voir à ce sujet mon précédent article : Blockchain : est-elle aussi inviolable qu’on le prétend?).

Etape 1

Un utilisateur déclenche une transaction à partir de son application de portefeuille, en essayant d’envoyer une crypto-monnaie ou un jeton à quelqu’un d’autre. C’est un peu comme lorsque vous envoyez un virement bancaire depuis l’application de banque en ligne fournie par votre banque. Enfin, au petit détail près qu’ici, il n’y a pas besoin de banque… Chaque utilisateur possède des crypto-monnaies dans son portefeuille et peut les dépenser et les utiliser à sa guise.

Par exemple, Damien déclenche l’envoi de 100 BTC à Georges depuis son portefeuille. De son côté Bernard, depuis son application de portefeuille déclenche l’envoi de 200 BTC à Michel.

Etape 2

Elle

Sur le réseau Bitcoin, le pool de transactions non confirmées porte le nom de Mempool. Une fois qu’une transaction est effectuée sur la blockchain de Bitcoin, elle n’est pas immédiatement ajoutée. Au lieu de cela, elle entre donc dans ce pool de transactions en mouvement.

Dans notre exemple, les transactions de Damien et de Bernard sont donc stockées, en attente de validation dans le Mempool.

Chaque nœud complet en cours d’exécution sur le réseau Bitcoin est connecté à ce pool, via le réseau. C’est en particulier le cas des mineurs qui disposent de leur propre noeud.

Etape 3

Les mineurs du réseau, travaillant au niveau de leurs nœuds respectifs, rassemblent donc un ensemble de transactions de ce pool pour constituer un bloc. Un bloc est fondamentalement un ensemble de transactions (pour le moment, non encore confirmées), auxquelles viennent s’ajouter des métadonnées. Chaque mineur construit son propre bloc de transactions issues du pool commun. Il est donc possible que plusieurs mineurs sélectionnent la même transaction à inclure dans leurs blocs.

Exemple : Nous avons deux mineurs, le mineur A et le mineur B. Les mineurs A et B peuvent décider d’inclure la transaction X dans leur bloc. Avant d’ajouter une transaction à son bloc, un mineur doit vérifier si la transaction peut être exécutée en fonction de l’historique de la blockchain. Si le solde du portefeuille de l’expéditeur dispose des fonds ou des jetons suffisants conformément à l’historique de la blockchain existante, la transaction est considérée comme valide et peut être ajoutée au bloc.

Comment les mineurs choisissent-ils les transactions à inclure dans un bloc? La réponse est simple. Ils perçoivent une rémunération pour chaque transaction minée avec succès. Certaines transactions leur rapportent plus que d’autres. Ainsi, les mineurs obtiennent une récompense de 12,5 BTC chaque fois qu’ils extraient avec succès un bloc Bitcoin. En plus de cette récompense fixe de 12,5 BTC, ils reçoivent également une quantité supplémentaire de bitcoins appelée «frais de transaction» et définie par chaque émetteur de transaction. Ces montants constituent de nouveaux Bitcoins créés spécialement à cet effet.

Lorsqu’un mineur exploite un bloc avec succès, il reçoit 12,5 BTC plus une somme X représentant les frais de transaction. Ce montant correspond à la somme de tous les frais de transaction de ce bloc.

Extrait de www.blockchain.com

Les mineurs accordent généralement la priorité aux transactions comportant des frais de transaction importants pour obtenir une meilleure rémunération.

Etape 4

En sélectionnant des transactions et en les ajoutant à leur bloc, les mineurs créent un bloc de transactions. Pour ajouter ce bloc de transactions à la blockchain (pour que tous les autres mineurs et nœuds enregistrent les transactions), le bloc doit tout d’abord obtenir une signature (également appelée preuve de travail). Cette signature est créée en résolvant un problème mathématique très complexe, unique à chaque bloc de transactions.

Chaque bloc a un problème mathématique différent à résoudre. Ainsi chaque mineur travaillera sur un problème différent et unique, propre au bloc qu’il a construit. Tous ces problèmes sont aussi difficiles à résoudre les uns que les autres. Afin de résoudre ce problème mathématique, il faut disposer de beaucoup de puissance de calcul. C’est le processus appelé processus de minage.

Les mineurs proposent la puissance de calcul de leurs ordinateurs pour enregistrer et sécuriser les transactions. En échange, ils reçoivent une rétribution comme nous l’avons vu, par des bitcoins spécialement créés. Ce système est très énergivore. Pour chaque transaction, la blockchain Bitcoin a besoin d’environ 77 kWh. En effet, la technologie de la blockchain se base sur un système décentralisé. Cela signifie que chaque transaction effectuée doit donc passer par les différents noeuds du réseau. Pour cela, la chaîne de blocs bitcoin a besoin d’une énorme puissance de calcul. Ainsi, 30,25 TWh ont été consommé par la monnaie virtuelle l’an dernier. Cela représente plus que la consommation nationale du Maroc, du Liban ou encore de la Hongrie (soit 159 pays en tout en se basant sur l’Agence internationale de l’énergie).

Nous reviendrons sur le fonctionnement exact de cet algorithme de signature dans une prochaine publication.

Etape 5

Le mineur qui trouve une signature éligible pour son bloc en premier, diffuse ce bloc et sa signature à tous les autres mineurs.

Etape 6

D’autres mineurs vérifient maintenant la légitimité de la signature. Ils prennent la chaîne de données du bloc diffusé et l’analysent pour voir si le hachage de sortie correspond bien à la signature incluse. S’il est valide, les autres mineurs confirmeront sa validité et conviendront que le bloc peut être ajouté à la blockchain. Ils doivent parvenir à un consensus, c’est-à-dire qu’ils doivent être tous d’accord. C’est de là que vient le terme d’algorithme de consensus. C’est aussi de là que vient la définition de «preuve de travail». La signature est la «preuve» du travail effectué. Cela correspond à la puissance de calcul dépensée.

Après vérification, le bloc nouvellement trouvé vient s’ajouter à la blockchain. Et le mineur qui a trouvé ce nouveau bloc a droit à la récompense de bloc. La hauteur du bloc (block height), qui indique la longueur de la chaîne de blocs, augmente donc après l’ajout du nouveau bloc. Les autres nœuds acceptent le bloc et l’enregistreront dans leurs données de transaction. Ceci bien sûr à condition que les transactions à l’intérieur du bloc correspondent correctement aux soldes du portefeuille en cours (historique des transactions) à ce moment-là.

Etape 7

Après l’ajout d’un bloc à la chaîne, chaque autre bloc ajouté s’ajoute à la confirmation de ce bloc. Par exemple, si ma transaction fait partie le bloc 502 et que la chaîne de blocs compte 507 blocs, cela signifie que ma transaction a 5 confirmations (507–502). C’est bien d’une confirmation. En effet, à chaque fois qu’un autre bloc est ajouté, la blockchain atteint à nouveau un consensus sur l’historique complet des transactions, incluant votre transaction et votre bloc. Votre transaction a donc été confirmée 5 fois par la blockchain à ce moment-là. C’est également ce à quoi Etherscan fait référence lorsqu’il vous montre les détails de votre transaction.

Extrait de www.etherscan.io

Plus le bloc est profondément intégré dans la chaîne et plus le nombre de confirmations de votre transaction est élevé. Et donc, plus il est difficile aux attaquants de le modifier. Après l’ajout d’un nouveau bloc à la blockchain, tous les mineurs doivent recommencer à la troisième étape en créant un nouveau bloc de transactions. Les mineurs ne peuvent pas continuer. Il faut chercher à résoudre le problème du bloc sur lequel ils travaillaient pour deux raisons

La preuve de travail à la base du minage

Le problème auquel se confronte chaque mineur lorsqu’il tente d’ajouter un bloc à la chaîne de blocs est de trouver une signature pour les données de son bloc. Cette signature résulte d’un algorithme de hachage et elle doit commencer par une certaine quantité de zéros consécutifs. Cela semble compliqué, non? Mais en fait ce n’est vraiment pas si difficile. Laissez-moi essayer de vous expliquer cela d’une manière simple.

Avant de commencer, il est important de savoir ce qu’est une fonction de hachage. Une fonction de hachage est simplement un algorithme mathématique très complexe, mais qui produit un résultat très facile à vérifier.

Une fonction de hachage prend, en entrée, une chaîne de caractères (littéralement toute chaîne de lettres, chiffres et / ou symboles) et la transforme en une nouvelle chaîne de 32 caractères composée de lettres et de chiffres apparemment aléatoires. Cette chaîne de 32 caractères est la sortie du hachage. Si on modifie un nombre ou une lettre dans la chaîne d’entrée, la sortie de hachage changera également de manière aléatoire. Cependant, une même chaîne d’entrée donnera toujours la même chaîne de sortie.

Le hachage dans la pratique

Considérons maintenant les données d’un bloc comme l’entrée de hachage (sous forme d’une chaîne de données). Lorsque cette entrée est hachée, elle donne une sortie de hachage (chaîne de 32 chiffres) unique. Une règle de la blockchain est qu’on ne peut ajouter un bloc à la blockchain que si sa signature (la sortie de hachage) commence par une certaine quantité de zéro. Or il n’est pas du tout évident que le résultat du hachage commence par le nombre de zéros nécessaires. C’est la raison pour laquelle les mineurs modifient à plusieurs reprises une partie des données à l’intérieur de leur bloc. Il ne peuvent pas modifier les données des transactions. C’est pour ça qu’ils rajoutent une chaîne de données aléatoires à la chaîne de transactions, appelée le nonce.

Chaque fois qu’un mineur modifie le nonce, cela modifie la chaîne d’entrée, ce qui entraîne également une chaîne de sortie différente (signature). Les mineurs répètent ce processus indéfiniment jusqu’à ce qu’ils obtiennent une chaîne de sortie répondant aux exigences de la signature (les zéros). Vous trouverez ci-dessous un exemple. Cet exemple utilise sept zéro, mais le nombre de zéros dépend en réalité de la difficulté des bloc d’une blockchain. La difficulté des blocs est un peu plus complexe cependant. Je vous suggère donc de garder ça pour plus tard (ce n’est pas extrêmement important pour l’instant).

Les mineurs doivent trouver une signature éligible. Et c’est la raison pour laquelle une telle puissance informatique est nécessaire pour résoudre ce problème en un temps limité. Deviner autant de nonces différents prend beaucoup de temps et de puissance de calcul. Plus la puissance de hachage (mineurs) augmente et plus la difficulté du problème mathématique augmentera. Et cela entraînera des dépenses en électricité encore plus élevées.

Tout travail mérite salaire

En contrepartie de la puissance de calcul investie et de l’énergie dépensée, les mineurs doivent donc être rétribués pour le travail effectué. Le mineur est rémunéré, de deux façons :

Il est donc important de comprendre que le mineur a un intérêt financier à miner, parfois très important.

La preuve de travail

Mais, s’il est si facile de miner, pourquoi tout le monde ne le fait pas ? Et pourquoi faut-il parfois tant de temps pour miner un bloc dans ce cas (10 minutes en moyenne pour le Bitcoin) ?

Ces deux questions trouvent leur réponse dans le principe de la preuve de travail, qui rend le minage pas si trivial que cela.

En effet, pour pouvoir créer un bloc valide dans une blockchain type Bitcoin, il est nécessaire pour trouver la signature de disposer d’une énorme puissance de calcul. En effet, il faut tester au hasard des solutions jusqu’à tomber sur la bonne.

Le minage d’un nouveau bloc résulte donc de deux éléments :

Pour s’adapter à l’augmentation de la puissance de calcul des mineurs, le protocole prévoit que la difficulté des problèmes mathématiques à résoudre augmente ou diminue régulièrement en fonction des besoins pour maintenir un temps moyen entre chaque nouveau bloc miné statistiquement constant. La durée est de 10 minutes sur le réseau Bitcoin. Elle est de 12 secondes pour le réseau Ethereum.

Parents, fils, oncles et cousins

Dans un réseau décentralisé, personne ne se concerte pour savoir à qui est le tour de miner. Tout le monde va chercher à résoudre le problème avant les autres pour empocher la mise. Ainsi, il est possible que deux nœuds du réseau trouvent simultanément la solution d’un problème de minage, et donc minent deux blocs différents au même moment. Ainsi, le réseau se retrouve dans un état indéterminé dans lequel il ne sait pas lequel des deux blocs créés utiliser. On obtiendra donc deux chaînes différentes.

Le protocole prévoit ce type de problèmes, et oblige les nœuds du réseau à prendre comme seule et unique blockchain valide la plus longue en termes de nombre de blocs. Ainsi lorsque deux blocs sont trouvés en même temps, il n’est pas nécessaire d’arbitrer. Les mineurs continuent leur office, et un nouveau bloc va être miné sur l’une ou l’autre des deux blockchains, la rendant ainsi comme valide par défaut. Le bloc alors miné inutilement sera appelé « oncle » (puisque non lié à la ligne directe qu’est la blockchain), et sera délaissé.

Théoriquement, il est possible que même dans cette deuxième génération de blocs, deux mineurs trouvent à nouveau 2 blocs en même temps sur les 2 chaînes distinctes. Commence alors un troisième round de minage, espérant que quelqu’un trouve avant les autres. En théorie, la probabilité de trouver quasi simultanément des blocs décroît exponentiellement avec la longueur de la chaîne des blocs en attente de détermination.

A noter que certaines blockchains plus modernes, comme Ethereum, incluent les blocs oncles dans la blockchain, sans les considérer comme abandonnés. Ces blocs donnent donc lieu à une rémunération plus faible du minage, en échange du fait que leur présence accroît la sécurité globale de la chaîne.

La preuve de travail permet la sécurisation du réseau

La preuve de travail (pour rappel, la résolution de problèmes mathématiques arbitrairement complexes pour valider le minage d’un bloc) est donc l’outil clé de sécurisation du réseau. En effet, plus les problèmes sont complexes à résoudre, plus il est difficile pour un membre, même très riche, de posséder la puissance de calcul nécessaire à détenir plus de 50% de la puissance du réseau.

Or nous l’avons vu, la puissance nécessaire à la validation d’un bloc est elle-même dépendante de la puissance globale du réseau (puisque la complexité du problème s’adapte périodiquement pour garantir un temps de minage en moyenne constant). Ainsi, pour accroître la sécurité, il est nécessaire d’attirer le plus de mineurs possibles, lesquels mineurs devant mettre à disposition du réseau leur puissance de calcul.

Ayant un intérêt économique à investir dans du matériel pour miner, ils s’équipent en masse et se lancent dans une vaste course à l’armement qui a pour conséquence de protéger les utilisateurs d’une attaque aux 51%.

Cette course est d’autant plus effrénée que l’on rappelle que le réseau adapte dynamiquement la complexité des calculs à la puissance globale disponible. Ainsi donc, la fortune des mineurs ne se fait pas sur leur puissance de calcul dans l’absolu, mais sur ce qu’elle représente par rapport à l’intégralité de la puissance disponible.

En d’autres mots, ils perdent de l’argent lorsque d’autres augmentent leur puissance.

Le côté sombre du minage par preuve de travail

Le minage par preuve de travail est fondateur du système blockchain. Et il est ce qui permet à la blockchain de fonctionner et de s’imposer comme un nouveau standard de réseau décentralisé trustless (donc sans aucun tiers de confiance) mais sûr.

C’est le minage par preuve de travail qui est à l’origine de la résistance du Bitcoin aux multiples attaques dont il a été la cible. C’est cette résistance qui permet au Bitcoin d’être une monnaie plus crédible aux yeux de certains que bien des monnaies nationales.

Mais cette méthode a des inconvénients :

Les alternatives à la preuve de travail

Pour pallier à ces défauts, d’autres méthodes de minage commencent à voir le jour :

Le minage par tiers de confiance.

Véritable trahison du modèle originel, il consiste à faire miner les blocs par des tiers de confiance. C’est le modèle privilégié dans les blockchains privées. Certains mécanismes peuvent exister pour désigner le tiers qui doit réaliser le minage pour obliger une certaine rotation.

Dans ce type de modèle le minage ne donne généralement pas lieu à rémunération.

Le minage par consensus

Dans ce modèle, un algorithme permet à des nœuds maîtres du réseau de se mettre d’accord entre eux de façon certaine, déterministe et sûre, sur les opérations à accepter et sur l’ordre dans lequel les accepter.

Le minage par consensu sse base donc sur la confiance dans ces nœuds maîtres, dont on connaît l’identité. Il est donc partiellement centralisé (le nombre de nœuds maîtres pouvant être arbitrairement grand).

C’est le mode de fonctionnement retenu sur la blockchain Ripple.

Le minage par preuve d’enjeu

Dans ce modèle, un des utilisateurs est désigné pseudo-aléatoirement avec une probabilité proportionnelle à sa fortune détenue sur la blockchain. En d’autres termes, plus vous êtes riche, plus vous avez de chance de vous faire sésigner comme mineur. Donc, plus vous minez et plus vous êtes riche.

Le modèle porte bien son nom, puisqu’il fait porter la responsabilité du minage à ceux qui ont le plus d’enjeu dans cette blockchain. Ce sont eux qui ont le plus intérêt à jouer dans les règles pour maintenir la confiance dans le système.

Ce mode de fonctionnement est en cours de déploiement sur la blockchain Ethereum.

Dans le minage par preuve de travail, un attaquant doit dépenser énormément d’argent pour acheter suffisamment de matériel informatique afin de détenir plus de 50% de la puissance du réseau et pouvoir mener à bien son attaque. D’ailleurs, cette somme peut être un moyen de valoriser une crypto-devise : la capitalisation d’une crypto-devise (contre-valorisée en devise fiduciaire) doit être comparable au prix de l’achat de 50% de la puissance de minage. Preuve s’il le fallait que plus il y a de minage sur un réseau, plus il est sûr. Et donc plus les utilisateurs ont confiance en lui et, par conséquent, plus il a de la valeur.

Dans le minage par preuve d’enjeu, un attaquant devra dépenser la même somme, non pas acquérir du matériel informatique, mais pour acheter des crypto-devises sur le marché d’échange afin d’augmenter son éligibilité au minage, et donc sa puissance de minage.

Conclusion

Vous connaissez désormais les principes de base du minage et son fonctionnement. Nous aborderons les sujets de la structure de la blockchain et le principe de la signature électronique dans un prochain article.

Si cet article vous a éclairé, n’hésitez pas à nous le dire et à nous poser d’éventuelles questions complémentaires. Les commentaires vous sont ouverts. Alors n’hésitez pas. Vous pouvez aussi partager cet article sur les réseaux sociaux et nous mettre un petit « j’aime » sur le blog pour nous encourager. Si vous voulez être informés des articles que nous publions régulièrement, vous pouvez également vous abonner à notre blog depuis cette page.

 

Quitter la version mobile