En quoi consiste le minage des crypto-monnaies ?

in blockchain •  last year  (edited)

Lorsque l'on commence à s'intéresser aux crypto-monnaies on en vient rapidement à entendre un terme qui nous paraît familier tout en étant obscur dans ce contexte : le minage.

Mais de quoi s'agit-il donc exactement ? Pas d'angoisse car le minage c'est ça :

image.png

Il faut avouer, que des explications s'imposent et, dans la suite de cet article, cette image vous paraîtra limpide.

Notre exemple va se baser sur le minage du célèbre bitcoin créé par l'énigmatique Satoshi Nakamoto en 2008 et utilisé dès 2009. Le bitcoin (au sens crypto-monnaie) utilise le protocole d'une blockchain (en l'occurrence dénommée Bitcoin avec un B majuscule). En outre le minage du bitcoin utilise le protocole PoW.

C'est quoi le PoW ?

PoW signifie Proof of Work (Preuve de travail), il consiste à mettre en rivalité tous les noeuds (ordinateurs participant à un réseau pair à pair) d'un réseau de cryptomonnaie pour ajouter de façon sécurisée un nouveau bloc de transaction à une blockchain. C'est cette opération qui est dénommée minage.

Carte des nœuds (ou nodes) du réseau bitcoin.

Le terme de minage a été choisi en analogie au travail effectué par les chercheurs d'or du Far-West. Cela exigeait beaucoup d'énergie et seuls ceux qui trouvaient une pépite étaient récompensés !

Le travail du mineur (qui est un membre du réseau) de cryptos consiste à valider les blocs en résolvant un problème mathématique de hashing qui constituera la chaîne reliant chaque bloc... d'où le nom de blockchain ou chaîne de blocs.

Bien évidemment, seul le premier à résoudre cette recherche sera récompensé !

Sur l'image l'on peut lire les éléments suivants bloc, minage (c'est le symbole avec la pioche), SHA-256, Hash du bloc. De quoi s'agit-il exactement ?, je vous propose le décryptage suivant :

C'est quoi un bloc ?

Un bloc est un ensemble d’opérations ou de transactions, qui vont être groupées entre elles, et mises à la suite de la chaîne de blocs (la blockchain), constituant ainsi un nouveau maillon à cette chaîne. C’est donc l’opération fondamentale d’une chaîne de blocs, quelle qu’elle soit, et qui la distingue d’un système centralisé classique.
C’est au moment de la création des blocs (donc du minage) que les opérations sont confirmées. Un bloc est donc simplement l’agglomération de plusieurs opérations valides et qui sont en attente (donc pas des opérations déjà passées dans un bloc précédent).
Pour le bitcoin, les blocs sont constitués environ toutes les 10'

C'est quoi SHA-256 ?

SHA signifie Secure Hash Algorithm et 256 pour 256 bits. Ces 256 bits traduits en hexadecimal donnent une chaîne de 64 caractères (de 0 à 9 et de a à f).

Voici le hash du premier bloc miné par Satoshi Nakamoto :
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f  (Vous pouvez vérifier qu'il n'y a que des nombres et des lettres de a à f !).

C'est quoi le Hash du bloc ?

Le hash est l'empreinte numérique obtenue à partir du bloc en résolvant un problème mathématique difficile généré directement par la blockchain. Ce problème se résout par Force brute (c’est-à-dire en testant au hasard des solutions jusqu’à tomber sur la bonne). Cela nécessite des forces de calcul de plus en plus colossales ce qui explique d'une part, que le bitcoin soit accusé d'être énergivore et que d'autre part, le minage est quasi impossible désormais pour le quidam aux moyens limités.

Pour mieux comprendre cette notion, imaginez un grand sudoku cryptographique avec la majorité des cases vides. La vitesse de résolution dépendra des capacités de chacun. Le premier qui trouve la solution est considéré comme ayant validé le bloc.

En langage cryptographique, la fonction mathématique hash a la vertu de transformer toute chaîne de caractères en une chaîne de longueur fixe nommée valeur de hachage (256 bits pour le mode SHA-256 utilisé pour le bitcoin). De plus, il est très difficile de retrouver le message de départ si l'on ne connaît que le résultat (lui aussi appelé hash). Un exemple pour mieux comprendre cette dernière notion : si je vous dis : "combien font 7x8" ? Vous allez trouver rapidement 56. Par contre, si je vous dis de quel calcul provient 56 vous aurez bien du mal à trouver la bonne solution : 2x28, 55+1, 23+33,.....

Une fois le hash trouvé le bloc sera sécurisé par cette chaîne de caractères fixe.

Ce hash sera également incorporé, de facto, dans le bloc suivant ce qui participera à réaliser une chaîne d'information publique, datée, infalsifiable et inviolable.

A savoir : 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 augmentera ou diminuera régulièrement en fonction des besoins pour maintenir un temps moyen entre chaque nouveau bloc miné statistiquement constant (10 minutes pour le Bitcoin, 12 secondes pour Ethereum). Cette difficulté est ajustée automatiquement de manière à ce que il y ait en moyenne un bloc qui soit créé toutes les 10 minutes. Elle est recalculée tous les 2016 blocs et est basée sur le temps qu'il a fallu pour trouver les 2016 blocs précédents. Les bitcoins ne se créeront pas plus vite, mais créer des bitcoins deviendra plus difficile.

Maintenant que vous connaissez tous les éléments décrits ci-dessus, il devient plus aisé de lire et de comprendre l'image explicative en en-tête de ce poste :

Le bloc n°1 est constitué de n transactions --> ce bloc va être miné via l'algorithme SHA-256 --> son hash (ligne de 64 caractères ou 256 bits) va être incorporé au bloc suivant, le n°2 et faire partie intégrante de celui-ci et ainsi de suite avec une constitution de bloc environ toutes les 10'.

Si un hacker veut changer une information d'un bloc à son profit (exemple : transfert de 100.000 BTC au lieu de 1), il s'ensuivra que la valeur de hachage du bloc considéré ne sera plus correcte et apparaîtra en anomalie mais, comme le hash d'un bloc figure dans le suivant, tous les blocs suivant celui pour lequel une tentative de fraude a été détectée seront également en anomalie !

**Chronologie des opérations de minage : **

  • Saisie d'une transaction lorsqu'une partie (pair) envoie des données à une autre (cela peut être des unités de monnaie, des contrats, des actes notariés, des titres de propriété,...).

  • Vérification de la validité de toutes ces opérations (les comptes sont suffisamment approvisionnés, l’opération est dûment signée par les personnes autorisées, ...). Chaque noeud est équipé d'une procédure de vérification.

  • Une fois la transaction vérifiée, elle est mise en attente. Elle est alors prête pour être associée à d'autres dans un bloc.

  • Le mineur agrège toutes les opérations en attente, non encore incluses dans un bloc et donc non présentes dans la blockchain

  • Pour ajouter ce bloc à la blockchain chaque mineur doit calculer, via l'opération mathématique nommée hachage, une "empreinte" numérique du bloc qui prend également en compte l'empreinte du bloc précédent.

  • Chaque mineur est mis en concurrence pour trouver la solution (valeur de hachage). Le mineur qui arrive le premier au bout de ce processus de "preuve de travail" soumet le bloc au réseau.

  • Le réseau étudie la validité du bloc, dans la forme (respect du protocole informatique) et dans le fond (validité des transactions saisies).

  • Le réseau accepte le nouveau bloc et tous les membres l’ajoutent à leur copie locale de la blockchain.

  • Le mineur qui a trouvé la bonne solution est alors récompensé pour son travail par l'attribution de bitcoins, ce qui procède à la création monétaire de la crypto-monnaie.

Si ce post vous a plu n'hésitez pas à up-voter et à resteemer. Vos remarques seront également les bienvenues afin d'éclairer ce sujet.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Une précision et des questions.

Tu écris: "vérification de la validité des transactions: les comptes sont suffisamment approvisionnés". Pour être précis, ce que les noeuds vérifient ce n'est pas que "les comptes" (qui n'existent pas) sont "suffisamment approvisionnés" mais que "l'input" de la transaction (qui possède un identifiant unique et qui correspond à une somme de satoshi / bitcoin) n'a pas déjà été utilisée comme input d'une transaction précédente.

Ce qui ne m'est pas très clair: des transactions sont annoncées sans arrêt. Cependant chaque mineur doit choisir un moment où il s'arrête de vérifier la validité de nouvelles transactions toutes fraîches et se contente de prendre celles qu'il a déjà sous le coude pour construire un bloc et commencer a chercher le bon "nonce" qui va produire un sha-256 plus petit que la "difficulté". Comment ils font les mineurs pour décider quand est-ce qu'ils s'arrêtent d'inclure de nouvelles transactions pour se mettre a chercher le bon nonce ? Je devrais étudier plus ...

Tes remarques sont pertinentes. Pour la première j’ai simplifié volontairement pour ne pas trop complexifier.
Pour la seconde, j’avoue que j’en suis au même stade que toi : perplexe et interrogateur 🤨

A priori, il y a confusion. Les transactions et les blocs sont validée par les full node.

A priori, une transaction invalide ne sera jamais propagée dans le réseau. Mais dans le cas contraire, le mineur étant lui même full node, il devrait ne jamais le faire rentrer dans son propre mempool.

Je n'ai pas dû être clair. Je ne parlais pas de transaction invalides mais de transactions valides. Elles ne s'arrêtent pas d'affluer vers le mempool, n'est-ce pas ? Or les noeuds doivent à un certain moment dire "stop, maintenant je n'inclus plus de nouvelle transaction dans le prochain bloc, je les laisse dans le mempool et avec ce que j'ai déjà je me mets à incrémenter des nonces pour trouver le hash gagnant". Un noeud qui dit ça avec 1 transaction (voir zéro) part avec un avantage sur ceux qui prennent la peine de valider un paquet conséquent de transactions du mempool avant de commencer à essayer des nonces. J'imagine que c'est ce comportement (prendre peu voir pas de transactions pour un bloc) qui est communément appelé "self-mining". C'est ce point là qui n'est pas clair pour moi

Je ne suis pas certain. À partir de la réception d’un block, le mineur doit arrêter son challenge et intégrer les prochaines transactions dans son block.
Ce temps là est négligeable.

Pour la blockchain Bitcoin, la preuve de travail se présente sous la forme suivante (attention, accrochez-vous) :

« Trouver le nombre S, tel que le hash de l'en-tête du bloc précédent avec S soit inférieur à un nombre D ».

Pour résoudre ce problème, la machine calcule le hash associé au dernier bloc, puis il « suffit » de tester toutes les possibilités de S, jusqu'à en trouver une validant le défi.

On remarque assez intuitivement que plus D sera grand, plus il y aura de solutions S possibles. Au contraire, si D est suffisamment petit, l'ensemble des solutions diminue, et valider le bloc demande plus de calculs. D permet ainsi d'ajuster la difficulté de minage pour qu'en moyenne un nouveau bloc soit créé toutes les 10 minutes. La difficulté du réseau Bitcoin est étalonnée sur le premier bloc créé. Elle est actuellement de 2 227 847 638 503, ce qui signifie que la puissance de calcul actuelle du réseau est environ 2.000 milliards de fois supérieure à celle du premier bloc.

Ouf, il fallait le dire !

Voilà une explication claire du minage. Qu’en pensez-vous ?

EBA16F50-5BCF-42FE-B788-2A8754706C28.jpeg

  ·  last year Reveal Comment
  ·  last year (edited)

De l'arnaque !

Un post très clair afin de comprendr ele fonctionnement de la blockchain, UPVOTE !

Merci pour tes efforts !

You got an upvote of @galam on behalf of @zonguin.

Post très clair sur le minage, il m'a permis de comprendre des points qui m'étaient encore obscurs. Upvoté à 100%.

Attention il y a apparemment un voleur !, Help SVP, sur mon portefeuille je viens de voir une opération que je n'ai pas initiée : Transfer 0.411 SBD à Contestbuddy. Visiblement en allant sur son portefeuille je m'aperçois qu'il a hacké les mots de passe de plusieurs personnes.

Avez-vous un transfert pour promouvoir l'article ? je crois que le pb est là.

Effectivement mais ça n'a pas marché et depuis je n'ai que des ennuis. Comment puis-je changer mon mot de passe ? Merci de votre aide.

JE ne sais pas je ne maîtrise pas la chose.
Par contre, sur le discord de fanbase tu auras sans doute des réponses.

Le lien steemauto que tu as utilisé est bidon. C'est un site miroir.

Quel lien Steemauto ?

Celui de rikirz.
Pour faire ton transfert, tu as du utiliser ta clé active et donc il récupéré ta clé. Le lien steemauto dans le message de rikirz se termine par .gq C'est un lien bidon : steemauto est en .com.

Merci, je me suis fait avoir, tant pis pour moi. Je serai bien plus vigilant à l'avenir. Je pensais que ce réseau était assez clean mais ce n'est pas le cas. Maintenant il va falloir que je récupère une nouvelle clé.... Le début d'une probable galère. En tout cas merci pour ton aide. Assez curieusement j'arrive à passer par Busy mais pas par Steemit.

J'ai mis un message d'alerte sur le discord fanbase concernant ta mésaventure et j'ai rédigé un post aussi sur rikirz et contestbuddy. Il m'est arrivé la même sur mon wallet waves pour une somme minime dans les premiers temps où j'avais des cryptos.

Merci j'ai fait une demande de changement de mot de passe mais visiblement ça semble être long ! J'ai également averti d'autres personnes qui subissent la même mésaventure.

Ouch, je suis désolé! J'ai failli me faire avoir récemment aussi ... de plus en plus de hyènes autour ...

Le problème est que le compte de ce lascar est toujours actif. La méfiance est donc de mise.

  ·  last year (edited)

@flamingirl et à @frenchlondoner : j'espère que vous aurez le temps de lire cet article (mais je vous sais très occupée en ce moment) pour me dire ce que vous en pensez lundi lors du Steemit Takeover et en espérant que les grèves de transport ne commenceront pas avec un jour d'avance. A Paris tout est possible.... Bon week-end Pascal.

Il y a un voleur sur le réseau @contestbuddy !

Change your password @iptrucs, you have been phished.

Merci, j'ai fait une demande de changement de mot de passe mais c'est long...

Thanks @pjau