This article has been translated from English to French.

Comment fonctionne le minage de bitcoins ?

Dans la leçon précédente, tu as appris ce qu'est un mineur de bitcoins, comment il stocke les nouvelles transactions dans son pool de mémoire, puis lance le processus de « minage » en créant un bloc candidat.

Si ce que je viens d'écrire te semble être une langue étrangère, je te recommande vivement de commencer par la première leçon de mon Guide du débutant sur le minage de bitcoins.

Si tu es toujours avec moi, examinons de plus près le bloc candidat...

Tout comme tu peux être séparé en deux parties de base, une tête et un corps, un bloc candidat peut être décomposé en deux parties :

  1. En-tête du bloc (zone jaune)
  2. Corps du bloc (zone grise)
    Block Header and Body

Si nous regardons de plus près un bloc candidat, il ne contient en réalité PAS que des transactions.

Candidate Block Anatomy

Lorsqu'un mineur crée un bloc candidat, celui-ci comprend un «en-tête de bloc »(zone jaune).

Le « corps » du bloc (zone grise) contient les transactions.

Outre un bloc candidat contenant un ensemble de transactions, il contient également des métadonnées qui fournissent un « résumé » du bloc.

Les métadonnées sont simplement des données qui fournissent des informations sur d'autres données. Dans ce cas, les métadonnées fournissent des informations sur le bloc lui-même. Ces informations sont connues sous le nom d'« en-tête de bloc ».

L'en-tête de bloc contient plusieurs éléments de données.

Pour les besoins de cette leçon, je vais simplifier ce qui se trouve dans l'en-tête du bloc.

Horodatage

La première donnée à l'intérieur de l'en-tête de bloc est l'«horodatage».

L'horodatage indique quand le bloc a été créé.

Timestamp

Hachage du bloc précédent

La donnée suivante est appelée « bloc précédent » ou plus précisément «hachage du bloc précédent».

Le hachage du bloc précédent est le hachage du bloc précédent dans la chaîne de blocs.

Previous Block Hash

Pour comprendre ce que cela signifie, nous devons examiner le fichier.

Look inside blockchain

Maintenant que nous regardons à l'intérieur du fichier, nous pouvons voir que les données sont structurées d'une manière spécifique.

Look inside the file and see blockchainstructure

Visualisons cela comme la blockchain.

Le bloc candidat que le mineur a créé doit être ajouté au-dessus du bloc le plus récent.

Block must bee added on top of the most recent block

Disons que le bloc le plus récent est celui coloré en bleu.

Most recent block in blockchain

Puisque le hachage du bloc bleu est le plus récent du fichier (la « chaîne de blocs »), c'est le bloc sur lequel le mineur veut construire.

Considère le hachage de bloc comme un numéro d'identification généré sur mesure pour un bloc.

Le mineur ajoutera donc ce numéro en tant que «hachage du bloc précédent »dans l'en-tête de bloc de son PROPRE bloc candidat.

Block hash added as Previous Block Hash of Candidate Block

Hachage du « résumé de la transaction

La donnée suivante est ce que j'appellerai le hachage « Transaction Summary » (résumé des transactions).

Comme son nom l'indique, il fournit un « résumé » de toutes les transactions du bloc, exprimé sous la forme d'une chaîne de caractères.

Sans entrer dans les détails, ce qui se passe, c'est que toutes les transactions du bloc (surlignées en rouge) sont placées dans une fonction de hachage et hachées dans un certain ordre, ce qui donne un seul hachage.

Merkle Root

Ce hachage est utilisé comme hachage du « résumé des transactions ».Merkle Root Example

Ce hachage fournit une «empreinte digitale »unique basée sur toutes les transactions incluses dans un bloc.

Cela permet de s'assurer que les transactions n'ont pas été falsifiées.

Ce hachage « Transaction Summary » est en fait connu sous le nom de «Merkle Root». 🤓

N'oublie pas qu'un petit changement dans les données modifiera totalement le hachage. Cela signifie que si quelqu'un essayait de modifier une transaction dans le bloc à l'avenir, cela entraînerait une modification du hachage du « résumé des transactions » et serait totalement différent de la valeur d'origine qui se trouve dans l'en-tête du bloc.Merkle Root as Fingerprint

