INTRODUCTION

Dans la partie 1 de ce dossier consacré à la Blockchain, on a vu les concepts fondamentaux qui sous-tendent cette technologie émergente. Or, puisqu’elle est émergente, la Blockchain n’est pas sans avoir devant elle un certain nombre de défis.

“[…] I say Bitcoin is an experiment and you shouldn’t invest your life’s savings”

Gavin Andresen

Gavin Andresen est le “lead developer” du Bitcoin depuis l’effacement de l’énigmatique et toujours anonyme Satoshi Nakamoto. Il nous rappelle, à très juste titre, que le Bitcoin a valeur d’expérience, pour mettre en évidence les problématiques d’une approche novatrice. Un nombre grandissant d’observateurs et d’acteurs du Bitcoin disent que l’aventure Bitcoin prendra fin dans un avenir proche. Peut-être ont-ils raison. Pourtant, comme expérience, le Bitcoin est déjà une réussite, car il a pavé la voie à des implémentations de la technologie Blockchain qui prendront en compte des défis désormais exposés au grand jour.

Ces défis, ils sont tout simplement ceux de la “vraie vie”. La vie en dehors des labs où le génie fait ce qu’il sait faire de mieux : inventer quelque chose de nouveau. Car pour passer de l’invention géniale à la révolution générale, le chemin est encore long. C’est ce chemin que la Blockchain est en train de parcourir. Voyons ensemble quelques embûches qu’elle a déjà surmontées. Et celles qu’il lui reste à franchir.

6 points pour saisir la complexité de tels systèmes distribués appliqués au monde réel :

  • Le phénomène de latence et ses conséquences,
  • La gestion de la malveillance,
  • Le temps de validation de la transaction et la scalabilité du système,
  • Le poids de la Blockchain,
  • La problématique de l’incitation au minage et son efficience (économique, écologique…),
  • La gouvernance des systèmes distribués.

Dans cet article, nous traiterons des deux premiers.

 

LA LATENCE DANS UN SYSTEME DISTRIBUE

Lorsqu’un système est distribué, plus il est éclaté et plus l’éloignement des nœuds du réseau entre eux provoque des cas de latence. Eloignement géographique ou structurel (multiplication des relais), le résultat est sans appel, car l’instantanéité de la transmission est illusoire : il existe un temps, même court, entre l’envoi et la réception d’une donnée entre deux partie-prenantes.

Quel impact dans un contexte de Blockchain où le consensus permanent est une clé de voûte ? Pensez au mécanisme de création de blocs. On a vu que les mineurs étaient en compétition pour le calcul d’un puzzle mathématique, dont la résolution et sa preuve (Proof of Work) donne le droit d’insérer un nouveau bloc dans la chaîne. On a aussi vu qu’une seule chaîne de blocs est reconnue par le réseau comme la référente.

Alors, que se passe-t-il quand, dans l’écart de temps entre la diffusion du nouveau bloc validé et la réception par l’intégralité des nœuds du nouveau bloc créé, un autre mineur, encore non informé qu’un bloc valide est diffusé pour intégration, trouve lui aussi un bloc valide et le diffuse ?

Nous sommes face à un phénomène de “forking” : la chaîne fourche.

 

Forking_Rupture_Consensus

 

Est-ce un problème fatal ? Non, et bien heureusement, car cela arrive relativement régulièrement, notamment dans les implémentations où le temps théorique de création d’un nouveau bloc est réduit à quelques secondes. En effet, plus le ratio « Temps de création d’un bloc / Temps de propagation du bloc créé (latence) » est proche de 1, plus la fréquence des fourches sera importante. Le protocole de Blockchain est cependant capable de résoudre ce conflit grâce aux concepts de base que nous avons déjà vus.

Il y a ici de très nombreuses subtilités selon les implémentations et nous nous appuierons à nouveau sur le cas Bitcoin pour expliquer le principe de résolution d’une fourche. Je ne manquerai pas d’y revenir lorsque nous parlerons d’Ethereum ou de Rootstock.

La solution est conceptuellement simple. Tous les nœuds vont finir par recevoir les deux nouveaux blocs et constituer la fourche. Ils vont en garder la trace, jusqu’à ce qu’un nouveau bloc soit validé par un mineur et diffusé. Si le nouveau bloc a été miné sur l’embranchement A, alors c’est cette version de la chaîne qui continuera de grandir et retrouve sa prévalence. Inversement si le nouveau bloc a été miné sur l’embranchement B. Et ce en vertu de principe de plus grande valeur computationnelle, que l’on a vu dans la partie 1 de ce dossier.

 

Forking_Resolution

Forking_Nouveau_Consensus

 

Si d’aventure le phénomène se reproduisait une seconde fois, la résolution de la fourche se produirait au bloc suivant, et ainsi de suite. Fort heureusement, dans des conditions normales de répartition du minage, la probabilité que deux nouveaux blocs valides soient diffusés dans l’écart de temps de latence de diffusion au réseau est faible. Et il devient (mathématiquement) de plus en plus improbable que le phénomène se reproduise en chaîne.

