Bitcoin partie 1: une histoire de consensus

Introduction

À l’écriture de cet article, le bitcoin connait à nouveau une mise en avant médiatique.

Certaines chaines de télévision accompagnées d’articles de presse divers et variés donnent chacun leur avis et leur explication sur le sujet…avec souvent beaucoup de confusion et d’amalgames.

Le bitcoin vu par les médias

Cliquez sur l'image pour l'agrandir.

C’est personnellement un thème qui me passionne. Techniquement d’abord puis idéologiquement ensuite. Mais il m’a fallu du temps et pas mal de réflexions pour progressivement me faire un avis et comprendre un peu mieux les rouages de cet écosystème…en continuant toujours d’apprendre.

Depuis plus de 10 ans maintenant, le bitcoin est sources de polémiques : encensé par certains, maudit par d’autres…l’avantage est qu’aujourd’hui vous pouvez trouver très facilement de nombreuses informations sur son fonctionnement, ses origines et ses principes.

bitcoin: pour ou contre

Cliquez sur l'image pour l'agrandir.

Mais j’avais moi aussi envie d’apporter une vue sur la thématique. Certes, je n’ai aucune légitimité ou notoriété qui le justifierait, mais le Bitcoin étant pour moi quelque par un symbole de liberté, je suis donc libre d’écrire sur le sujet…et tant mieux si quelques naufragés du net arrivés ici par hasard puissent y trouver de l’information qu’ils jugeront utile...ou pas.

Attention, je ne suis pas un militant. Je n’est pas pour objectif de rallier qui que ce soit à une cause particulière.

Je souhaite simplement, et surtout par le biais technique, essayer d’expliquer ce qu’un simple tweet ou une chronique de quelques minutes dans un talkshow ne pourront faire autour de Bitcoin.

Je ne vais pas reprendre en détail non plus tout ce qui peut toucher au Bitcoin. Je vais simplement traiter de quelques fondamentaux pour poursuivre sur des mises en application techniques possibles.



Le but de ce site restant l’expérimentation, mon objectif est de pouvoir partager certains outils, matériels et applicatifs permettant de jouer avec Bitcoin, d’abord et avant tout par pure curiosité et passion de la technologie.

Un peu de vocabulaire

"B"itcoin avec B ou un b

Pour démarrer, assurons-nous d’être précis sur le vocabulaire. Bitcoin est un terme générique qui couvre en fait trois notions importantes:

  • La cryptomonnaie: nommée bitcoin avec un b minuscule, et abrégée en BTC. C’est une devise numérique. Elle est utilisée pour échanger de la valeur (valeur que le marché est prêt à lui donner). Elle n’a pas d’existence physique et son émission est limitée à 21 millions de BTC. 1 BTC peut être divisé en 100 000 000 d’unités plus petites, appelées satoshis (ou sats). Cela signifie que la plus petite unité de BTC est 1 satoshi soit 0.00000001 BTC.
  • Ex: Je dispose de 0.000025 BTC

  • Le réseau: nommé Bitcoin avec un B majuscule. C’est un ensemble d’ordinateurs (ou nœuds/nodes) interconnectés entre eux, de différents types, chargés de valider et de maintenir les transactions associées à la cryptomonnaie bitcoin. C’est l’infrastructure technique.
  • Ex: Le réseau Bitcoin est décentralisé.

  • Le protocole: nommé également Bitcoin. C’est un ensemble de règles implémentables au sein d’un logiciel qui définissent la manière de gérer les transactions bitcoin et le mécanisme d’émission des nouveaux BTC.
  • Ex: Le protocole Bitcoin est open source.

La blockchain

Enfin, on n’a la fameuse blockchain. Souvent confondu avec le Bitcoin. La blockchain est en fait une technologie totalement distincte et indépendante de Bitcoin.

Résumé grossièrement, une blockchain est une base de données répliquée autant de fois qu’il y’a de nœuds (d’ordinateurs) qui l’exécute et dont l’évolution est soumise à un consensus partagé par ces derniers.