En gros, modifier la transaction créerait une « empreinte » totalement différente qui ne correspondrait pas à l'« empreinte » d'origine.

Ce changement permettrait à tout le monde de savoir instantanément qu'une ou plusieurs transactions ont été falsifiées.

Hachage du bloc

Jusqu'à présent, l'en-tête de bloc contient trois éléments de données :

  1. Horodatage
  2. Hachage du bloc précédent
  3. Hachage du « résumé de la transaction

L'étape suivante consiste à placer ces données d'en-tête de bloc dans une fonction de hachage.

Cela produira un nombre aléatoire appelé «Block Hash».

(Bien qu'un nom plus précis serait « Block Header Hash » puisqu'il s'agit du hachage de l'en-tête du bloc uniquement, et non du bloc entier.)

Tout comme le hachage de bloc précédent mentionné plus haut, considère le hachage de bloc comme un numéro d'identification généré sur mesure qui sera attribué au bloc candidat.

Run block header through hash function
Pourquoi le mineur fait-il cela ?

Pour que le mineur puisse ajouter son bloc à la blockchain, il doit trouver un hachage de bloc qui réponde à certaines exigences.

S'il ne peut PAS répondre à cette exigence, le bloc ne sera PAS considéré comme valide et le mineur ne pourra pas l'ajouter à la blockchain.

Plus précisément, le hachage du bloc doit être un nombre commençant par un certain nombre de zéros.

Combien de zéros exactement ?

Cela varie. Le logiciel du système Bitcoin détermine le nombre minimum de zéros par lequel le hachage de bloc doit commencer.

À l'origine, le nombre de zéros requis était faible, mais à mesure que de plus en plus de mineurs se sont joints au système, le logiciel Bitcoin a commencé à exiger un nombre plus important de zéros.

Bitcoin mining process without nonce

Un mineur doit générer une sortie (le « Block Hash ») qui satisfait au seuil de sortie fixé par le logiciel Bitcoin.

Ce « seuil » spécifie simplement le nombre de zéros par lequel le hachage du bloc doit commencer.

C'est comme la danse du « limbo ».

Bitcoin mining is like a limbo dance

Plus le seuil est bas, plus il faut de zéros.

Plus il y a de zéros requis, plus il est difficile de trouver un hachage de bloc « correct ».

En effet, plus il y a de zéros en tête, moins il y a de solutions possibles, ce qui signifie qu'il faut plus de temps pour « trouver » un Block Hash correct.

Trouver une valeur qui commence par trois zéros comme« 000123... »est beaucoup plus difficile que d'essayer de trouver une valeur avec six zéros comme «000000123... ».

Voici un exemple récent de Block Hash valide :

0000000000000000000586b367c292dfd274bf2e67575cf8b4d00735fc1df6ff

Remarque le nombre de zéros au début.

Le « certain nombre de zéros » provient de ce qu'on appelle la «difficulté d'extraction». Celle-ci est automatiquement ajustée à la hausse ou à la baisse par le logiciel qui fait fonctionner le réseau Bitcoin. La difficulté change en fonction du nombre de mineurs. Plus il y a d'ordinateurs qui minent, plus la difficulté est grande et plus il faut de zéros au début, ce qui rend plus difficile la recherche du nonce gagnant.

Un hachage de bloc peut être interprété comme un très grand nombreet doit être inférieur à un certain seuil. C'est pourquoi les hachages de bloc commencent par une série de zéros suivie d'une chaîne alphanumérique. Certains blocs ont jusqu'à vingt zéros en tête, tandis que les blocs précédents en ont seulement huit. Le nombre de zéros requis démontre approximativement la difficulté de l'extraction au moment où le bloc a été publié.

Que se passe-t-il si le hachage du bloc ne commence pas par le nombre requis de zéros ?

Dans ce cas, le bloc ne peut PAS être ajouté au fichier (la « chaîne de blocs »).

Heureusement, le mineur peut faire plusieurs tentatives.

