Dans l’article précédent, nous avons étudié ensemble les premières parties du White Paper de Bitcoin. Nous avons découvert que l’objectif initial de Bitcoin est de proposer un système de paiement électronique pair-à-pair fondé sur des preuves cryptographiques plutôt que sur la confiance.
Nous avons également étudié les principes expliqués dans les premières parties du White Paper :
Les signatures numériques ;
Le serveur d’horodatage distribué ;
Et la preuve de travail.
Dans ce second chapitre, nous continuons ensemble notre exploration du White Paper à partir de la partie 5, où nous nous étions arrêtés, jusqu’à la conclusion du papier.
Vous pouvez, vous aussi, télécharger le White Paper de Bitcoin dans sa version originale en anglais, ou bien la traduction d’Arnaud-François Fausse en français.
Réseau
Dans cette cinquième partie du White Paper, Satoshi nous décrit le fonctionnement des nœuds Bitcoin. Notons qu’à cette époque, la difficulté de la preuve de travail sur Bitcoin était faible. Le minage n’était donc pas encore industrialisé comme aujourd’hui, et chaque nœud prenait automatiquement part à ce processus.
Satoshi résume magnifiquement bien le fonctionnement de base du système Bitcoin en seulement quelques points :
Les nouvelles transactions sont diffusées à tous les nœuds ;
Chaque nœud rassemble les nouvelles transactions dans un bloc ;
Chaque nœud travaille pour trouver une preuve-de-travail difficile pour son bloc ;
Quand un nœud trouve une preuve-de-travail, il diffuse le bloc à tous les autres nœuds ;
Les nœuds acceptent le bloc seulement si toutes les transactions sont valides et pas déjà dépensées ;
Les nœuds expriment leur acceptation du bloc en travaillant à créer le prochain bloc de la chaîne, en utilisant l’empreinte numérique du bloc accepté comme l’empreinte précédente.
Les deux autres paragraphes de cette partie décrivent le fonctionnement du réseau Bitcoin en lui-même. Satoshi nous explique notamment le comportement qui doit être adopté par les nœuds en cas de division de la chaîne.
➤ En savoir plus sur les divisions, les blocs périmés et les mécanismes de réseau.
Prime de résultat
Puisque la preuve de travail de Bitcoin établit un coût en temps CPU et en électricité à la multiplication des votes, il a fallu trouver une incitation pour prendre part au minage. Cette partie décrit la manière dont on peut rémunérer les mineurs sur Bitcoin.
Au départ, cette incitation économique est établie sur la création de nouveaux bitcoins ex nihilo. Cela permet de créer une prime de résultat, tout en assurant la mise en circulation de la masse monétaire. L’avantage de ce processus de distribution est qu’il ne requiert pas l’intervention d’une autorité centrale.
Satoshi nous dit que cette incitation pourra également, à terme, reposer uniquement sur les frais des transactions Bitcoin. Grâce à cela, on peut créer un système monétaire totalement non inflationniste.
📌 Le saviez-vous ? Même si l’idée d’une masse monétaire finie est abordée dans cette partie, notons que Satoshi Nakamoto ne parle à aucun moment de la fameuse limite des 21 millions dans le White Paper de Bitcoin.
Cette incitation est distribuée au mineur à travers la première transaction de chaque bloc. C’est une transaction spéciale, que l’on nomme « coinbase », qui permet au mineur gagnant de récolter les frais de transaction et de créer de nouveaux bitcoins.
➤ En savoir plus sur le halving de Bitcoin.
Demande d’espace disque
Dans cette septième partie, on peut découvrir la façon dont sont construits les blocs Bitcoin. Ils disposent d’un petit entête avec des métadonnées. Les transactions, quant à elles, sont structurées avec un accumulateur cryptographique nommé « Arbre de Merkle ». De cette manière, on peut obtenir un tout petit condensé de toutes les transactions d’un bloc. Ce condensé, appelé une « Racine de Merkle », est inclus dans l’entête de chaque bloc.
Notons que depuis la mise en place de SegWit en 2017, il existe dorénavant 2 arbres de Merkle différents dans un même bloc Bitcoin.
➤ En savoir plus sur la construction d’un bloc Bitcoin.
Vérification de paiement simplifiée
Grâce à l’utilisation de l’arbre de Merkle pour organiser les transactions dans un bloc, les utilisateurs de Bitcoin peuvent choisir de ne pas exécuter un nœud complet afin d’économiser de l’espace de stockage. Ils ont la possibilité de ne garder que l'entête de chaque bloc, tout en conservant la capacité de vérifier chaque transaction, en sollicitant une preuve auprès des nœuds complets.
Cette option, c’est ce que l’on appelle aujourd’hui un nœud léger ou un nœud SPV (Simplified Payment Verification).
Dans le dernier paragraphe de cette partie, Satoshi nous met tout de même en garde sur le besoin de confiance que nécessite ce type de nœud léger par rapport à un nœud complet.
Combinaison et séparation des valeurs
La neuvième partie du White Paper nous décrit la manière dont peuvent être gérées les pièces bitcoin au sein d’une transaction. On y apprend qu’il est possible de fusionner et de diviser des pièces au sein d’une même transaction.
Les entrées d’une transaction définissent les pièces bitcoins utilisées pour payer. En contrepartie de la consommation d’UTXOs en entrées, il est possible de créer des nouveaux UTXOs en sortie. Ces sorties représentent donc les destinations du paiement.
Cela veut dire qu’il faut obligatoirement que la somme des sorties d’une transaction Bitcoin soit inférieure ou égale à la somme des entrées. La différence entre les entrées et les sorties représente les frais de transaction qui peuvent être régénérés par le mineur.
Vie privée
Dans cette dixième partie, Satoshi Nakamoto explique le modèle de confidentialité du protocole Bitcoin.
Il nous dit que dans le système bancaire traditionnel, la vie privée de l’utilisateur est maintenue puisque les transactions ne sont pas diffusées publiquement. Autrement dit, lorsque vous payez votre baguette avec votre carte bancaire, seule la banque est au courant de votre paiement.
Le problème avec le protocole Bitcoin est qu’il requiert une annonce publique de toutes les transactions existantes. C’est ce qui permet d’éviter la double dépense. Alors, le modèle de confidentialité de Bitcoin repose sur la séparation entre l’identité des utilisateurs et leurs transactions.
Enfin, le dernier paragraphe de cette partie 10 nous décrit comment est-ce que l’on pourrait, en tant qu’utilisateur, améliorer notre confidentialité. Il explique que l’on pourrait utiliser une nouvelle paire de clés cryptographiques pour toute nouvelle transaction. C’est pour cela que l’on vous conseille aujourd’hui d’utiliser une nouvelle adresse vierge à chaque fois que vous recevez un paiement en bitcoins.
Satoshi nous informe également qu’il est impossible d’éviter un lien entre différentes pièces si celles-ci sont utilisées en entrée d’une même transaction. C’est ce que nous avons nommé dans la partie précédente la « fusion » d’UTXOs. Cette heuristique de traçage onchain est aujourd’hui connue sous le sigle de « CIOH » pour « Common-input-ownership heuristic ».
Ce dernier paragraphe démontre toute la clairvoyance de Satoshi Nakamoto, puisque encore aujourd’hui, la réutilisation d’adresse et le CIOH sont les deux principales heuristiques utilisées par les sociétés d’analyse de chaîne pour tracer vos transactions. Cela démontre qu’il disposait déjà d’une compréhension poussée de son protocole et de ses implications dans le futur.
Calculs
La dernière partie du White Paper est sûrement la plus complexe de toutes. Satoshi nous expose un scénario dans lequel un attaquant essaie de double-dépenser ses bitcoins en lésant au passage le premier destinataire du paiement.
Par exemple, imaginons qu’Oscar (l’attaquant) a envoyé 2 bitcoins à Alice. Sa transaction est incluse dans le bloc n° 403. Par la suite, Oscar tente de dépenser de nouveau ces 2 mêmes bitcoins, alors qu’il n’en a normalement plus la possession, pour les envoyer à Bob.
Pour ce faire, Oscar doit reprendre le bloc n° 403 en modifiant la transaction de paiement vers Alice, alors même que celui-ci est déjà confirmé dans la blockchain. Il va proposer un bloc alternatif qui ne sera pas accepté par la chaîne honnête. Il doit donc faire de nouveau toute la preuve de travail déjà réalisée sur la chaîne honnête, depuis le bloc n° 403, afin de tenter de la dépasser. Si cette attaque réussit, la conséquence est que Alice aura accepté le paiement d’Oscar, mais se retrouvera finalement sans aucun Bitcoin.
Satoshi souhaite montrer dans cette dernière partie que la difficulté de cette attaque augmente exponentiellement au fil des nouveaux blocs ajoutés depuis celui observé (n° 403 dans notre exemple). L’objectif est de pouvoir déterminer un nombre raisonnable de confirmations à partir duquel le receveur d’une transaction peut la considérer comme probabilistiquement immuable. Pour modéliser les probabilités de réussite de cette attaque, Satoshi détermine que l’avancement de l’attaquant suit une loi Poisson.
Il nous donne alors la probabilité que l’attaquant réussisse son attaque (p), en fonction du nombre de blocs minés par-dessus celui observé (z) et en admettant une part de 10 % de la puissance de calcul totale détenue par l’attaquant (q).
Il réalise une seconde fois sa modélisation, en admettant cette fois ci que l’attaquant possède 30 % de la puissance de calcul totale du réseau.
Comme vous pouvez le constater, la chance de réussite de cette attaque (p) réduit très rapidement à chaque nouveau bloc miné. Au bout d’un certain nombre de blocs, cette probabilité devient ridiculement faible. C’est notamment pour cela que l’on vous conseille aujourd’hui d’attendre 6 confirmations pour considérer une transaction Bitcoin comme immuable. Si l’attaquant est incapable de maintenir une puissance de calcul supérieure à 50 % de la puissance totale du réseau, il ne pourra pas réaliser ce type d’attaque.
Conclusion
Pour conclure son papier, Satoshi Nakamoto rappelle que l’objectif de Bitcoin est de proposer un système de transactions électroniques qui ne nécessite aucune forme de confiance. Il rappelle également que son protocole permet de résoudre le problème de la double dépense sur un système monétaire pair-à-pair.
Il nous explique également que les nœuds Bitcoin peuvent librement quitter le réseau et le rejoindre en s’accordant sur la chaîne qui dispose de la plus grande quantité de travail accumulé.
Enfin, Satoshi cite les références qui lui ont permis d’arriver à cette réflexion. On y découvre notamment les travaux de Wei Day sur b-money, un des ancêtres de Bitcoin n’ayant jamais vu le jour. Parmi ces références, il y a également les travaux d’Adam Back sur le protocole Hashcash, le système de résistance aux attaques par déni de service qui a inspiré la preuve de travail sur Bitcoin.
Ce petit ouvrage de seulement 9 pages nous explique le fonctionnement et les objectifs de Bitcoin d’une manière limpide et concise. Même si le protocole a beaucoup évolué depuis 2008, indépendamment de l’action de son créateur, les grandes lignes directrices demeurent inchangées. Il est donc toujours intéressant de se replonger dans ce White Paper, tout comme dans les quelques messages que nous a laissés Satoshi Nakamoto sur les forums en ligne avant de quitter le projet en avril 2011.
➤ Découvrir le premier chapitre de cette série sur le White Paper de Bitcoin.