Comment fonctionne Bitcoin

Comment fonctionne Bitcoin ?

Dossier : BitcoinMagazine N°792 Février 2024
Par Pierre NOIZAT (X80)

Pour par­ler de Bit­coin, il est pré­fé­rable de connaître le fonc­tion­ne­ment de ce réseau de paie­ment décen­tra­li­sé. Plon­gez dans les entrailles de la machine, non sans au pas­sage digé­rer quelques for­mules mathé­ma­tiques qui vous rap­pel­le­ront les années sur le Platâl !

Bit­coin est un réseau de paie­ment décen­tra­li­sé qui uti­lise une chaîne de blocs pour enre­gis­trer ses tran­sac­tions, sécu­ri­sée par le pro­to­cole de la preuve de tra­vail. Expli­quons ces concepts : paie­ment, décen­tra­li­sa­tion, chaîne de blocs (blo­ck­chain) et preuve de travail. 

Paiement

Un paie­ment élec­tro­nique est un mes­sage qui com­porte essen­tiel­le­ment trois infor­ma­tions : l’origine des fonds, leur des­ti­na­tion et le mon­tant de la tran­sac­tion. Un réseau de paie­ment peut être cen­tra­li­sé (exemples : SEPA, ACH, Swift, Visa, Mas­ter­card, etc.) ou, depuis l’invention de Bit­coin, décen­tra­li­sé (exemples : Bit­coin, Ethe­reum, Sola­na, Car­da­no, Doge­coin, etc.). L’origine des fonds est consti­tuée des entrées de la tran­sac­tion (inputs) et la des­ti­na­tion est com­po­sée des sor­ties (out­puts).

Bit­coin fonc­tionne sur le prin­cipe des UTXOs, acro­nyme en anglais de unspent tran­sac­tion out­puts, c’est-à-dire que les fonds dis­po­nibles pour de nou­velles tran­sac­tions sont consti­tués des sor­ties de tran­sac­tions pré­cé­dentes non encore uti­li­sées. Ces UTXOs sont en quelque sorte les pièces de mon­naie cir­cu­lante dans le sys­tème moné­taire Bit­coin. C’est un fonc­tion­ne­ment dans le domaine numé­rique com­pa­rable à celui des pièces et des billets tra­di­tion­nels, avec une dif­fé­rence impor­tante : les pièces et les billets ont une déno­mi­na­tion fixe alors que les UTXOs sont de mon­tants variables défi­nis par les tran­sac­tions pré­cé­dem­ment vali­dées. Notons que cer­taines mon­naies décen­tra­li­sées comme Ethe­reum fonc­tionnent sur un modèle dif­fé­rent fon­dé sur des comptes et non des UTXOs. Dans ce cas, les vali­da­teurs doivent gar­der la mémoire des soldes de chaque compte.

« Un fonctionnement dans le domaine numérique comparable à celui des pièces et des billets traditionnels. »

Typi­que­ment une tran­sac­tion Bit­coin va com­bi­ner plu­sieurs UTXOs en entrées pour mobi­li­ser un mon­tant supé­rieur ou égal au mon­tant à payer, et on va retrou­ver en sor­tie l’adresse du rece­veur et une adresse de retour de la mon­naie en excès. Pour être valable, le mes­sage de tran­sac­tion Bit­coin doit aus­si com­por­ter la ou les signa­tures requises par chaque UTXO uti­li­sé dans la tran­sac­tion. Notons au pas­sage qu’une tran­sac­tion Bit­coin se ramène à un mes­sage envoyé sur inter­net et enre­gis­tré dans une base de don­nées publique (la blo­ck­chain Bit­coin). Une inter­dic­tion d’usage de Bit­coin n’est donc pas envi­sa­geable dans un état de droit, sauf à admettre le réta­blis­se­ment d’une forme de censure. 