Mais si un mineur exécutait à nouveau la fonction de hachage sur l'en-tête de bloc contenant uniquement l'horodatage, le hachage du bloc précédent et le hachage du « résumé de la transaction », il obtiendrait toujours le même résultat.

Le mineur doit modifier les données d'une manière ou d'une autre avant d'essayer de hacher à nouveau l'en-tête de bloc.

Bitcoin te donne un moyen de le faire !

Le nonce

Dans l'en-tête de bloc, il y a un champ supplémentaire appelé «nonce »(encadré bleu clair)

Block header contains a nonce

Il y a une partie spéciale de l'en-tête de bloc que les mineurs peuvent remplir avec un nombre arbitraire.

Le mineur est libre d'y mettre le nombre qu'il veut.

Le nonce est complètement séparé des transactions dans le bloc. Son seul but est de permettre aux mineurs de le remplir avec un nombre, et de changer le nombre si le hachage du bloc ne répond pas à l'exigence de commencer par un certain nombre de zéros.

En utilisant un nonce, un mineur peut manipuler la sortie de la fonction de hachage pour « deviner » la sortie souhaitée.

Comme les autres données de l'en-tête de bloc ne peuvent pas être modifiées, la seule donnée qui peut l'être est le nonce.

Ainsi, si la première tentative de hachage du Block Header échoue, le mineur modifie la valeur du nonce.

Tu peux considérer ce processus comme si tu essayais de trouver la combinaison d'un cadenas à combinaison.

Combination Lock

Il n'y a pas de raccourci possible pour trouver la combinaison de chiffres qui le déverrouille. Tu dois essayer toutes les combinaisons possibles jusqu'à ce que, à un moment donné, tu trouves la bonne par hasard.

Tu dois essayer encore et encore jusqu'à ce que tu aies de la chance !

Et tout comme il est extrêmement facile et rapide de vérifier qu'une combinaison de serrure est la bonne (elle déverrouille ou ne déverrouille pas), il est extrêmement facile et rapide pour le mineur, et pour les autres nœuds par la suite, de vérifier que le nonce est bien le bon.

Le mineur est également en concurrence avec d'autres mineurs. Le premier mineur qui trouve un nonce qui aboutit à un hachage de bloc valide se voit accorder le droit d'ajouter son bloc dans la blockchain et est récompensé pour cela.

Par exemple, supposons que le hachage de bloc doit commencer par au moins quatre zéros.

La seule façon de trouver un hachage de bloc avec le nombre requis de zéros initiaux est de choisir au hasard une valeur nonce et d'exécuter l'en-tête de bloc via la fonction de hachage.

Dans ce scénario, le mineur commence par « 0 » pour la valeur nonce (encadré bleu clair).

Nonce is 0

Si cela ne produit pas le résultat souhaité, le mineur ne peut que réessayer avec un nonce différent.

Le mineur change le nonce, puis recommence jusqu'à ce qu'il parvienne à trouver un hachage de bloc contenant au moins le nombre minimum requis de zéros. Dans ce cas, quatre zéros.

Rappelle-toi que même si tu n'as fait qu'un petit ajustement, avec une fonction de hachage, même le plus petit changement produira des résultats complètement différents.

La première tentative du mineur a donc été d'utiliser le chiffre « 0 » dans le nonce. Il exécute ensuite l'en-tête de bloc à travers la fonction de hachage et vérifie si le hachage de bloc commence par quatre zéros.

Comme tu peux le voir, le Bloch Hash ne commence qu'avec deux zéros, il ne répond donc PAS aux critères nécessaires pour ajouter le bloc à la blockchain.

Si la sortie n'est pas valide, le mineur continue d'essayer avec différentes valeurs de nonce.

Comme la valeur « 0 » n'a pas fonctionné, le mineur peut changer la valeur du nonceen « 1 »(encadré bleu clair) puis exécuter à nouveau l'en-tête de bloc via la fonction de hachage.

Nonce changed to 1

Comme tu peux le voir, le hachage du bloc commence sans zéros, donc cela ne fonctionne pas non plus.

Comme la valeur « 1 » n'a pas fonctionné, le mineur peut changer la valeur du Nonceen « 2 »(encadré bleu clair) puis exécuter à nouveau l'en-tête de bloc via la fonction de hachage.

