Comment fonctionne Bitcoin ?
Pour parler de Bitcoin, il est préférable de connaître le fonctionnement de ce réseau de paiement décentralisé. Plongez dans les entrailles de la machine, non sans au passage digérer quelques formules mathématiques qui vous rappelleront les années sur le Platâl !
Bitcoin est un réseau de paiement décentralisé qui utilise une chaîne de blocs pour enregistrer ses transactions, sécurisée par le protocole de la preuve de travail. Expliquons ces concepts : paiement, décentralisation, chaîne de blocs (blockchain) et preuve de travail.
Paiement
Un paiement électronique est un message qui comporte essentiellement trois informations : l’origine des fonds, leur destination et le montant de la transaction. Un réseau de paiement peut être centralisé (exemples : SEPA, ACH, Swift, Visa, Mastercard, etc.) ou, depuis l’invention de Bitcoin, décentralisé (exemples : Bitcoin, Ethereum, Solana, Cardano, Dogecoin, etc.). L’origine des fonds est constituée des entrées de la transaction (inputs) et la destination est composée des sorties (outputs).
Bitcoin fonctionne sur le principe des UTXOs, acronyme en anglais de unspent transaction outputs, c’est-à-dire que les fonds disponibles pour de nouvelles transactions sont constitués des sorties de transactions précédentes non encore utilisées. Ces UTXOs sont en quelque sorte les pièces de monnaie circulante dans le système monétaire Bitcoin. C’est un fonctionnement dans le domaine numérique comparable à celui des pièces et des billets traditionnels, avec une différence importante : les pièces et les billets ont une dénomination fixe alors que les UTXOs sont de montants variables définis par les transactions précédemment validées. Notons que certaines monnaies décentralisées comme Ethereum fonctionnent sur un modèle différent fondé sur des comptes et non des UTXOs. Dans ce cas, les validateurs doivent garder la mémoire des soldes de chaque compte.
« Un fonctionnement dans le domaine numérique comparable à celui des pièces et des billets traditionnels. »
Typiquement une transaction Bitcoin va combiner plusieurs UTXOs en entrées pour mobiliser un montant supérieur ou égal au montant à payer, et on va retrouver en sortie l’adresse du receveur et une adresse de retour de la monnaie en excès. Pour être valable, le message de transaction Bitcoin doit aussi comporter la ou les signatures requises par chaque UTXO utilisé dans la transaction. Notons au passage qu’une transaction Bitcoin se ramène à un message envoyé sur internet et enregistré dans une base de données publique (la blockchain Bitcoin). Une interdiction d’usage de Bitcoin n’est donc pas envisageable dans un état de droit, sauf à admettre le rétablissement d’une forme de censure.
Notons aussi que la diffusion d’un message électronique sur un réseau est quasi instantanée, que ce soit une transaction Bitcoin ou une transaction bancaire. Seul le temps de traitement par le réseau diffère, soit une heure environ pour une transaction Bitcoin (6 confirmations dans la blockchain) et plusieurs dizaines d’heures pour une transaction carte bancaire. En pratique, pour un achat en magasin, le client repart avec son achat sans attendre le traitement complet de la transaction. Il attend seulement la vérification par le commerçant que la transaction a bien été diffusée sur le réseau de paiement, c’est-à-dire quelques secondes, que ce soit une transaction Bitcoin ou une transaction carte bancaire.
Décentralisation
Un système est dit décentralisé s’il fonctionne sans administrateur central. Internet en est l’exemple le plus connu. Il n’existe pas une société internet qui serait responsable de ce réseau, pas plus qu’il n’existe une société Bitcoin qui gérerait le réseau Bitcoin. Au lieu d’une autorité centrale, une multitude d’acteurs, professionnels, associatifs ou particuliers, coopèrent pour le faire fonctionner. Ils sont incités à coopérer par l’utilité qu’ils trouvent à ce réseau. La décentralisation est une valeur spectrale et non binaire : un réseau n’est jamais parfaitement décentralisé, car certains acteurs peuvent acquérir des positions dominantes, comme les Gafam sur internet ou des sociétés comme Google ou Microsoft sur le réseau e‑mail. Il reste que la conception d’un réseau décentralisé fait qu’il est possible de contester la domination de ces acteurs, même si c’est difficile.
Chaîne de blocs
La blockchain repose, entre autres, sur le concept d’empreinte numérique (hash en anglais). L’empreinte numérique d’un ensemble de données (une préimage dans le langage des cryptologues : un fichier, un message, un bloc de transactions, etc.) est un grand nombre entier calculé par une fonction mathématique H aux propriétés particulières, dite fonction de hachage ou fonction à sens unique. L’empreinte est l’image des données calculée avec cette fonction :
Empreinte = H(données)
On parle aussi de préimage pour désigner les données que la fonction utilise.
Empreinte = H(préimage)
Quelles sont les propriétés particulières qui définissent une fonction de hachage utilisable du point de vue de la sécurité informatique ?
« Chaque bloc contient l’empreinte du bloc précédent. »
Voici les cinq propriétés principales :
- effet d’avalanche – chaque fois qu’un bit de la préimage est modifié, chaque bit de l’image a une probabilité de 50 % d’être modifié ;
- irréversibilité – pour une image donnée H, il est en pratique impossible de trouver une préimage A telle que h(A) = H ;
- résistance aux collisions – il est en pratique impossible de trouver deux préimages différentes pour une image donnée H, c’est-à-dire de trouver A et B avec h(A) = h(B) = H et A ! = B ;
- résistance aux doublons – pour une préimage donnée A, il est en pratique impossible de trouver une deuxième préimage B pour laquelle h(B) = h(A) ;
- l’image est un très grand nombre de longueur fixe. La fonction SHA-256, par exemple, utilisée dans le protocole Bitcoin, produit des images de 256 bits de long, c’est-à-dire un espace de plus de 1077 images possibles.
Dans une blockchain, 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 transaction dans un bloc était modifiée, le contenu de tous les blocs suivants serait modifié. La blockchain Bitcoin est la base de données partagée par les validateurs des transactions Bitcoin pour les enregistrer. Elle est organisée en une chaîne de blocs de transactions qui est augmentée d’un bloc toutes les dix minutes. On peut parler de la blockchain Bitcoin ou de la blockchain Ethereum, mais parler de « la » blockchain en général n’a pas plus de sens que d’écrire « la » base de données. Chaque base de données et chaque blockchain fonctionnent avec un historique et des règles spécifiques qui les distinguent les unes des autres. Il faut donc toujours préciser de quelle blockchain on parle.
Preuve de travail
La blockchain Bitcoin est sécurisée par le mécanisme de la preuve de travail : pour obtenir le droit d’ajouter un bloc de transactions à cette base, un validateur doit prouver qu’il a résolu un puzzle mathématique. Pourquoi un puzzle ? Tout comme certains sites web demandent aux utilisateurs de résoudre un puzzle (captcha) pour prouver qu’ils sont humains avant de se connecter au site, le réseau Bitcoin demande au validateur de prouver qu’il utilise un ordinateur avec une certaine puissance de calcul. La preuve de travail est l’image des données principales du bloc, regroupée dans ce qu’on appelle l’en-tête du bloc, calculée par la fonction de hachage SHA-256 (cf. ci-dessus : chaîne de blocs). La condition de validité de la preuve est que la valeur de cette image soit inférieure à un certain plafond. Plus le plafond est bas, plus la probabilité d’obtenir une telle valeur avec la fonction SHA-256 est faible.
« Un validateur doit prouver qu’il a résolu un puzzle mathématique. »
Les données de l’en-tête du bloc comprennent : l’empreinte du bloc précédent (la preuve de travail précédente) ; la racine de Merkle de l’arbre des transactions contenues dans le bloc (une sorte d’empreinte de toutes les transactions du bloc) ; l’heure où le calcul se fait, selon l’ordinateur utilisé par le validateur ; le plafond (difficulté du calcul de la preuve) ; un compteur (nonce en anglais) dont la valeur est choisie arbitrairement par le validateur. Parmi ces cinq champs de données, seul le cinquième peut être changé indépendamment du contenu du bloc et de l’heure courante : pour tenter de créer une preuve de travail valable, le validateur va donc itérer le calcul de la fonction de hachage en changeant à chaque fois la valeur du compteur, jusqu’à ce qu’il obtienne une valeur inférieure au plafond.
Ce processus itératif, que les cryptologues appellent « force brute » du fait de sa simplicité, est appelé le « minage » dans le secteur des cryptomonnaies, par analogie avec l’extraction d’un métal précieux. Les validateurs sont donc désignés aussi par le terme de « mineurs ». Je m’en tiens ici à l’appellation « validateur », plus générique.
Exemple de hash « normal » (SHA-256) = e9c1e0fd22410f0a657d245a1da92798e7fc0ed365ec87864f02467005efa3c3
Exemple de preuve de travail (hash de l’en-tête du bloc 1, daté du 3 janvier 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-dessus, on observe au nombre de zéros dans le hash de l’en-tête du bloc que la difficulté a augmenté significativement depuis 2009, à mesure que le réseau Bitcoin se développait.
« Une preuve de travail est une forme de signature collective des mineurs. »
Une preuve de travail est une forme de signature collective des mineurs, apposée sur chaque bloc, qui prouve que le calcul et la validation d’un nouveau bloc ont nécessité une certaine quantité d’énergie. Si un validateur obtient une preuve de travail valide, c’est-à-dire vérifiant la condition de difficulté, il s’empresse de la publier sur le réseau Bitcoin et son bloc N s’ajoute ainsi à la blockchain Bitcoin. Si un autre validateur publie une preuve valable avant lui, il ajoute le bloc N de cet autre validateur à la blockchain puis compose un nouveau bloc N + 1 qui contiendra donc de nouvelles transactions, non encore validées, ainsi que l’empreinte du bloc N.
Le processus se poursuit indéfiniment. Autrement dit, le puzzle est proposé à l’ensemble des validateurs dès qu’un bloc est ajouté à la blockchain, et la preuve de résolution du puzzle permet d’inscrire le bloc suivant dans la blockchain. Le premier validateur qui résout le puzzle publie sa preuve sur le réseau avec son bloc : les autres validateurs peuvent facilement vérifier cette preuve et ajoutent alors ce bloc à la blockchain, et ainsi de suite.
« Le temps de traitement d’une transaction sur le réseau Bitcoin est d’environ dix minutes. »
Comment le plafond est-il fixé ? Les validateurs l’ajustent tous les 2 016 blocs en s’efforçant d’aligner le temps nécessaire à la production de ces 2 016 blocs sur une période de deux semaines, ce qui équivaut à un intervalle moyen de dix minutes entre chaque bloc. Si la production des blocs a été trop rapide, cela signifie que la puissance de calcul combinée des validateurs a augmenté et la difficulté est augmentée en conséquence pour les quinze jours suivants : une augmentation de la difficulté correspond à un abaissement du plafond. À l’inverse, le plafond est relevé au bout de quinze jours si la production des blocs est trop lente.
En tant que réseau de paiement, on peut donc dire que le temps de traitement d’une transaction sur le réseau Bitcoin est d’environ dix minutes, ce qui est beaucoup plus rapide qu’un réseau de paiement traditionnel comme le réseau carte bancaire par exemple. Rappelons que la diffusion d’une transaction électronique sur un réseau est quasi instantanée, quel que soit le réseau, Bitcoin ou carte bancaire, seuls les temps de traitement varient significativement d’un réseau à l’autre.
Création monétaire
Dans le protocole Bitcoin, chaque bloc contient une transaction particulière appelée coinbase transaction. Cette transaction paie au validateur (mineur) une certaine quantité de bitcoins, décroissante dans le temps : cette quantité est divisée par deux tous les 210 000 blocs (c’est-à-dire tous les quatre ans environ). En 2009, elle était de 50 bitcoins par bloc, elle est aujourd’hui (nov. 2023) de 6,25 bitcoins. Par conséquent, la quantité de bitcoins ne pourra excéder 21 millions, selon la formule :
La preuve de travail attachée à chaque bloc assure qu’il existe une contrepartie énergétique à la création monétaire des bitcoins. Pour la monnaie fiat (mise en place par l’État sous gestion d’une banque centrale), c’est-à-dire l’euro ou le dollar par exemple, la contrepartie énergétique est apportée par un emprunteur qui s’engage auprès d’une banque à consacrer une partie de son travail à rembourser la somme prêtée. La somme en question est une quantité de monnaie créée par la banque dans cette transaction de prêt : « Dans les économies modernes, ce sont les banques qui créent la monnaie.
Les banques disposent en effet du privilège de pouvoir créer de la monnaie scripturale à partir de rien lorsqu’elles accordent des crédits à leurs clients, en inscrivant simplement les sommes prêtées sur les comptes des clients en question. Seule une banque, la banque centrale, dispose toutefois du privilège de pouvoir créer, émettre de la monnaie fiduciaire. L’essentiel de la création de monnaie résulte de l’activité de crédit des banques dites commerciales » (source : Collège de France). Chaque remboursement correspond à une destruction monétaire, car la dette de la banque à l’égard de l’emprunteur diminue (le solde du compte de l’emprunteur diminue) et, symétriquement, la dette de l’emprunteur vis-à-vis de la banque diminue 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 problème de ce modèle de création monétaire par le crédit est qu’il conduit à une quantité de monnaie potentiellement illimitée, car le montant des nouveaux crédits dépasse le flux des remboursements. L’endettement global s’accroît sans cesse et chaque nouvelle crise, qu’elle soit sanitaire, géopolitique ou financière (crash boursier), justifie de sauter les éventuels garde-fous (exigence de réserves prudentielles). Outre la dilution de la valeur de la monnaie, la création monétaire par le crédit conduit aussi à un accroissement des écarts de richesse par l’effet Cantillon : ceux qui sont les plus proches de la source de création monétaire, à savoir les banques, les grandes entreprises et les riches particuliers, bénéficient de crédits plus importants et moins chers pour acheter des actifs avant que les autres acteurs économiques puissent le faire.
Enfin, la création monétaire par le crédit permet aux banques commerciales de générer des profits sans réalité économique comparés à ceux des autres acteurs : le produit net bancaire des banques françaises (leurs profits) s’élève chaque année à plus de 100 milliards d’euros (162 milliards en 2021 pour les principales banques françaises selon la Banque de France, un montant supérieur à la collecte de la TVA par l’État !). Contrairement aux banques commerciales qui sont en situation d’oligopole de la création monétaire par le crédit, les validateurs Bitcoin opèrent avec des marges faibles puisqu’ils sont dans une concurrence mondiale et doivent payer l’électricité qu’ils utilisent.
La rareté relative de Bitcoin est une réponse possible à ces problèmes.
Rareté
Il est possible de modifier le code existant open source de Bitcoin pour changer la limite de 21 millions mais il faut comprendre qu’on crée alors un autre réseau sans pour autant affecter réellement le réseau Bitcoin.
Par exemple, le projet Litecoin, lancé en 2011, a modifié le code de Bitcoin en changeant la fonction de hachage (au lieu de SHA-256) et la limite supérieure de la création monétaire (84 millions au lieu de 21 millions). Ce faisant, les créateurs de Litecoin n’ont pas réellement changé les caractéristiques de Bitcoin : ils ont créé un autre réseau car les mineurs ont dû affecter leur puissance de calcul à l’un ou à l’autre. On ne peut pas miner simultanément avec le même matériel un bloc Litecoin et un bloc Bitcoin. Un bloc Litecoin n’est tout simplement pas valide sur le réseau Bitcoin et inversement.
« Un changement non consensuel crée un schisme et donne naissance à un nouveau réseau. »
Cela est vrai non seulement pour le mécanisme de création monétaire mais aussi pour n’importe quelle autre caractéristique du protocole : un changement non consensuel crée un schisme (un hard fork dans le langage des cryptomonnaies) et donne naissance à un nouveau réseau. Le plus récent sur le réseau Bitcoin a eu lieu en juillet 2017, donnant naissance à un variant de Bitcoin appelé Bitcoin Cash (BCH en abrégé). Cependant, la valeur des BCH n’a cessé de décliner depuis, à mesure que Bitcoin se confirmait comme le réseau proof of work de référence.
Fin septembre 2023, voici comment on pouvait comparer à Bitcoin ses 3 principaux variants :
On peut dire qu’il est donc facile en théorie de copier et modifier le logiciel de Bitcoin mais impossible en pratique de cloner le réseau Bitcoin constitué de participants humains et de machines.
Ce raisonnement ne tient pas avec les protocoles à preuve d’enjeu (PoS) comme Ethereum ou Cardano car, contrairement au protocole à preuve de calcul, un participant peut signer des blocs pour de multiples réseaux à preuve d’enjeu sans surcoût significatif.
Les monnaies à preuve d’enjeu sont donc collectivement inflationnistes même si certaines affichent une limite de création monétaire.
À l’inverse, une monnaie à preuve de calcul peut afficher une limite de création monétaire, c’est-à-dire revendiquer une rareté relative, car une puissance de calcul spécifique doit être mobilisée pour dépasser cette limite en créant un autre réseau et donc une autre monnaie à preuve de calcul.
En pratique, avec quinze ans de recul, on peut vérifier que la monnaie à preuve de calcul tend à concentrer la puissance de calcul sur un seul réseau de référence (Bitcoin).