Notons aus­si que la dif­fu­sion d’un mes­sage élec­tro­nique sur un réseau est qua­si ins­tan­ta­née, que ce soit une tran­sac­tion Bit­coin ou une tran­sac­tion ban­caire. Seul le temps de trai­te­ment par le réseau dif­fère, soit une heure envi­ron pour une tran­sac­tion Bit­coin (6 confir­ma­tions dans la blo­ck­chain) et plu­sieurs dizaines d’heures pour une tran­sac­tion carte ban­caire. En pra­tique, pour un achat en maga­sin, le client repart avec son achat sans attendre le trai­te­ment com­plet de la tran­sac­tion. Il attend seule­ment la véri­fi­ca­tion par le com­mer­çant que la tran­sac­tion a bien été dif­fu­sée sur le réseau de paie­ment, c’est-à-dire quelques secondes, que ce soit une tran­sac­tion Bit­coin ou une tran­sac­tion carte bancaire. 

Décentralisation

Un sys­tème est dit décen­tra­li­sé s’il fonc­tionne sans admi­nis­tra­teur cen­tral. Inter­net en est l’exemple le plus connu. Il n’existe pas une socié­té inter­net qui serait res­pon­sable de ce réseau, pas plus qu’il n’existe une socié­té Bit­coin qui gére­rait le réseau Bit­coin. Au lieu d’une auto­ri­té cen­trale, une mul­ti­tude d’acteurs, pro­fes­sion­nels, asso­cia­tifs ou par­ti­cu­liers, coopèrent pour le faire fonc­tion­ner. Ils sont inci­tés à coopé­rer par l’utilité qu’ils trouvent à ce réseau. La décen­tra­li­sa­tion est une valeur spec­trale et non binaire : un réseau n’est jamais par­fai­te­ment décen­tra­li­sé, car cer­tains acteurs peuvent acqué­rir des posi­tions domi­nantes, comme les Gafam sur inter­net ou des socié­tés comme Google ou Micro­soft sur le réseau e‑mail. Il reste que la concep­tion d’un réseau décen­tra­li­sé fait qu’il est pos­sible de contes­ter la domi­na­tion de ces acteurs, même si c’est difficile.

chaine de blocs

Chaîne de blocs

La blo­ck­chain repose, entre autres, sur le concept d’empreinte numé­rique (hash en anglais). L’empreinte numé­rique d’un ensemble de don­nées (une pré­image dans le lan­gage des cryp­to­logues : un fichier, un mes­sage, un bloc de tran­sac­tions, etc.) est un grand nombre entier cal­cu­lé par une fonc­tion mathé­ma­tique H aux pro­prié­tés par­ti­cu­lières, dite fonc­tion de hachage ou fonc­tion à sens unique. L’empreinte est l’image des don­nées cal­cu­lée avec cette fonction :

Empreinte = H(données)

On parle aus­si de pré­image pour dési­gner les don­nées que la fonc­tion utilise.

Empreinte = H(préimage)

Quelles sont les pro­prié­tés par­ti­cu­lières qui défi­nissent une fonc­tion de hachage uti­li­sable du point de vue de la sécu­ri­té informatique ?

« Chaque bloc contient l’empreinte du bloc précédent. »

Voi­ci les cinq pro­prié­tés principales :

  • effet d’avalanche – chaque fois qu’un bit de la pré­image est modi­fié, chaque bit de l’image a une pro­ba­bi­li­té de 50 % d’être modifié ;
  • irré­ver­si­bi­li­té – pour une image don­née H, il est en pra­tique impos­sible de trou­ver une pré­image A telle que h(A) = H ;
  • résis­tance aux col­li­sions – il est en pra­tique impos­sible de trou­ver deux pré­images dif­fé­rentes pour une image don­née H, c’est-à-dire de trou­ver A et B avec h(A) = h(B) = H et A ! = B ;
  • résis­tance aux dou­blons – pour une pré­image don­née A, il est en pra­tique impos­sible de trou­ver une deuxième pré­image B pour laquelle h(B) = h(A) ;
  • l’image est un très grand nombre de lon­gueur fixe. La fonc­tion SHA-256, par exemple, uti­li­sée dans le pro­to­cole Bit­coin, pro­duit des images de 256 bits de long, c’est-à-dire un espace de plus de 1077 images possibles.