Nonce changed to 2

Dans ce cas, le hachage du bloc commence enfin par quatre zéros et répond aux critères.

C'est un résultat de hachage de bloc réussi ! 🎉

Comme tu peux le voir, il est impossible de prédire quel nonce produira un Block Hash avec le bon nombre de zéros. Le mineur doit donc continuer à essayer différents nonces pour trouver la bonne valeur.

Les mineurs peuvent miner pendant de longues périodes sans aucune garantie de trouver un nonce correct. La plupart n'y parviendront jamais !

Le nonce est utilisé comme un compteur, dont la valeur est constamment incrémentée jusqu'à ce qu'il trouve le bon hachage de bloc ou qu'un autre mineur le fasse.

C'est comme un jeu de devinettes !

Tu essaies simplement de trouver un hachage qui commence par un certain nombre de zéros en changeant la valeur du nonce.

Les mineurs le font à plusieurs reprises... EN ESPÉRANT que le résultat produise un hachage de bloc qui réponde aux critères.

Plus leurs ordinateurs sont puissants, plus ils peuvent faire de « suppositions ».

Ce processus de « devinettes » est connu sous le nom de minage.

Le mineur « gagnant » est récompensé par un nombre défini de bitcoins (plus les frais de transaction) appelé «récompense de bloc ».

Un mineur remporte la récompense de bloc toutes les 10 minutes environ.

Récompense de bloc

Étant donné que les mineurs consacrent beaucoup de temps et d'énergie à « deviner » le nonce correct et à confirmer les transactions sur la blockchain Bitcoin, le logiciel Bitcoin les récompense pour leurs efforts en leur offrant :

  1. Bitcoins nouvellement créés Lorsqu'un mineur confirme des transactions, celles-ci sont regroupées dans un bloc et ajoutées à la blockchain Bitcoin. Pour chaque nouveau bloc ajouté à la blockchain, de nouveaux bitcoins sont versés au mineur. C'est ce qu'on appelle la subvention de bloc. Le montant spécifique des bitcoins est basé sur un calendrier d'émission déterminé par le protocole au moment de la création du bloc. Depuis le 20 avril 2024, la nouvelle émission est de 3,125 BTC par bloc, suite à la dernière réduction de moitié. La prochaine réduction de moitié est prévue vers le 2 avril 2028, date à laquelle la récompense de bloc passera à 1,5625 BTC par bloc.
  2. Frais de transaction. Lorsque les gens effectuent des transactions avec des bitcoins, ils paient des frais aux mineurs pour les inciter davantage à confirmer leur transaction. Lorsqu'un mineur confirme un ensemble de transactions, il perçoit également tous les frais de chaque transaction individuelle.

L'extraction est un processus monotone et répétitif :

Bitcoin Mining Process

Prends un en-tête de bloc avec le nonce, hache-le, regarde si le hachage commence par un certain nombre de zéros, et si ce n'est pas le cas, répète le processus avec un nonce différent.

J'ai sommeil rien que d'y penser. 😴

Donc, quand vous lisez ou entendez que le minage implique de « résoudre des problèmes mathématiques complexes », vous savez maintenant que ce n'est pas une description correcte.

Il n'y a rien de complexe dans le minage ! Le processus lui-même est assez simple. Il s'agit simplement d'essayer de deviner un nombre correct le plus rapidement possible ou juste assez rapidement pour être le PREMIER mineur à deviner juste afin que votre bloc candidat soit celui qui soit ajouté à la blockchain. C'est tout !

Le « taux de hachage » indique la « puissance de devinette » d'un ordinateur de minage. Plus tu peux deviner de hachages par seconde, plus ton taux de hachage est élevé. Par exemple, 1 000 000 000 (un trillion) de devinettes par seconde équivaut à un taux de hachage de 1 terrahash (TH/s).

Ce n'est pas parce que le processus est simple qu'il est facile. C'est pourquoi on parle de « minage ». Tu essaies de « trouver » le bon nombre, ce qui demande beaucoup d'efforts, comme dans le vrai monde.

