Home » E-Monnaies

Comment ça marche les bitcoins (2)

17 avril 2013 10 commentaires
tags : , , , , ,
Download PDF
20130417 - mining

Crédit Photo : Steve Jurvetson

Dans l’article précédent, je vous ai fait un rapide descriptif de trois grandes familles de chiffrement. Dans le cas du bitcoin, ce sont principalement la seconde et la troisième qui nous intéressent.

Comme vous ne le savez peut-être pas, la base du bitcoin est un problème mathématique à résoudre. Vous résolvez le problème, vous créez de nouveaux bitcoins et ils sont à vous. Ceci n’est possible que parce que l’ensemble des logiciels gérant les bitcoins sont d’accord sur une règle commune et un challenge commun.

Le challenge en question consiste, pour simplifier, à trouver une chaîne de carractères dont le début du double hashage SHA256 contient un certain nombre de bits à 0. Plus la difficulté augmente, plus le nombre de bits à 0 à trouver augmente.

Explications :

Si vous vous souvenez de l’article précédent, le chiffrement unidirectionnel consiste à transformer une chaîne de caractères en un autre de façon irréversible. Dans le cas de SHA256, la taille de la chaîne finale est de 32 octets (256 bits) quelle que soit la taille de la chaîne d’entrée. Il existe quantité d’outils pour générer des hash SHA256. On en trouve même en ligne, par exemple ici.

Si on donne à cet outil la chaîne « le message » à manger, on trouve 351eceaa68567f1f88b4861b6605f0b1b1ba1501c32ff9a9def5455f8cbfa332. Une seconde fois, et on obtient  f430363f9b312525854a2668cb0c255e720cf814dee44d4942ec3a358c69228c. Je vous laisse faire la conversion en binaire, f=1111, 4=0100, 3=0011, 0=0000 etc …

On voit donc ici que le hash en question commence par un 1. Il n’a donc jamais été un bon candidat pour devenir un paquet de bitcoin. A contrario, le mot « neutralité », doublement hashé, donne 2037c4eb5b3372ca082b20c0b6ae43b582665050299e9c771df1277359ee1f0c qui commence donc par deux zéros, ce qui a dû en faire un bon candidat au tout début de l’histoire du bitcoin. Actuellement, pour « trouver » un bloc de bitcoins, il faut aligner 107 zéros binaires en début de double-hash. Le dernier hash trouvé a été 00000000000001F5D0EAD9D0E7F93E50DF9402A93D4758320983E0A396F782A9.

Le « minage » de bitcoin consiste donc en gros à inventer des chaines de caractères, à les faire passer deux fois dans une moulinette qui calcule le hash SHA256 et à vérifier le nombre de zéro qui s’alignent au début de sa représentation binaire. Au tout début de l’histoire du bitcoin, un seul zéro en début de chaîne suffisait. Il en faut maintenant beaucoup plus. Tout est, au final, une question de chance, une chaîne de caractère correspondante pouvant être trouvée immédiatement, même de tête (même si personne ne mine des bitcoins à la main).

Le nombre de zéros requis pour générer un bloc de bitcoin valide est réévalué automatiquement par tous membre du réseau tous les 2016 blocs générés pour faire en sorte qu’avec la puissance de calcul moyenne disponible pendant les deux dernières semaines, les 2016 prochains blocs soient trouvés dans les deux prochaines semaines, ce qui maintient donc en théorie une création de 6 blocs par heures en moyenne.

Pour vous donner une idée, un processeur core2duo d’intel qu’on trouve dans bon nombre d’ordinateur de bureau est capable d’effectuer cette opération de double hashage entre 3 et 6 millions de fois par seconde. La puissance minière globale actuelle est estimée à 70Thash/s (soit 70 000 000 000 000 hash testés par seconde sur l’ensemble du réseau bitcoin) pour une production constante d’un bloc toutes les 10 minutes.

La corollaire est donc qu’avec votre ordinateur capable de générer 6 millions de hash par secondes, vous avez une chance non négligeable de tomber sur une bonne chaîne tous les… 200 ans.

La taille originale d’un bloc de bitcoin était de 50 unités. Elle est divisée par deux tous les 210000 blocs générés, elle est donc actuellement de 25BTC par bloc. Nous en sommes, à l’heure qu’il est, à 231803 blocs générés pour un peu plus de 11 millions de bitcoins.

En conclusion, avec le temps qui passe, la taille d’un bloc de bitcoin diminue et avec l’augmentation du nombre de mineurs en activité, la probabilité d’obtenir un bloc diminue également.