Elle est constituée de blocs reliés entre eux dans un ordre chronologique. Ces blocs hébergent des données qui peuvent être de différentes natures et liées mathématiquement les uns aux autres grâce à des algorithmes cryptographiques. Cela à pour conséquence que la modification d’un block n’est pas possible sans engendrer une modification de tous les blocks qui le précède.

Il s’avère que pour son fonctionnement, le réseau Bitcoin s’appuie sur la technologie blockchain. Les données des blocs sont utilisées pour stocker les transactions réalisées en BTC.

En résumé

L'écosystème B(b)itcoin est constitué d'une devise numérique émise sur une blockchain exécutée sur un réseau composé de nœuds dont les règles d’émission et de gestion des transactions sont décrites dans un protocole open source.

Bitcoin/bitcoin et blockchain

Cliquez sur l'image pour l'agrandir.

Le PoW: Proof of Work

On continue avec les fondamentaux et la fameuse preuve de travail ou PoW: Proof of Work.

Les généraux byzantins

Pour ça on n’est d’abord obligé de parler d’un problème bien connu en cryptographie: le problème des généraux byzantins. C’est un concept théorique en informatique qui illustre le défi de parvenir à un consensus dans un système décentralisé ou certains participants peuvent être malveillants.

Il a été formulé en 1982 par Leslie Lamport, Robert Shostak, et Marshall dans le cadre de recherches sur la tolérance aux fautes des systèmes distribués.

Imaginez plusieurs généraux d’une armée byzantine entourant une ville ennemie. Ils doivent décider d’attaquer ou de se retirer. Mais pour cela, il faut d’abord qu’ils se mettent d’accord pour que l’armée agisse de manière coordonnée. Le problème est que les généraux sont aux quatre coins de la ville et ne peuvent pas se parler directement. Ils doivent pour cela envoyer des messagers qui traversent le champ de bataille pour échanger les ordres afin de parvenir à un accord commun.

Illustration des généraux byzantins: source https://viresinnumeris.fr/probleme-generaux-byzantins/

Cliquez sur l'image pour l'agrandir.

Le risque c’est que les messagers se fassent attraper, que les messages soient modifiés ou pire que l’un des messagers voire même un général se fasse corrompre et diffuse de fausses informations.

Illustration des généraux byzantins: source https://viresinnumeris.fr/probleme-generaux-byzantins/

Cliquez sur l'image pour l'agrandir.

En l’absence d’un décideur de plus haut niveau, comment s’assurer qu’un consensus se fasse entre les généraux et que seuls les généraux restés intègre participent à la stratégie de bataille en élimant les traitres.

Illustration des généraux byzantins: source https://viresinnumeris.fr/probleme-generaux-byzantins/

Cliquez sur l'image pour l'agrandir.

(Les trois images précédentes sont tirées du site viresinnumeris.fr)

Il en ressort que mathématiquement, il faut qu’au moins deux tiers des généraux soient loyaux et disposent de la bonne information.

Ce concept est toujours utilisé de nos jours pour traiter des problèmes de tolérances aux pannes et de fiabilités de la donnée.



C’est notamment un vrai challenge dans des systèmes dits décentralisés, une des promesses derrière la blockchain. Petite parenthèse, une blockchain n’a d’intérêt qu’avec un nombre minimal de participants. Même si techniquement une blockchain peut s’exécuter sur un seul nœud, l’intérêt est alors complètement nul, car dans ce cas, une bonne vieille base de données traditionnelle sera largement plus performante et efficace.



Le nombre de nœuds (nodes) à partir duquel on peut définir l’intérêt de retenir une structure blockchain dépend des usages.