Dans une blo­ck­chain, les blocs s’enchaînent les uns aux autres car chaque bloc contient l’empreinte du bloc pré­cé­dent, de sorte que, si une tran­sac­tion dans un bloc était modi­fiée, le conte­nu de tous les blocs sui­vants serait modi­fié. La blo­ck­chain Bit­coin est la base de don­nées par­ta­gée par les vali­da­teurs des tran­sac­tions Bit­coin pour les enre­gis­trer. Elle est orga­ni­sée en une chaîne de blocs de tran­sac­tions qui est aug­men­tée d’un bloc toutes les dix minutes. On peut par­ler de la blo­ck­chain Bit­coin ou de la blo­ck­chain Ethe­reum, mais par­ler de « la » blo­ck­chain en géné­ral n’a pas plus de sens que d’écrire « la » base de don­nées. Chaque base de don­nées et chaque blo­ck­chain fonc­tionnent avec un his­to­rique et des règles spé­ci­fiques qui les dis­tinguent les unes des autres. Il faut donc tou­jours pré­ci­ser de quelle blo­ck­chain on parle.

Preuve de travail

La blo­ck­chain Bit­coin est sécu­ri­sée par le méca­nisme de la preuve de tra­vail : pour obte­nir le droit d’ajouter un bloc de tran­sac­tions à cette base, un vali­da­teur doit prou­ver qu’il a réso­lu un puzzle mathé­ma­tique. Pour­quoi un puzzle ? Tout comme cer­tains sites web demandent aux uti­li­sa­teurs de résoudre un puzzle (capt­cha) pour prou­ver qu’ils sont humains avant de se connec­ter au site, le réseau Bit­coin demande au vali­da­teur de prou­ver qu’il uti­lise un ordi­na­teur avec une cer­taine puis­sance de cal­cul. La preuve de tra­vail est l’image des don­nées prin­ci­pales du bloc, regrou­pée dans ce qu’on appelle l’en-tête du bloc, cal­cu­lée par la fonc­tion de hachage SHA-256 (cf. ci-des­sus : chaîne de blocs). La condi­tion de vali­di­té de la preuve est que la valeur de cette image soit infé­rieure à un cer­tain pla­fond. Plus le pla­fond est bas, plus la pro­ba­bi­li­té d’obtenir une telle valeur avec la fonc­tion SHA-256 est faible.

« Un validateur doit prouver qu’il a résolu un puzzle mathématique. »

Les don­nées de l’en-tête du bloc com­prennent : l’empreinte du bloc pré­cé­dent (la preuve de tra­vail pré­cé­dente) ; la racine de Merkle de l’arbre des tran­sac­tions conte­nues dans le bloc (une sorte d’empreinte de toutes les tran­sac­tions du bloc) ; l’heure où le cal­cul se fait, selon l’ordinateur uti­li­sé par le vali­da­teur ; le pla­fond (dif­fi­cul­té du cal­cul de la preuve) ; un comp­teur (nonce en anglais) dont la valeur est choi­sie arbi­trai­re­ment par le vali­da­teur. Par­mi ces cinq champs de don­nées, seul le cin­quième peut être chan­gé indé­pen­dam­ment du conte­nu du bloc et de l’heure cou­rante : pour ten­ter de créer une preuve de tra­vail valable, le vali­da­teur va donc ité­rer le cal­cul de la fonc­tion de hachage en chan­geant à chaque fois la valeur du comp­teur, jusqu’à ce qu’il obtienne une valeur infé­rieure au plafond.

Ce pro­ces­sus ité­ra­tif, que les cryp­to­logues appellent « force brute » du fait de sa sim­pli­ci­té, est appe­lé le « minage » dans le sec­teur des cryp­to­mon­naies, par ana­lo­gie avec l’extraction d’un métal pré­cieux. Les vali­da­teurs sont donc dési­gnés aus­si par le terme de « mineurs ». Je m’en tiens ici à l’appellation « vali­da­teur », plus générique.