Cela signifie aussi que le ou les bloc(s) invalidé(s) par la résolution de la fourche rend(ent) les transactions qu’il(s) contien(nen)t non valides : elles n’appartiennent plus au “ledger” officiellement reconnu par l’ensemble du réseau, qui lui, ne changera plus jamais.

C’est pourquoi, dans Bitcoin, on considère qu’une transaction est irréversible quand elle a été intégrée dans un bloc qui a une certaine “profondeur” dans la Blockchain. La norme partagée la fixe à six blocs de profondeur : avec cinq blocs postérieurs, la probabilité qu’un « forking » soit encore en cours, avec son risque de réversibilité, est proche de 0.

 

LA GESTION DE LA MALVEILLANCE

Il est important de comprendre le phénomène de “forking” dans la Blockchain, car il est à l’origine du principal risque de malveillance dans le protocole : le “double-spending”.

La “double dépense” est un concept simple qui tente d’exploiter le phénomène de “forking” à son avantage : puisque les transactions ne sont irréversibles que lorsqu’elles appartiennent à un bloc inséré dans l’unique chaîne référente, il est possible pour une partie-prenante malveillante de tenter de dépenser deux fois la même valeur en plaçant deux transactions avec le même “input” dans les deux brins d’une fourche de la Blockchain.

La première transaction paye une autre partie-prenante contre un bien, la deuxième paie une adresse détenue par le payeur. Si la personne payée n’est pas consciente de cela et reçoit la confirmation que la transaction lui transférant les valeurs a été intégrée dans un bloc, il existe une possibilité que cette même transaction soit renversée dans le cas où l’autre brin de la fourche prendrait le dessus.

Depense_Double_Mise_En_Place

 

Cela n’est réellement possible qu’à un condition bien particulière : l’attaquant doit posséder au moins 51% de la puissance de calcul globale du réseau pour être en capacité de contrôler l’évolution des deux brins de la fourche.

Avec cette puissance de calcul, l’attaquant est en mesure de présenter au réseau des blocs valides, à un rythme bien précis, de sorte à ce que les deux brins de la fourche continuent d’évoluer en parallèle, donnant toujours plus de profondeur à la confirmation de la transaction doublement dépensée. Dupée, la personne payée délivre le bien qu’on lui a acheté et l’attaquant peut alors faire confirmer au réseau le brin de la fourche qui contient la transaction rémunérant l’adresse qu’il possède : les valeurs transférées à la personne payée n’ont plus d’existence.

 

Depense_Double_Resolution

 

Fort heureusement, dans un système Blockchain où la puissance de calcul est déjà développée et bien répartie – ce qui se surveille – la probabilité qu’un attaquant puisse réunir 51% de la puissance de calcul globale est très faible. Plus que cela, quand bien même la possibilité existe, la rentabilité économique serait pour lui hasardeuse : infrastructures, machines, électricité, temps, autant de dépenses qui ne valent pas la peine d’une arnaque à la marchandise volée.

Avec moins de puissance de calcul, disons 40%, les probabilités de réussite d’une telle attaque sont encore hautes sur une première confirmation, allant fortement en se réduisant au fur et à mesure que la profondeur de confirmation doit être augmentée pour gagner la confiance définitive de la partie-prenante payée. C’est pourquoi, comme nous l’avions vu plus haut, il est aujourd’hui recommandé aux vendeurs acceptant le BTC d’avoir une confirmation de 6 blocs de profondeur avant de délivrer des biens de valeur. Car à cette profondeur, les probabilités de réussite d’une attaque ET sa rentabilité économique la rendent caduque.

Si la double dépense est la plus commune, il existe d’autres formes de malveillance sur un système distribué comme celui d’une Blockchain. Notamment celle qui vise, non pas à jouer sur la réversibilité d’un transfert de valeur, mais sur la capacité du réseau distribué à gérer un afflux de transaction à confirmer, à la manière d’une attaque par déni de service. Nous reviendrons sur ce type d’attaque particulier lorsque nous parlerons de la problématique de scalabilité du protocole. Pour aller plus loin et avoir un panorama exhaustif des malveillances potentielles, la valeur d’expérience du Bitcoin est précieuse : voir cette page.

Reste à dire que la fiabilité et la sécurité des protocoles Blockchain sont aujourd’hui éprouvées, mais dépendantes de deux facteurs importants :

  • L’utilisateur doit pleinement comprendre le fonctionnement général et les points clés d’attention de tels systèmes distribués,
  • L’éco-système distribué doit être maintenu dans un état sain de répartition (minage) et de transparence (protocole).

L’un des grands défis de la Blockchain pour s’imposer au plus grand nombre dans le monde réel est de trouver les moyens de réduire sa dépendance à ces deux facteurs. De nombreuses initiatives vont aujourd’hui dans ce sens et nous ne manquerons pas d’en parler dans un prochain article !