• Accueil
  • Automatisation
  • Performance
  • Sécurité
  • Intelligence
  • Recrutement
  • Contact
  • Blog
WAPSIWAPSIWAPSIWAPSI
  • W
  • A
  • P
  • S
  • I

Minage de crypto-monnaie

    Home Articles Minage de crypto-monnaie
    NextPrevious

    Minage de crypto-monnaie

    By WAPSI | Articles, Sécurité | Comments are Closed | 15 mai, 2019 | 1

    Introduction

    Cet article décrit le procédé du minage des crypto-monnaies d’un point de vue fonctionnel et technique, sans rentrer dans les aspects financiers et boursiers, en l’illustrant avec l’exemple du Bitcoin.

    Rappel sur les crypto-monnaies

    Base des transactions

    La base de données de toutes les transactions n’est pas gérée par une instance centrale comme une banque, mais elle est partagée dans un immense réseau peer to peer.

    Tous les gens connectés au réseau peuvent héberger une copie de la base de données qui contient toutes les transactions, c’est à dire que n’importe qui peut inscrire une transaction dans la base de données.

    Authentification des transactions

    Quand on voit un message dans la base de données qui annonce un transfert de crypto-monnaie, comment peut-on être certain de son auteur ?

    On va utiliser le principe de la cryptographie asymétrique. En cryptographie, généralement on utilise une clé qui permet de chiffrer et déchiffrer des messages. Mais il existe des systèmes de chiffrage plus sophistiqués comme l’algorithme RSA qui sont asymétriques, c’est à dire que la clé qui sert à chiffrer le message n’est pas la même que celle qui sert à le déchiffrer.

    Le chiffrage asymétrique n’est pas une opération lettre à lettre, elle transforme le message dans son ensemble et est impossible à faire dans l’autre sens si l’on n’a pas la clé de déchiffrage.

    Une des utilisations classiques de la cryptographie asymétrique c’est d‘avoir une clé de chiffrement qui est publique : vous la donnez à tout le monde et n’importe qui peut vous envoyer des messages codés. Mais la clé de déchiffrement reste privée, vous la gardez uniquement pour vous.

    Signature électronique des transactions

    Imaginez que j’ai une clé de chiffrement que je garde pour moi, qui soit privée et que la clé de déchiffrement soit publique.

    N’importe qui peut appliquer ma clé publique pour reconstituer le texte de la transaction.

    Du coup, on est sûr que c’est moi qui ai inscrit la transaction puisque personne d’autre n’aurait pu la chiffrer de cette manière-là, et c’est cela qui fournit l’authentification. Les transactions sont donc impossibles à falsifier sans posséder la clé privée. Une clé privée permet de calculer une clé publique mais l’inverse est impossible. C’est là-dessus que repose la sécurité.

    En pratique, pour échanger des crypto monnaies, il faut créer un compte et vous recevrez un identifiant, une clé privée et une clé publique qui sera connue de tous les nœuds du réseau. Si vous perdez la clé privée, c’est fatal pour votre monnaie (vous ne pourrez plus y accéder).

    Technologie Blockchain (chaîne de blocs)

    Quand on inscrit la structure des transactions, on inclut aussi une référence vers les transactions précédentes qui nous ont fourni l’argent. Cela a deux intérêts, pour valider une transaction on n’a pas besoin du solde du compte de quelqu’un, il suffit juste de vérifier que les transactions auxquelles il fait référence comme étant les sources n’ont pas déjà été utilisées dans une transaction passée. Le deuxième intérêt est que cela empêche de faire du copier-coller de transaction.

    Il y a de multiples copies de la base de données des transactions et elles doivent communiquer entre-elles pour se synchroniser. L’idée, c’est que chaque nœud du réseau enregistre les nouvelles transactions dont il a connaissance dans une liste de transactions « en attente ». Et donc tous les nœuds du réseau possèdent une liste de transactions en attente qui peuvent être très légèrement différentes les unes des autres et chaque nœud fait ainsi croitre sa liste de transactions en attente. Puis périodiquement, environ toute les 10 minutes, il y a un des nœuds du réseau dont on prend les transactions en attente et on les déclare validées et tout le monde se synchronise là-dessus. Ce groupe de transactions, on l’appelle « un bloc » et on recommence ainsi toutes les 10 minutes.

    Du coup, la liste des transactions validées se présente sous la forme d’une suite de blocs, c’est ce qu’on appelle la chaîne de blocs ou blockchain.

    Un bloc peut contenir un nombre quelconque de transactions (généralement entre 1 000 et 2 000) sans que sa taille dépasse le mégaoctet (cas du bitcoin).

    Fonctionnement du minage

    Il permet de donner la solution à la question suivante : comment choisit-on le nœud qui détient les transactions validées ?

    La règle c’est que pour proposer sa propre liste de transactions en attente comme étant le nouveau bloc sur lequel tout le monde doit s’aligner, il faut d’abord lui trouver un identifiant et on a défini des règles qui font que trouver un identifiant à un bloc, c’est un problème mathématique extrêmement compliqué.

    Donc chaque nœud du réseau travaille en permanence pour essayer de résoudre ce problème mathématique et trouver un identifiant pour sa liste de transactions en attente et le premier qui y parvient peut proposer son bloc et tout le monde se synchronise dessus.

    Pourquoi c’est difficile à résoudre ?

    Hachage

    Nous allons d’abord expliquer la fonction de hachage.

    Une fonction de hachage est une fonction qui prend en entrée une chaine de caractères de n’importe quelle longueur et qui donne en sortie une autre chaîne de caractères qui est de longueur fixe. Cette fonction a une autre caractéristique qui fait que le moindre changement dans la chaîne d’entrée, provoque un grand changement dans la chaine de sortie.

    La souris est mangée par le chat à 2UYE5D00NJ8NS654 (16 car)
    La souris est mangée par le chat ! à 3G6R3Q10DHUTXM12 (16 car) complètement différente de ci-dessus.

    Par exemple, l’algorithme de hachage SHA256 qui est utilisé par le protocole Bitcoin a une taille de sortie toujours de 256 bits.

    Identifiant de bloc

    Pour trouver un identifiant à chaque nouveau bloc de la blockchain, on va utiliser le principe du hachage. Pour cela, on fabrique un fichier qui contient toutes les transactions qu’on veut valider, ainsi que l’identifiant du bloc précédent et on fait passer le tout deux fois par une fonction de hachage. On obtient ainsi une suite de caractères qu’on va utiliser comme identifiant.

    L’intérêt de ce système c’est de protéger la base de données contre la moindre modification. Si vous voulez changer une transaction ou même juste rajouter un 0, ça va complètement changer le hachage et cela va donc changer l’identifiant du bloc. Mais comme l’identifiant du bloc est utilisé dans le hachage du bloc suivant, il faut aussi changer l’identifiant du bloc suivant et ainsi de suite dans toute la chaîne. Donc impossible d’aller changer une transaction dans le passé sans avoir à recalculer les identifiants de tous les blocs qui sont arrivés depuis.

    Un éventuel pirate pourrait tout à fait rajouter ses blocs à toute vitesse dans la blockchain.

    Ce qui protège de cette action, c’est qu’on a ajouté des conditions supplémentaires sur l’identifiant qui fait que le trouver, c’est compliqué. L’idée c’est que quand on fabrique le fichier qu’on veut hacher, on ajoute à la fin un nombre qu’on appelle un nonce et la présence de ce nonce va évidemment modifier le hachage. En fait, on impose des conditions sur le résultat qui font qu’il faut essayer plein de nonces différents avant d’en trouver un qui convienne et le seul moyen d’y arriver, c’est la force brute.

    Le nonce est une valeur entière de 32 bits, ce qui donne 4 milliards de possibilités.

    On essaye donc plein de nonces à toute vitesse jusqu’à en trouver un qui convienne et les conditions sont faites pour qu’une solution soit trouvée en moyenne toutes les 10 minutes dans le réseau. Evidemment, au fur et à mesure que le réseau grandit et que la puissance de calcul des ordinateurs augmente, on rend les conditions de plus en plus difficiles pour rester sur cette moyenne de 10 minutes.

    Difficulté du minage

    Afin de rendre le minage difficile, il y a ce qu’on appelle la difficulté cible. Afin de créer un bloc valide, un mineur doit trouver un hash qui est inférieur à la difficulté cible (par exemple le résultat du hash doit commencer par un zéro, puis deux zéro, etc). La difficulté change tous les 2016 blocs (bitcoin). Le réseau ajuste la difficulté afin que le temps de génération de ces 2016 blocs soit de 14 jours, quelle que soit la puissance de calcul déployée. C’est pourquoi la difficulté augmente donc avec la puissance du réseau

    Preuve de travail

    Ce qui est intéressant avec ce système c’est que l’on protège la blockchain de la fraude, en demandant de manière un peu artificielle aux nœuds du réseau de résoudre un problème compliqué pour avoir le droit de contribuer, c’est ce qu’on appelle la preuve de travail. La conséquence de cela, c’est que la capacité à frauder devient liée à la puissance de calcul dont on dispose et non pas au nombre de nœuds du réseau qu’on possède.

    On est presque au bout de la technologie de la blockchain, il reste juste un problème à résoudre. Il existe une petite probabilité que deux nœuds du réseau arrivent à proposer tous les deux leur bloc de manière quasi simultanée et puis il existe aussi un tout petit risque que quelqu’un arrive, sur un des nœuds du réseau, à pirater un bloc ou deux, s’il est suffisamment puissant et avec un peu de chance.

    En cas de piratage du dernier bloc ou si pas de chance, deux nœuds du réseau arrivent tous les deux à proposer leur bloc, on se retrouve avec deux chaines de bloc différentes. Et là, la règle est simple puisque tous les nœuds du réseau doivent conserver les deux chaines, mais on ne travaille que sur la plus longue des deux, ce qui fait que rapidement, l’une des deux chaines va prendre le pas sur l’autre.

    On est protégé par le fait que chacun ne possède qu’une faible puissance de calcul comparée au total. En fait, si quelqu’un voulait vraiment compromettre la blockchain, il faudrait qu’il possède plus de 50% de la puissance de calcul du réseau.

    Récompense par bloc

    On peut se demander pourquoi tous les ordinateurs du réseau accepteraient de mettre leur puissance de calcul au service de la protection de la crypto-monnaie.

    La réponse c’est qu’on les paye et on les paye en crypto-monnaie créée à cet effet. Pour un bloc bitcoin validé par exemple, ce jour on reçoit 12,5 bitcoins (cela représente 56 300 euros au cours actuel).

    Et ces bitcoins, ils viennent de nulle part, ils sont créés artificiellement pour l’occasion, c’est d’ailleurs le seul mécanisme de création de bitcoins.

    Et c’est pour cela que les ordinateurs qui participent à la sécurisation du réseau, on les appelle parfois des mineurs, en référence aux mineurs qui allaient chercher de l’or pour augmenter la masse monétaire.

    Alors 50 000 euros pour résoudre un problème, ça à l’air intéressant, sauf que maintenant il faut mettre tellement de puissance de calcul pour y arriver le premier qu’il n’y a quasiment aucune chance d’y arriver tout seul, il faut se regrouper dans des coopératives. En 2016, une dizaine de coopératives se trouvant majoritairement en Chine ont fourni 95% des blocs.

    Et puis le mécanisme aussi appelé havling est tel que la récompense en bitcoin va décroitre au cours du temps (divisé par 2 tous les 210 000 blocs) :

    • Du bloc 210 000 au bloc 419 999 (créé le 9 juillet 2016), la récompense est de 25 bitcoins par bloc
    • Du bloc 420 000 au bloc 629 999, la récompense est de 12,5 bitcoins par bloc
    • Du bloc 630 000 au bloc 839 999, la récompense est de 6,25 bitcoins par bloc
    • …

    Actuellement, un bloc est produit environ toutes les 10 minutes, ce qui signifie qu’environ 1 800 nouveaux bitcoins sont extraits chaque jour.

    Actuellement il y a 17,65 millions de bitcoins en circulation et le bloc dernièrement miné devait être le bloc 572 010. Le cours du bitcoin (BTC) est de 4504 euros au 16/04/2019.

    Au final, la masse monétaire des bitcoins  va converger vers 21 millions de bitcoins, guère plus.

    Consommation électrique

    Le minage est une activité décriée en raison de l’importance de sa consommation énergétique. La consommation mondiale entrainée par le minage au 1er juillet 2018 serait l’équivalent à l’énergie produite par an par 6 réacteurs nucléaires de 1300MW fonctionnant à plein régime.

    Conclusion

    Le minage des crypto-monnaies, permettant de sécuriser les transactions, utilise finalement une technique assez simple allié à la technologie de stockage blockchain mais nécessite toutefois de disposer d’une puissance de calcul assez conséquente.   

    Le minage est sans doute le processus le moins connu du grand public mais son utilité est indéniable et il est ce qui permet à la technologie blockchain d’exister.

    blockchain, Crypto currency, crypto currency mining, Crypto-monnaie, minage, minage crypto-monnaie, sécurité

    WAPSI

    More posts by WAPSI

    Related Post

    • Les principes des tests logiciels

      By WAPSI | Comments are Closed

      Cet article a pour finalité de définir les tests logiciels et de mettre en avant les principes des tests logiciels.  Tout d’abord, Qu’est-ce qu’un Test logiciel ?  Contrairement aux idées reçues, le test logiciel ne se limite pas àRead more

    • Talend for Data Integration – Les Bonnes Pratiques

      By WAPSI | Comments are Closed

      1 Préambule Dans la grande majorité des cas, les développeurs découvrent les outils Talend par la version communautaire, et bien souvent avec la brique Data Integration pour traiter leurs problématiques d’intégration. Si certains ont déjàRead more

    • Dynatrace comme outil d’audit puissant, gain de temps , gain d’expertise

      By WAPSI | Comments are Closed

      Les expertises d’architecture sont souvent demandées pour aider une équipe à remettre en état et optimiser une application qui ne semble pas optimale. Le premier principe est de faire auditer avec un œil nouveau unRead more

    • Selenium – les étapes vers l’automatisation

      By WAPSI | Comments are Closed

      Selenium est un framework dédié à l’automatisation de test disposant d’une version IDE et d’une version API nommé Selenium WebDriver qui peut être exploité avec plusieurs langages : PHP, Javascript, C#, Python, Ruby, Perl etRead more

    • Talend for Data Integration : Les Bonnes Pratiques – Part 2

      By WAPSI | Comments are Closed

      1 Préambule Dans le premier volet nous avons vu les bases sur lesquelles s’appuyer pour démarrer dans de bonnes conditions nos projet Talend. Dans ce second volet, nous allons aborder des notions plus avancées …Read more

    • NeoLoad comme émulateur

      By WAPSI | Comments are Closed

      Introduction  Avec la diversification et la complexification des objets connectés, de plus en plus de structures informatiques (serveurs, programmes, etc.) voient le jour dans le but de les gérer et d’interagir avec.   Cependant, réaliser des tests de performances sur les services d’une montre ou d’une voiture connectée n’est pas chose aisée : l’interface d’interaction surRead more

    • La complexité des tests de performance sur une Single Page Application

      By WAPSI | Comments are Closed

      Les technologies de développement Web ont beaucoup évolué durant les 30 dernières années. Les pages Web des sites des années 90 étaient surchargées d’images et le contenu était très condensé. Les navigateurs n’avaient pour rôleRead more

    • Boite à outil : GIT

      By WAPSI | Comments are Closed

      Il est des incontournables dans la boite à outils des dev /devOps et affiliés et git fait partis de ceux-là… Mais qu’est-ce que git ? Essayons d’imager un peu. N’avez-vous jamais eu ce fameux document WordRead more

    • KPI : les clés du test de performance pour un passage en prod réussi – La conception

      By WAPSI | Comments are Closed

      Quelle est la formule magique pour réussir sa mise en production ?  Chacun peut avoir son approche et donner ses clés ; un responsable d’infra dira que c’est d’avoir bien respecté le DAT et d’avoir préparé sesRead more

    NextPrevious
    WAPSI logo blanc

    NAVIGATION

    • WAPSI
    • Automatisation
    • Performance
    • Sécurité
    • Intelligence
    • Contact
    • Blog

    NOUS CONTACTER

    contact@wapsi.fr

    +33 6 72 35 13 26

    16 rue Washington 75008 Paris

    Tous droits réservés © 2019 WAPSI

    Mentions légales | Politique de Confidentialité
    • Accueil
    • Automatisation
    • Performance
    • Sécurité
    • Intelligence
    • Recrutement
    • Contact
    • Blog
    WAPSI