Exemple de hash « nor­mal » (SHA-256) = e9c1e0fd22410f0a657d245a1da92798e7fc0ed365ec87864f02467005efa3c3

Exemple de preuve de tra­vail (hash de l’en-tête du bloc 1, daté du 3 jan­vier 2009) = 00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048

Hash de l’en-tête du bloc 400 000 (2016) = 000000000000000004ec466ce4732fe6f1ed1cddc2ed4b328fff5224276e3f6f

Hash de l’en-tête du bloc 809 575 (2023) = 00000000000000000000976df35b24fde0b2dc06ca3f933607fa0f9f7c32dcb9

Dans les exemples ci-des­sus, on observe au nombre de zéros dans le hash de l’en-tête du bloc que la dif­fi­cul­té a aug­men­té signi­fi­ca­ti­ve­ment depuis 2009, à mesure que le réseau Bit­coin se développait.

« Une preuve de travail est une forme de signature collective des mineurs. »

Une preuve de tra­vail est une forme de signa­ture col­lec­tive des mineurs, appo­sée sur chaque bloc, qui prouve que le cal­cul et la vali­da­tion d’un nou­veau bloc ont néces­si­té une cer­taine quan­ti­té d’énergie. Si un vali­da­teur obtient une preuve de tra­vail valide, c’est-à-dire véri­fiant la condi­tion de dif­fi­cul­té, il s’empresse de la publier sur le réseau Bit­coin et son bloc N s’ajoute ain­si à la blo­ck­chain Bit­coin. Si un autre vali­da­teur publie une preuve valable avant lui, il ajoute le bloc N de cet autre vali­da­teur à la blo­ck­chain puis com­pose un nou­veau bloc N + 1 qui contien­dra donc de nou­velles tran­sac­tions, non encore vali­dées, ain­si que l’empreinte du bloc N.

Le pro­ces­sus se pour­suit indé­fi­ni­ment. Autre­ment dit, le puzzle est pro­po­sé à l’ensemble des vali­da­teurs dès qu’un bloc est ajou­té à la blo­ck­chain, et la preuve de réso­lu­tion du puzzle per­met d’inscrire le bloc sui­vant dans la blo­ck­chain. Le pre­mier vali­da­teur qui résout le puzzle publie sa preuve sur le réseau avec son bloc : les autres vali­da­teurs peuvent faci­le­ment véri­fier cette preuve et ajoutent alors ce bloc à la blo­ck­chain, et ain­si de suite.

« Le temps de traitement d’une transaction sur le réseau Bitcoin est d’environ dix minutes. »

Com­ment le pla­fond est-il fixé ? Les vali­da­teurs l’ajustent tous les 2 016 blocs en s’efforçant d’aligner le temps néces­saire à la pro­duc­tion de ces 2 016 blocs sur une période de deux semaines, ce qui équi­vaut à un inter­valle moyen de dix minutes entre chaque bloc. Si la pro­duc­tion des blocs a été trop rapide, cela signi­fie que la puis­sance de cal­cul com­bi­née des vali­da­teurs a aug­men­té et la dif­fi­cul­té est aug­men­tée en consé­quence pour les quinze jours sui­vants : une aug­men­ta­tion de la dif­fi­cul­té cor­res­pond à un abais­se­ment du pla­fond. À l’inverse, le pla­fond est rele­vé au bout de quinze jours si la pro­duc­tion des blocs est trop lente.

En tant que réseau de paie­ment, on peut donc dire que le temps de trai­te­ment d’une tran­sac­tion sur le réseau Bit­coin est d’environ dix minutes, ce qui est beau­coup plus rapide qu’un réseau de paie­ment tra­di­tion­nel comme le réseau carte ban­caire par exemple. Rap­pe­lons que la dif­fu­sion d’une tran­sac­tion élec­tro­nique sur un réseau est qua­si ins­tan­ta­née, quel que soit le réseau, Bit­coin ou carte ban­caire, seuls les temps de trai­te­ment varient signi­fi­ca­ti­ve­ment d’un réseau à l’autre.