On distingue deux cas:

  • Blockchain publique, comme celle associée à Bitcoin. Cela implique que n’importe qui peut, sans autorisation, participer à la blockchain sous condition d’avoir l’équipement nécessaire et de récupérer le logiciel associé. Dans ce cas l’idéal est d’avoir le maximum de nœuds possible, la blockchain devenant de plus en plus sure au fur à mesure que le nombre de nœuds grossit. Toujours par rapport aux généraux byzantins, s’il faut corrompre 2/3 des généraux, cela implique que plus il y’aura de généraux (donc de node) plus il faudra corrompre de généraux…mais trouver le consensus peut devenir alors plus complexe (plus il y’a de généraux (de nodes) à "synchroniser", plus cela peut être long à réaliser). On se rapproche de la problématique du trilemme des blockchains que j'évoque ici.
  • Blockchain privée, dédiée à des acteurs issus du même secteur. Cela va dépendre du secteur en question et du but recherché. Cela peut être fait dans le cadre de partenariats ou des organismes privés décident de baser le suivi de leurs échanges sur une blockchain pour conserver une neutralité dans leur dépendance et/ou supprimer un intermédiaire jugé trop couteux. Dans ce cas, la participation à la blockchain est soumise à autorisation et on peut imaginer un nombre de nœuds plus réduit…mais il faut que le jeu en vaille la chandelle et ne pas surfer sur une mode temporaire….

Dans tous les cas on cherche à privilégier la décentralisation.

Cela implique un nombre important de participants à un réseau sans notion de hiérarchie. Sur le papier, cela protège d’une censure ou d’une manipulation du réseau par un organisme central.

Mais comment s’assurer que tous les participants jouent le jeu et ne s’amusent pas à rendre le système défaillant ou à la modifier pour son intérêt personnel.

L'art de contourner le problème

Eh bien, pour l’instant il n’existe pas de réponse parfaite. En l’état c’est même impossible à garantir.

Mais on peut cependant créer un système dans lequel il devient très compliqué pour un ou des acteurs corrompus de saboter le plan de bataille.

On rend la chose tellement compliquée qu’il devient économiquement (en temps, en argent et en énergie) plus cher de manipuler l’issue de la guerre à son avantage que des gains que cela pourrait rapporter.



En utilisant une autre image, c’est comme si des voleurs dépenseraient plus d’argent et de moyens pour ouvrir un coffre qu’il n’y a d’argent dans le coffre. Et c’est là toute la subtilité…et la magie du protocole Bitcoin.

Son (ou ses créateurs, on n’en reparlera un peu plus tard) n’ont tous simplement par cherché à rendre impossible la corruption du réseau et par rebond de la devise numériques qu’il héberge, mais à rendre plus intéressant de participer au réseau que de le corrompre.

C’est là qu’intervient la fameuse « preuve de travail » (Proof Of Work) PoW.

Type de node

Au sein du réseau Bitcoin, on trouve principalement deux types de nœuds (nodes).

  • Les nodes d’hébergement de la blockchain.Ces derniers existent selon deux catégories.
    • Les noeuds complets (ou full node): Il télécharge et conserve une copie complète de la blockchain
    • Les noeuds légers (ou lightweight node): Ils ne téléchargent qu’une partie de la blockchain.

    Dans les deux cas, leur rôle est de fournir la donnée existante a qui le demande et à participer à la résilience des transactions. Ils ne créent pas de block mais s’assurent que tous les blocks existants et nouvellement proposés soit toujours valides et conformes au protocole. C’est une tache relativement simple à réaliser et qui n’exige pas de grands moyens (en dehors d’un espace disque important pour les full nodes). Il n’y a pas de récompense prévue pour ce type de node.

  • Les mining node ou nœud de minage. Ce sont les nœuds qui participent à la création de nouveaux blocs. Ce sont eux qui émettent (mine) de nouveaux BTC (via les règles définies dans le protocole Bitcoin) et qui traitent les nouvelles transactions. C’est une tâche qui nécessite de plus en plus de ressource à fur à mesure que le réseau se développe (de la même manière qu’il devient de plus dure de chercher de l’or à fur à mesure qu’il se raréfie).

Il existe encore d’autres types de nodes, mais dont ne parlera pas ici. Voici en tous cas un résumé des nœuds possibles sur le réseau Bitcoin.

Type de Nœud Rôle Principal Stockage Blockchain Sécurité Exemple d'usage
Full Node Valide toutes les transactions et blocs Copie complète Très élevée Bitcoin Core, maintien du réseau
Lightweight Nod Accès rapide au réseau sans tout télécharer Partiel Moyenne Portefeuilles mobiles
Mining Node Création de nouveaux blocs via preuve de travail En tandem avec un full node Très élevée Minage professionnel
Archival Node Stocke toutes les données historiques de la blockchain Massive Très élevée Recherche et analyses
Routing Node Facilite les paiements sur des couches secondaires Pas de stockage direct Moyenne Lightning Network

