Améliorer le Bitcoin... à coups de fourches

Date:
Mis à jour le 08/04/2021
Créé il y a dix ans, le Bitcoin permet un paiement sécurisé et anonyme sans passer par une banque. La nouvelle monnaie s'appuie sur un mécanisme particulièrement bien pensé que l'on appelle une chaîne de blocs. Mélange de cryptographie et d'architecture distribuée, ce registre infalsifiable garantit la validité des transactions successives.

Mais des problèmes apparaissent : le coût du calcul s'envole. La dépense énergétique aussi. Impossible, en outre, de gérer un grand nombre de transactions à la seconde. Spécialiste des réseaux pair-à-pair (P2P), la chercheuse rennaise Emmanuelle Anceaume propose deux innovations pour permettre le passage à une autre échelle.
Illustration bitcoin
© Inria / Photo Raphaël de Bengy

Quatre réacteurs nucléaires à plein régime. Soit 60 TWh par an. C'est ce qu'il faut d'électricité désormais pour calculer les opérations permettant de produire et d'échanger des Bitcoins. Effet de mode et yo-yo spéculatif mis à part, la cryptomonnaie inventée par le mystérieux Satoshi Nakamoto gagne du terrain. Le volume d'échanges atteint maintenant l'équivalent de 6,5 milliards d'euros par jour.

Ce succès indiscutable met aussi en évidence les défauts de jeunesse de la chaîne de blocs, un registre infalsifiable permettant d'inscrire des transactions dans des structures de données que l'on appelle des blocs. Avec quelques variantes, la même technologie est aussi utilisée par les dizaines d'autres monnaies qui fleurissent dans le sillage du Bitcoin. Qu'il s'agisse de l'Ether, du Ripple, du Iota ou encore du Neo, tous utilisent des blocs qui s'enchaînent les uns derrière les autres au fil du temps.

Et c'est là que le bât blesse.

« Pour créer ces blocs, il faut résoudre un problème, explique Emmanuelle Anceaume, chercheuse CNRS de Cidre, une équipe de cybersécurité formée par CentraleSupelec, Inria, le CNRS et l'université de Rennes 1. Trouver la solution n'a rien de compliqué, mais cela demande beaucoup de puissance de calcul. La puissance nécessaire ne cesse d'ailleurs d'augmenter. »  Dans Bitcoin, la difficulté est remise à jour toutes les 2 semaines pour garantir la création d'un bloc toutes les dix minutes en moyenne.

« Au début, tout un chacun pouvait brancher son ordinateur et devenir mineur, c'est à dire tenter de résoudre le problème, construire un bloc et ainsi gagner de l'argent. »  Actuellement la rétribution est de 12,5 Bitcoins par bloc. « Mais le minage n'est plus à la portée du simple particulier. Sauf coup de chance inouï, celui-ci ne va jamais parvenir à créer un bloc. Dans la pratique, c'est devenu l'affaire d'immenses fermes spécialisées. »  Des milliers de machines en batterie et une facture d'électricité vertigineuse.

Une taille limitée

Avec l'augmentation du nombre d'échanges, l'affaire se corse.

« Les blocs ont une taille finie : 1 Mo. Impossible donc d'y insérer beaucoup de transactions. De plus, pour que le système fonctionne, il faut aussi éviter qu'il y ait trop de blocs minés de façon concurrente car il va falloir ensuite les aligner les uns derrière les autres dans la chaîne. »  En attendant la validation d'un bloc, plusieurs branches peuvent se constituer en aval. Mais une seule va survivre. Aux mineurs de choisir la bonne.

« Il y a une règle : on ne garde que la chaîne la plus longue. En pratique, si un bloc est suivi de six autres, il a une très forte probabilité de se maintenir dans la chaîne. »  
Pour être inscrit dans la chaîne, le nouveau bloc ne doit présenter aucun défaut.
« On calcule un arbre de Merkle, c'est-à-dire une empreinte cryptographique de toutes les transactions qu'il contient. Si un petit malin essaye d'en modifier une, cela va altérer l'empreinte du bloc. Du coup, celui-ci ne sera pas validé. » Mauvaise pioche pour le mineur. Les transactions vont alors s'égailler vers d'autres blocs en création.