Fonctionnement du Bitcoin

Création monétaire

Dans le pro­to­cole Bit­coin, chaque bloc contient une tran­sac­tion par­ti­cu­lière appe­lée coin­base tran­sac­tion. Cette tran­sac­tion paie au vali­da­teur (mineur) une cer­taine quan­ti­té de bit­coins, décrois­sante dans le temps : cette quan­ti­té est divi­sée par deux tous les 210 000 blocs (c’est-­à-­dire tous les quatre ans envi­ron). En 2009, elle était de 50 bit­coins par bloc, elle est aujourd’hui (nov. 2023) de 6,25 bit­coins. Par consé­quent, la quan­ti­té de bit­coins ne pour­ra excé­der 21 mil­lions, selon la formule :

Formule Bitcoin

La preuve de tra­vail atta­chée à chaque bloc assure qu’il existe une contre­par­tie éner­gé­tique à la créa­tion moné­taire des bit­coins. Pour la mon­naie fiat (mise en place par l’État sous ges­tion d’une banque cen­trale), c’est-à-dire l’euro ou le dol­lar par exemple, la contre­par­tie éner­gé­tique est appor­tée par un emprun­teur qui s’engage auprès d’une banque à consa­crer une par­tie de son tra­vail à rem­bour­ser la somme prê­tée. La somme en ques­tion est une quan­ti­té de mon­naie créée par la banque dans cette tran­sac­tion de prêt : « Dans les éco­no­mies modernes, ce sont les banques qui créent la monnaie.

Les banques dis­posent en effet du pri­vi­lège de pou­voir créer de la mon­naie scrip­tu­rale à par­tir de rien lorsqu’elles accordent des cré­dits à leurs clients, en ins­cri­vant sim­ple­ment les sommes prê­tées sur les comptes des clients en ques­tion. Seule une banque, la banque cen­trale, dis­pose tou­te­fois du pri­vi­lège de pou­voir créer, émettre de la mon­naie fidu­ciaire. L’essentiel de la créa­tion de mon­naie résulte de l’activité de cré­dit des banques dites com­mer­ciales » (source : Col­lège de France). Chaque rem­bour­se­ment cor­res­pond à une des­truc­tion moné­taire, car la dette de la banque à l’égard de l’emprunteur dimi­nue (le solde du compte de l’emprunteur dimi­nue) et, symé­tri­que­ment, la dette de l’emprunteur vis-à-vis de la banque dimi­nue d’autant.

“La preuve de travail attachée à chaque bloc assure qu’il existe une contrepartie énergétique à la création monétaire des bitcoins.”

Le pro­blème de ce modèle de créa­tion moné­taire par le cré­dit est qu’il conduit à une quan­ti­té de mon­naie poten­tiel­le­ment illi­mi­tée, car le mon­tant des nou­veaux cré­dits dépasse le flux des rem­bour­se­ments. L’endettement glo­bal s’accroît sans cesse et chaque nou­velle crise, qu’elle soit sani­taire, géo­po­li­tique ou finan­cière (crash bour­sier), jus­ti­fie de sau­ter les éven­tuels garde-fous (exi­gence de réserves pru­den­tielles). Outre la dilu­tion de la valeur de la mon­naie, la créa­tion moné­taire par le cré­dit conduit aus­si à un accrois­se­ment des écarts de richesse par l’effet Can­tillon : ceux qui sont les plus proches de la source de créa­tion moné­taire, à savoir les banques, les grandes entre­prises et les riches par­ti­cu­liers, béné­fi­cient de cré­dits plus impor­tants et moins chers pour ache­ter des actifs avant que les autres acteurs éco­no­miques puissent le faire.