Chaque type de nœud a un rôle spécifique, mais ils travaillent ensemble pour assurer la sécurité, la décentralisation et le fonctionnement fluide du réseau Bitcoin.

La preuve de travail concerne les mineurs (mining node) et exige du matériel très spécifique (des ASICS Application-Specific Integrated Circuits (ou circuits intégrés spécifiques à une application)) dédié à cette activité.

Principe du minage

L’objectif est de résoudre un calcul mathématique complexe. Le premier qui résout ce calcul gagne le droit d’inscrire les dernières transactions et de générer le nouveau block. Pour cela il sera récompensé de deux manières.

  • Il sera crédité du nombre de BTC associé à l’émission du block. Le protocole défini l’émission de nouveau BTC à chaque création de block. Ce nombre diminue de moitié tous les 4 ans environ, de manière à réduire progressivement le nombre de BTC produit jusqu’à devenir nulle une fois les 21 millions de BTC émis.
  • Il sera crédité des frais associés aux transactions inscrites dans ce nouveau block. Toute personne qui désire utiliser le réseau Bitcoin pour émettre une transaction doit s’acquitter de frais qui fluctuent fonction du niveau de sollicitation du réseau. Plus le réseau est utilisé, plus les frais augmentent. Une fois les 21 millions de BTC émis (pour l’instant prévu en 2140), les frais seront la seule source de revenue des mineurs.

Ce fameux calcul mathématique nécessite de la puissance de calcul, il va donc consommer de l’énergie électrique à travers l’usage d’équipement informatique spécifique.

Si on veut gagner des bitcoins par le minage, il va falloir prouver son engagement au réseau en fournissant de la puissance informatique. Plus on fournit de puissance au réseau, plus on augmente ses chances de résoudre le calcul avant les autres, donc de générer un nouveau block et d’y inscrire les nouvelles transactions, donc de gagner les BTC associés: c’est la preuve de travail.

C'est comme résoudre un puzzle mathématique, chacun essaye de trouver la solution, le premier à trouver est récompensé.

Illustration du PoW : https://www.ledger.com/academy/blockchain/what-is-proof-of-work

Cliquez sur l'image pour l'agrandir.

Principe de la difficulté de minage

La ou la magie opère c’est que plus il y’a de mineurs, plus la difficulté de calcul augmente. Et inversement. On parle de la difficulté de minage. Celle ci n'est pas statique. Le but étant que le calcul soit toujours résolvable environ toutes les 10 minutes. Donc toute les 10 minutes, un challenge est lancé permettant de désigner celui qui va produire le prochain block et inscrire les transactions liés aux échanges de BTC.

C’est comme si on augmentait le nombre de chiffres à trouver au loto au fur à mesure qu’il y’a de nouveaux joueurs, mais avec l’objectif d’avoir un gagnant à chaque tirage…et si plusieurs trouvent la combinaison, c’est le premier à avoir enregistré son ticket qui gagne la mise.

La puissance de minage est exprimée en TH/s soit la capacité à effectuer un trillion de calculs par seconde. Attention, ce sont des calculs dédié à la recherche de la solution pour gagner le droit de créér le block. Ce sont des calculs de hash: C’est le fameux hasrate.