Maintenant que le mineur a trouvé un nonce pour pouvoir générer un hachage de bloc qui répond aux exigences (commençant par au moins 4 zéros), le bloc est ajouté à la copie du fichier du mineur (la « blockchain »).

Tu te souviens que le bloc bleu était le plus récent de la chaîne de blocs du mineur ? Plus maintenant.

Comme le mineur a pu deviner le nonce correct, il a pu ajouter son bloc à la chaîne de blocs (coloré en vert).

Block added to blockchain

Donc, d'un point de vue général, le fichier sur l'ordinateur du mineur a été mis à jour (indiqué en vert).

Miner's blockchain updated

Ensuite, le nœud transmet ce bloc aux nœuds voisins auxquels il est directement connecté.

Les nœuds vont le vérifier, le contrôler et s'assurer que l'en-tête du bloc produit un hachage de bloc qui répond aux critères. Dans ce cas, le hachage de bloc devait commencer par quatre zéros.Bitcoin miner propogates new block

Ces nœuds mettront à jour leur fichier (la « chaîne de blocs ») en ajoutant le bloc au fichier.

LeUR fichier sera mis à jour et sera désormais de la même version que celui du mineur gagnant (fichiervert ).

Toutes les transactions de leur mempool qui font partie de ce bloc gagnant passent du statut «frais »(ou « non confirmé ») à« confirmé »et sont désormais ajoutées de manière permanente au fichier.

Toutes les transactions conflictuelles seront rejetées.

Grâce au processus de minage, seule la transaction violette sera intégrée à la blockchain.Blockchain synced across network

Ensuite, ces nœuds transmettront le bloc à d'autres nœuds.Nodes will pass on the block to other nodes.

Une fois que le nouveau bloc est accepté par une majorité de mineurs, tous les mineurs recommencent et créent un tout nouveau bloc candidat et le processus d'extraction se répète.

Le minage agit comme un mécanisme de tri des transactions sur un réseau d'ordinateurs, où les blocs « minés » ont le dernier mot sur ce qui appartient à la blockchain.

Le hachage de bloc de ce nouveau bloc sera désormais utilisé par les mineurs pour le « hachage de bloc précédent » dans leurs blocs candidats.

Newly created block will now be used by miners

Le hachage de bloc agit comme la «chaîne».

Les mineurs doivent désormais inclure le hachage du bloc précédent dans le nouveau bloc qu'ils créent.

Miner include new block hash in new block

Par exemple, cela signifie que pour miner le bloc 101, les mineurs doivent connaître le hachage du bloc 100.

Tant que le bloc 101 n'a pas été miné, le bloc 102 ne peut pas l'être.

Cela oblige les mineurs à se concentrer sur le bloc 101 qui, à son tour, inclut le hachage du bloc 100. Aucun mineur ne peut passer à autre chose.

Mais au lieu que chaque bloc ait un « numéro de bloc », chaque bloc fait référence au bloc précédent par son hachage de bloc.

Cela implique que chaque bloc est lié aux autres et c'est ce qui crée une «chaîne de blocs »connue sous le nom de blockchain.

Cette « chaîne de blocs » est maintenue non pas par des numéros de blocs, mais par des hachages de blocs.

Pourquoi tu ne peux pas tricher avec le bitcoin

Disons que tout le monde travaille sur le bloc 101.

Mais un mineur veut modifier une transaction dans le bloc 80.

Il devrait apporter ses modifications et refaire tous les calculs pour les blocs 80 à 100 ET aussi le bloc 101.

Cela représente 21 blocs de calcul coûteux !

De plus, le mineur devrait tout faire avant que les autres mineurs du réseau Bitcoin ne terminent le bloc en cours (le bloc 101) sur lequel ils travaillent. C'est pratiquement impossible.

Il est très difficile de réussir à falsifier des transactions qui font déjà partie de la blockchain.

C'est ce que l'on entend lorsque les blockchains sont décrites comme immuables.

Preuve de travail (Proof-of-Work, PoW)

Le processus d'extraction est souvent appelé «preuve de travail »ou PoW.