« Pour tout le monde, il y a une incitation financière à bien se comporter. C'est la beauté du système. »

Cependant, avec son architecture actuelle, le Bitcoin ne peut absorber qu'environ 7 transactions par seconde. « Ce n'est pas grand-chose. Cela s'explique par le fait que les blocs sont de petite taille. Par ailleurs, comme je le disais, il faut éviter que beaucoup de blocs apparaissent simultanément : trop compliqué à gérer. D'où l'importance du ratio entre le temps de création d'un bloc et le temps de diffusion de l'information. Le système impose que le temps de création soit très long par rapport au temps de diffusion. Du coup, on est coincé. Si l'on augmente la taille des blocs, cela ne marche plus très bien. Si l'on augmente la fréquence de création, cela ne marche pas non plus car on diminue le ratio. Or ce ratio doit rester très élevé. »

De la chaîne de blocs au graphe de blocs

Alors que faire ?
« Autoriser les fourches. »  

C'est le concept introduit par un nouvel algorithme baptisé Sycomore.
« Quand il y a trop de transactions, nous allons laisser la chaîne se séparer en deux et créer deux blocs distincts chacun sur une ligne. Du coup, on double la capacité. On peut même la quadrupler et ainsi de suite en multipliant ces fourches autant que nécessaire. Mais, en même temps, nous faisons en sorte de garantir qu'aucune transaction ne puisse se trouver à la fois dans deux blocs. Évidemment cette chaîne n'en est plus une. Il s'agit désormais d'un graphe. »
Ces travaux de recherche visent aussi à « faire en sorte que la confiance ne repose plus uniquement sur les mineurs. Aujourd'hui, ils sont en position hégémonique. Nous voulons les conserver mais inciter les utilisateurs comme vous et moi à participer, un peu, au système en validant les transactions sur les blocs. »

Réseau P2P structuré

Dans ce contexte, la deuxième innovation porte sur le réseau pair-à-pair qui sous-tend la chaîne de blocs.
« Il existe deux types de réseaux P2P. Le premier est dit non structuré. Chaque nœud se connecte à des voisins de façon aléatoire. C'est le cas du Bitcoin et cela fonctionne bien. Le deuxième type de réseau est dit structuré. Là, les nœuds s'organisent au sein d'une structure mathématique qui respecte certaines propriétés : un anneau ou un hypercube par exemple. Et c'est ce que nous ferons. Nous allons réutiliser PeerCube, un hypercube que nous avions conçu il y a quelques années. Chacun de ses sommets est constitué non pas d'un seul nœud mais d'un groupe de nœuds qui sont proches logiquement les uns des autres. Même si un nœud malveillant se glisse dans le groupe, la structure est garantie. Elle va résister, ce qui est important car nous souhaitons utiliser ces groupes de nœuds pour valider une partie des transactions grâce à des algorithmes de consensus. »

Les expériences sont menées sur Grid'5000, la grille de calcul scientifique d'Inria.
« Nous prenons les vraies transactions du Bitcoin et nous les recalculons en utilisant notre graphe. Les premiers résultats montrent que notre système passe très bien l'échelle. On gagne un ordre de grandeur dans le nombre de transactions traitées. »
À l'inverse, la puissance de calcul nécessaire est fortement diminuée.
« Nous nous apprêtons à demander à Inria le financement d'une Action de développement technologique (ADT) pour recruter un ingénieur chargé de réaliser l'intégration de ces deux prototypes, PeerCube et Sycomore, puis l'industrialisation du code. Nous espérons pouvoir disposer d'un démonstrateur avant un an. »