Avoir 1TH/s correspond à pouvoir tester un trillion de solutions possibles à la seconde pour espérer trouver la solution a l'équation proposée par le réseau. Pour optimiser au mieux les opérations, ce sont les fameux ASIC évoqués précedemment qui font le travail. Ce sont des puces spécialisées qui à l'inverse de nos CPU d'ordinateur ne savent faire qu'une seule et meme chose: ils ne peuvent que "miner", et uniquement sur le réseau Bitcoin (ou d'autres réseau qui utiliserait le meme algorithme de haschage (SHA256) dédié à la résolution du défi algorithmique proposée).

Vous pouvez d’ailleurs suivre ici l’évolution de la puissance du réseau. Plus ce chiffre est elevé, plus il y'a de mineur sur le réseau, et plus est elevé la difficulté de minage. Inversement si le chiffre baisse, c'est que des mineurs se retirent car leur rentabilité n'est plus assuré...mais que la difficulté de minage devient plus facile, donc peut encourager d'autres à revenir sur le réseau puisque plus de chance de réussir le défi..etc..etc

Illustration du hasrate et de la difficulté de minage : https://mempool.space/fr/graphs/mining/hashrate-difficulty#1y

Cliquez sur l'image pour l'agrandir.

Au 3 janvier 2025, le réseau Bitcoin a atteint un nouveau record de puissance de calcul, avec un hashrate dépassant les 1 000 000 000 TH/s…

Autant vous prévenir dès maintenant, miner à la maison sur du materiel classique est devenu impossible....du moins dans l'objectif de gagner de l'argent...mais j'en parlerais davantage plus tard

Difficile à trouver mais simple à vérifier

En plus de cette adaptivité de la difficulté de minage, garantissant une création de block régulière et en maintenant une adaptation de l’équation aux évolutions matérielles des mineurs, la preuve de travail utilisé par Bitcoin est simple à vérifier. La ou il faut des ASICS et réaliser un grand nombre d’opérations pour trouver la solution au calcul soumis par le réseau, une fois la solution trouvée et proposée par un mineur, il est extrêmement simple et rapide de vérifier si la solution est juste…et donc d’approuver le block soumis par le mineur.

Le consensus de Nakamoto

Cette preuve de travail, avec toute la logique qui l’accompagne forme ce qu’on appelle le consensus de Nakamoto…et c’est la véritable première fois qu’une réponse à la problématique des généraux byzantins est mise en œuvre à grande échelle.

En dehors de toute considération économique, elle est l’une des révolutions technologiques majeures apportées par le Bitcoin.

Le consensus porte le nom de son créateur, le fameux Satoshi Nakamoto qui est à l’origine de l’écosystème Bitcoin. Je ne vais pas m’étendre trop sur le sujet, car c’est sans doute un des points qui fascine le plus autour de Bitcoin: on ne sait toujours pas qui est Satoshi Nakamoto.

Il est à l’initiative du livre blanc sur bitcoin, mais n’a jamais révélé son identité pour disparaitre complètement des écrans radars en 2010. Depuis, de nombreuses hypothèses ont émergées, alimentant pour certaines le complotisme à la mode sur les réseaux sociaux. Pour certains, il ne s’agirait pas d’une personne, mais d’un groupe de personnes. C’est là l’une des forces de Bitcoin, en ne pouvant juger la personnalité de son créateur, on ne peut que se concentrer sur son travail et ce qu’il a produit techniquement.

Le mysterieux Satoshi Nakamoto

Cliquez sur l'image pour l'agrandir.

Sans être la solution ultime à la problématique des généraux byzantins, le consensus de Nakamoto, depuis le 3 janvier 2009, date du minage du premier bloc, démontre la capacité à partager de l’information au sein d’un réseau décentralisé hébergeant une blockchain dans le cadre d’un protocole open source.

C’est le contournement le plus fiable trouvé jusqu’à présent pour traiter la problématique des généraux byzantins rendant le réseau Bitcoin comme l'un des réseau informatique le plus sûr au monde (si ne n'est le plus sûr). Cela fait plus de 10 ans que le réseau tourne et grandit, sans jamais avoir été piraté. Il n’a connu que deux incidents mineurs depuis 2009 et propose le plus haut niveau de disponibilité devant le moteur de recherche de Google.

Alors pourquoi le consensus de Nakamoto arrive à cette prouesse. Tous simplement parce qu’en plus d’associer des principes cryptographiques à la technologie Blockchain, d'exploiter la preuve de travail, il s’appuie également sur la théorie des jeux.

La théorie des jeux est une branche mathématique qui analyse les décisions prises par des individus (des joueurs) dans des situations ou leurs gains ou pertes dépendent des actions des autres.

Avec ce système de proof of work, il devient toujours mathématiquement plus intéressant de participer au réseau (de miner du BTC) que de chercher à détruire le réseau.