La preuve de travail est connue comme le« mécanisme de consensus » que Bitcoin utilise pour amener tous les nœuds à s'accorder sur la copie « officielle » de la blockchain de Bitcoin. C'est ainsi que Bitcoin parvient à un consensus sans qu'il soit nécessaire de régler les différends ou d'intervenir auprès d'une autorité centrale.

Le terme « preuve de travail » fait simplement référence au fait qu'il faut du « travail » pour trouver un hachage de bloc en dessous d'un certain seuil. Et une fois que c'est fait, n'importe qui peut le vérifier, ce qui fournit la « preuve ».

Le processus consistant à « deviner un nonce » puis à faire passer l'en-tête du bloc par la fonction de hachage est utilisé pour prouver que tu as effectué une quantité requise de « travail » sur ton bloc.

Le premier mineur à produire un hachage valide est autorisé à ajouter un nouveau bloc à la chaîne de blocs et reçoit une récompense en bitcoins.

Si un afflux de mineurs rejoint le réseau Bitcoin, le PoW s'ajustera pour rendre plus difficile la recherche d'un hachage de bloc valide. Si cette difficulté accrue décourage trop de mineurs et qu'ils arrêtent de miner, la difficulté sera diminuée pour faciliter le minage.

Ce processus, appelé ajustement de la difficulté, a lieu environ toutes les deux semaines et garantit que de nouveaux blocs sont ajoutés à la chaîne de blocs toutes les 10 minutes environ, quel que soit le nombre de mineurs qui rejoignent ou quittent le réseau.

Les ajustements de difficulté sont effectués en fonction de la vitesse à laquelle les mineurs créent de nouveaux blocs.

En ajustant la difficulté du minage, Bitcoin peut garantir que de nouveaux bitcoins sont créés à un rythme prédéterminé, quel que soit la puissance de calcul des participants au réseau.

L'ajustement de la difficulté est important car il garantit que les mineurs ne peuvent pas extraire trop rapidement une trop grande partie de l'offre de bitcoins.

Le matériel informatique spécialisé et l'électricité nécessaires à l'extraction signifient également que l'attaque du réseau est d'un coût prohibitif. Cela garantit la sécurité et l'intégrité de la chaîne de blocs Bitcoin.

Quiconque dispose d'une puissance de calcul suffisante pour attaquer le réseau a tout intérêt à miner honnêtement et à gagner la récompense de bloc (nouveaux bitcoins plus frais de transaction).

Tu veux en savoir plus sur les aspects techniques du Bitcoin ? learnmeabitoin.com propose un guide très facile à suivre pour aider les gens à comprendre comment fonctionne le Bitcoin.

Résumé

Félicitations ! Tu sais maintenant comment fonctionne le « minage » du Bitcoin !

  • Les mineurs recherchent un hachage acceptable qui sera le « hachage de bloc » en choisissant un nonce, en exécutant la fonction de hachage et en vérifiant le résultat.
  • Si le hachage n'a pas le bon nombre de zéros non significatifs, les mineurs changent le nonce, exécutent la fonction de hachage et vérifient à nouveau.
  • Lorsqu'un mineur a enfin la chance de trouver un nonce qui fonctionne et qu'il « gagne », le bloc est envoyé à d'autres nœuds (y compris d'autres mineurs) du réseau Bitcoin, qui peuvent chacun exécuter la fonction de hachage avec le nonce du mineur gagnant et vérifier qu'il fonctionne.
  • Si la solution est acceptée par une majorité des nœuds, le bloc est ajouté à la chaîne de blocs et le mineur gagnant reçoit la récompense du bloc.
  • Tous les mineurs « réinitialisent » et commencent à travailler sur un nouveau bloc candidat, en utilisant le hachage du bloc récemment extrait comme référence dans leur en-tête de bloc (comme « en-tête de bloc précédent »).
  • Ce processus par lequel les mineurs tentent de « deviner » ou de trouver un nonce correct est connu sous le nom de « preuve de travail » (Proof-of-Work, PoW).

Maintenant que nous en savons plus sur les mineurs et le minage, mettons à jour notre carte du système Bitcoin :

Bitcoin as a System (Mining Added)