Le nombre de bitcoins possibles est intrinsèquement limité à 21 millions par le protocole. La difficulté étant peu ou prou maîtrisée dans le temps, on est en mesure de prévoir que 98% des bitcoins auront été minés entre 2025 et 2030.

Vous pouvez à présent reposer vos pelles et vos pioches. Dans le prochain article, on parlera du réseau peer2peer, de la chaîne de bitcoins, et peut être des transactions et de leur validation si vous êtes sages.

10 Comments »

  • CHoims said:

    Bonjour
    merci pour ces articles,

    y’a t il un intérêt particulier de trouver ces 0 en début de hash (est ce que ça peut servir à quelque chose d’autre, est ce de la recherche fondamentale ? est ce qu’on aura avancé sur quelque chose lorsqu’on les aura tous trouvé ?)
    Ou est ce une règle complètement arbitraire ?

    Si non, peut on imaginer la même chose avec un résultat utile ? (je ne sais pas, déchiffrer toutes les combinaisons possible de l’ADN, des trucs comme ça…)

  • Bruno (author) said:

    C’est totalement arbitraire, ça aurait pu être des 2, des 1, ou une chaîne 10101010 …

    Que ce soit utilisé pour des choses « utiles » est un brin compliqué dans la mesure ou il faudrait une autorité centrale qui fournisse le challenge à résoudre et que le but de l’opération est justement de ne pas en avoir.

  • Blupi said:

    « La taille originale d’un bloc de bitcoin était de 25 unités. »

    Vu la phrase qui suit et le début de l’article suivant, c’était pas 50 plutôt ? Sinon, la passage n’est pas très clair…

  • Bruno (author) said:

    @Blupi : remarque perspicace … C’est corrigé :)

  • Bruno (author) said:

    Les URL d’articles approchants, complétant le propos, sont les bienvenus.

  • beldeche said:

    Je ne suis pas sûr de comprendre.

    1 bitcoin c’est donc une chaîne dont le double hash commencera par plusieurs 0.
    Un bloc de bitcoins, c’est actuellement un ensemble de 25 bitcoins.

    Plus les CPUs gagnent en puissance et plus on est obligés d’inclure de 0 pour maintenir la fréquence de bitcoins trouvés.
    Plus le temps avance et plus on est obligé, de réduire le nombre de bitcoins dans un bloc car la mine s’épuise.

    C’est bien ça ?

  • Bruno (author) said:

    pas « 1 bitcoin » mais « 1 bloc de bitcoin ». Sinon, le reste des phrases est bon :)

  • beldeche said:

    Ok je pense que j’ai compris.

    On ne mine pas de bitcoins, on mine des blocs (des pépites en somme).

    Au départ, la mine est riche, les veines et les pépites sont grosses (les blocs valent 50 bitcoins). Au bout d’un certain nombre de pépites, la mine s’appauvrit et on se met à miner dans des veines 50% moins riches, on trouve toujours autant de pépites mais elles sont deux fois plus petites (et valent 2 fois moins).

    Ainsi de suite jusqu’à ce qu’on arrive aux veines les plus pauvres où là, les pépites ne valent plus que 1 bitcoin.

  • Bruno (author) said:

    pas 1BTC, non, vu qu’on divise par deux : 50, 25, 12.5, 6.25, 3.125, 1.5625, 0.78125, …

  • YellowTeeth said:

    1 – Merci pour ses supers articles qui me servent énormément
    2 –
    Citation :
    « Actuellement, pour « trouver » un bloc de bitcoins, il faut aligner 107 zéros binaires en début de double-hash. Le dernier double-hash trouvé a été 00000000000001F5D0EAD9D0E7F93E50DF9402A93D4758320983E0A396F782A9. »
    Déjà dans « 00000000000001F5D0EAD9D0E7F93E50DF9402A93D4758320983E0A396F782A9 » il y a 13 zéro.
    D’après mes souvenirs, la conversion HEXA de 0 en binaire donne 0000.
    Je par du principe que c’est de l’HEXA puisqu’il y a des « F » c’est peut-être là mon erreur enfin bref,
    4 (nombre de zero en binaire) x 13 (nombre de zéro en HEXA ) donne 52, à cela on rajoute 3 zéro supplémentaire car 1 convertie en binaire fait « 0001 »
    55 c’est quand même bien loin des 107 …

    Donc soit j’ai rien compris soit … ;)

    Merci de m’éclaircir l’esprit :)

Leave your response!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.


− 6 = deux