Enfin, la créa­tion moné­taire par le cré­dit per­met aux banques com­mer­ciales de géné­rer des pro­fits sans réa­li­té éco­no­mique com­pa­rés à ceux des autres acteurs : le pro­duit net ban­caire des banques fran­çaises (leurs pro­fits) s’élève chaque année à plus de 100 mil­liards d’euros (162 mil­liards en 2021 pour les prin­ci­pales banques fran­çaises selon la Banque de France, un mon­tant supé­rieur à la col­lecte de la TVA par l’État !). Contrai­re­ment aux banques com­mer­ciales qui sont en situa­tion d’oligopole de la créa­tion moné­taire par le cré­dit, les vali­da­teurs Bit­coin opèrent avec des marges faibles puisqu’ils sont dans une concur­rence mon­diale et doivent payer l’électricité qu’ils utilisent.

La rare­té rela­tive de Bit­coin est une réponse pos­sible à ces problèmes.

Rareté

Il est pos­sible de modi­fier le code exis­tant open source de Bit­coin pour chan­ger la limite de 21 mil­lions mais il faut com­prendre qu’on crée alors un autre réseau sans pour autant affec­ter réel­le­ment le réseau Bitcoin.

Par exemple, le pro­jet Lite­coin, lan­cé en 2011, a modi­fié le code de Bit­coin en chan­geant la fonc­tion de hachage (au lieu de SHA-256) et la limite supé­rieure de la créa­tion moné­taire (84 mil­lions au lieu de 21 mil­lions). Ce fai­sant, les créa­teurs de Lite­coin n’ont pas réel­le­ment chan­gé les carac­té­ris­tiques de Bit­coin : ils ont créé un autre réseau car les mineurs ont dû affec­ter leur puis­sance de cal­cul à l’un ou à l’autre. On ne peut pas miner simul­ta­né­ment avec le même maté­riel un bloc Lite­coin et un bloc Bit­coin. Un bloc Lite­coin n’est tout sim­ple­ment pas valide sur le réseau Bit­coin et inversement.

« Un changement non consensuel crée un schisme et donne naissance à un nouveau réseau. »

Cela est vrai non seule­ment pour le méca­nisme de créa­tion moné­taire mais aus­si pour n’importe quelle autre carac­té­ris­tique du pro­to­cole : un chan­ge­ment non consen­suel crée un schisme (un hard fork dans le lan­gage des cryp­to­mon­naies) et donne nais­sance à un nou­veau réseau. Le plus récent sur le réseau Bit­coin a eu lieu en juillet 2017, don­nant nais­sance à un variant de Bit­coin appe­lé Bit­coin Cash (BCH en abré­gé). Cepen­dant, la valeur des BCH n’a ces­sé de décli­ner depuis, à mesure que Bit­coin se confir­mait comme le réseau proof of work de référence.

Fin sep­tembre 2023, voi­ci com­ment on pou­vait com­pa­rer à Bit­coin ses 3 prin­ci­paux variants :

Comparaison Bitcoin et variants

On peut dire qu’il est donc facile en théo­rie de copier et modi­fier le logi­ciel de Bit­coin mais impos­sible en pra­tique de clo­ner le réseau Bit­coin consti­tué de par­ti­ci­pants humains et de machines.

Ce rai­son­ne­ment ne tient pas avec les pro­to­coles à preuve d’enjeu (PoS) comme Ethe­reum ou Car­da­no car, contrai­re­ment au pro­to­cole à preuve de cal­cul, un par­ti­ci­pant peut signer des blocs pour de mul­tiples réseaux à preuve d’enjeu sans sur­coût significatif.

Les mon­naies à preuve d’enjeu sont donc col­lec­ti­ve­ment infla­tion­nistes même si cer­taines affichent une limite de créa­tion monétaire.

À l’inverse, une mon­naie à preuve de cal­cul peut affi­cher une limite de créa­tion moné­taire, c’est-à-dire reven­di­quer une rare­té rela­tive, car une puis­sance de cal­cul spé­ci­fique doit être mobi­li­sée pour dépas­ser cette limite en créant un autre réseau et donc une autre mon­naie à preuve de calcul.

En pra­tique, avec quinze ans de recul, on peut véri­fier que la mon­naie à preuve de cal­cul tend à concen­trer la puis­sance de cal­cul sur un seul réseau de réfé­rence (Bit­coin).

Poster un commentaire