Le minage de bitcoin est devenu une activité industrielle, chercher à générer de faux blocks et à truquer les transactions, reviendrait à investir une quantité financière astronomique pour acquérir suffisamment de puissance de calcul et s’assurer de miner les blocks avant tout le monde.

Ferme de minage : Photo : La Presse canadienne / Paul Chiasson

Cliquez sur l'image pour l'agrandir.

Il est vrai que le calcul mathématique exposé au mineur n’a aucun intérêt direct. On ne cherche pas à résoudre une problématique scientifique. C’est une équation à résoudre dont la difficulté est proportionnelle au nombre de mineurs. Sa résolution n’apporte absolument rien d’autre que d’avoir la primeur de miner le prochain block et d’empocher les gains associés.

Mais cette consommation énergique, fatalement induite par la preuve de travail, si décriée, est en même temps la meilleure garantie que personne ne puisse prendre la main sur le réseau. C’est une protection contre tout acteur qui chercherait à falsifier les transactions. Si vraiment il a des moyens conséquents pour tenter la chose, c’est beaucoup plus intéressant pour lui de mettre alors ces moyens à contribution du réseau plutôt que contre le réseau.



Si on réfléchit, quel intérêt y’aurait-il à détruire le réseau Bitcoin autre qu’idéologique. Si demain le réseau Bitcoin venait à tomber, alors la devise numérique associée n’aurait plus aucune valeur.

Si un acteur arrivait à truquer les transactions, d’une manière ou d’une autre la chose finirait par se voir puisque toutes les transactions sont publiques.Je n’en ai pas parlé jusque-là, mais il n’y a pas que le protocole qui est open source, toutes les transactions sont visibles…et vérifiable par tous nodes connecté au réseau (on parle de plus de 20000 nodes répartis (inégalement) dans plus de 100 pays)…Cet acteur aurait donc mis des moyens colossaux en place pour n’en tirer aucun bénéfice à la fin ?

Je ne vais pas rentrer dans le débat écologique du minage du bitcoin. C’est un sujet très sensible, et qui mériterait des articles dédiés. Bien sûr que le consensus de Nakamoto à travers l’usage du PoW est un consommateur d’énergie énorme, mais qui n’est pas sans but et sans usage.

De plus, il faut intégrer que maintenant que le minage de BTC est devenu une activité industrielle, il obéit aux lois de la rentabilité. La dépense principale d’un mineur est le coup de l’électricité, son activité n’a d’intérêt que s’il gagne plus en BTC qu’il ne dépense en énergie. Il est à la recherche constante de l’électricité la moins chère possible…et de plus en plus l’électricité la moins onéreuse est l’énergie verte et/ou l’énergie inutilisée/gâchée.

À l’argument de la consommation électrique du Bitcoin plus importante qu’un pays se voit maintenant opposer l’argument de l’accélération de l’adoption de l’énergie verte et de l’aide à la régulation et du développement des réseaux électriques que peut offrir le minage de bitcoin.

Bref, l’idée que le réseau Bitcoin puisse être autre chose qu’un simple gouffre énergique commence à se faire entendre.

Conclusion

C’est sur cette phrase que certains écologistes pourraient trouver provocateur que se termine ce premier article sur Bitcoin.

D’autres vont suivre, mais il était déjà important de mettre en avant la base de fonctionnement du réseau Bitcoin et d’avoir un minimum de compréhension de l’implémentation technique de Bitcoin et plus spécifiquement de son consensus.

Il faut bien différentier le réseau Bitcoin de la device numérique BTC qui y circule.



Je n’ai même pas évoqué ici le cas de la double dépense, car on n’est déjà dans l’application financière permise par la technologie Bitcoin. J’aurais davantage l’occasion de parler de ce sujet lors du prochain article plus orienté sur les transactions BTC.

On peut largement parler de Bitcoin sans avoir à évoquer la spéculation ou le trading. Je ne nie pas que cela en fait partie, mais il y'a d'autres prismes que l'on peut utiliser pour traiter du Bitcoin

Et pour tous ceux qui s'intéressent de près ou de loin à la technologie, forcée de constater que le Bitcoin est extrêmement intéressant à étudier. J'espère d'ailleurs appuyer davantage cet argument avec l'article qui suit.