Depuis la création du Bitcoin en 2008, en tant que système de paiement électronique peer-to-peer, de nombreuses autres crypto-monnaies ont été créées, chacune dotée d'un mécanisme particulier. Mais une chose que presque toutes les crypto-monnaies ont en commun est la blockchain, en tant qu’élément central de leur architecture.
À quelques exceptions près, les blockchains sont intentionnellement conçues pour être décentralisées, fonctionnant comme un registre numérique géré par un réseau distribué de nœuds informatiques. Pour cette raison, la technologie blockchain a permis la création de systèmes économiques sans confiance, dans lesquels des transactions financières transparentes et fiables pouvaient être exécutées sans avoir recours à des intermédiaires. Les crypto-monnaies sont adoptées comme alternative viable aux systèmes bancaires et de paiement traditionnels, qui dépendent fortement de la confiance.
Tout comme la plupart des systèmes informatiques distribués, les participants d’un réseau de crypto-monnaie doivent régulièrement se mettre d’accord sur l’état actuel de la blockchain, et c’est ce que nous appelons l’obtention d’un consensus. Cependant, parvenir à un consensus sur les réseaux distribués, de manière sûre et efficace, est loin d’être une tâche facile.
Alors, comment un réseau distribué de nœuds informatiques peut-il se mettre d’accord sur une décision, si certains nœuds sont susceptibles de tomber en panne ou d’agir de manière malhonnête ? C’est la question fondamentale du problème dit des généraux byzantins, qui a donné naissance au concept de tolérance aux fautes byzantines.
Quel est le problème des généraux byzantins ?
En quelques mots, le problème des généraux byzantins a été conçu en 1982 comme un dilemme logique illustrant comment un groupe de généraux byzantins peut avoir des problèmes de communication lorsqu’il tente de se mettre d’accord sur son prochain mouvement.
Le dilemme suppose que chaque général possède sa propre armée et que chaque groupe est situé à différents endroits autour de la ville qu'il a l'intention d'attaquer. Les généraux doivent se mettre d’accord sur l’attaque ou la retraite. Peu importe qu’ils attaquent ou battent en retraite, du moment que tous les généraux parviennent à un consensus, c’est-à-dire s’accordent sur une décision commune afin de l’exécuter en coordination.
Par conséquent, nous pouvons considérer les exigences suivantes :
Chaque général doit décider : attaque ou retraite (oui ou non) ;
Une fois la décision prise, elle ne peut plus être modifiée ;
Tous les généraux doivent se mettre d’accord sur la même décision et l’exécuter de manière synchronisée.
Les problèmes de communication mentionnés ci-dessus sont liés au fait qu’un général ne peut communiquer avec un autre que par le biais de messages transmis par courrier. Par conséquent, le défi central du problème des généraux byzantins est que les messages peuvent être retardés, détruits ou perdus.
De plus, même si un message est délivré avec succès, un ou plusieurs généraux peuvent choisir (pour quelque raison que ce soit) d'agir de manière malveillante et d'envoyer un message frauduleux pour confondre les autres généraux, conduisant à un échec total.
Si nous appliquons le dilemme au contexte des blockchains, chaque général représente un nœud du réseau, et les nœuds doivent parvenir à un consensus sur l’état actuel du système. En d’autres termes, la majorité des participants au sein d’un réseau distribué doivent se mettre d’accord et exécuter la même action afin d’éviter un échec complet.
Par conséquent, la seule façon d’atteindre un consensus dans ces types de systèmes distribués est de disposer d’au moins ⅔ ou plus de nœuds de réseau fiables et honnêtes. Cela signifie que si la majorité du réseau décide d'agir de manière malveillante, le système est vulnérable aux pannes et aux attaques (comme l'attaque 51 %).
Tolérance aux pannes byzantine (BFT)
En quelques mots, la tolérance aux pannes byzantine (BFT) est la propriété d’un système capable de résister à la classe d’échecs dérivée du problème des généraux byzantins. Cela signifie qu'un système BFT est capable de continuer à fonctionner même si certains nœuds tombent en panne ou agissent de manière malveillante.
Il existe plusieurs solutions possibles au problème des généraux byzantins et, par conséquent, plusieurs façons de construire un système BFT. De même, il existe différentes approches permettant à une blockchain d’atteindre la tolérance aux pannes byzantine, ce qui nous amène aux algorithmes dits de consensus.
Algorithmes de consensus blockchain
Nous pouvons définir un algorithme de consensus comme le mécanisme par lequel un réseau blockchain parvient à un consensus. Les implémentations les plus courantes sont la preuve de travail (PoW) et la preuve de participation (PoS). Mais prenons comme exemple le cas du Bitcoin.
Alors que le protocole Bitcoin prescrit les règles principales du système, l'algorithme de consensus PoW définit la manière dont ces règles seront suivies afin de parvenir à un consensus (par exemple, lors de la vérification et de la validation des transactions).
Bien que le concept de Proof of Work soit plus ancien que les crypto-monnaies, Satoshi Nakamoto en a développé une version modifiée sous forme d'algorithme qui a permis la création de Bitcoin en tant que système BFT.
Notez que l'algorithme PoW n'est pas tolérant à 100 % aux failles byzantines, mais en raison du processus d'extraction coûteux et des techniques cryptographiques sous-jacentes, PoW s'est avéré être l'une des implémentations les plus sécurisées et les plus fiables pour les réseaux blockchain. En ce sens, l’algorithme de consensus Proof of Work, conçu par Satoshi Nakamoto, est considéré par beaucoup comme l’une des solutions les plus géniales aux failles byzantines.
Dernières pensées
Le problème des généraux byzantins est un dilemme intrigant qui a finalement donné naissance aux systèmes BFT, qui sont largement appliqués dans divers scénarios. Au-delà de l’industrie de la blockchain, quelques cas d’utilisation des systèmes BFT incluent les industries de l’aviation, de l’espace et de l’énergie nucléaire.
Dans le contexte des crypto-monnaies, disposer d’une communication réseau efficace ainsi que d’un bon mécanisme de consensus est vital pour tout écosystème blockchain. La sécurisation de ces systèmes est un effort continu, et les algorithmes de consensus existants n'ont pas encore surmonté quelques limitations (telles que l'évolutivité). Néanmoins, PoW et PoS sont des approches très intéressantes en tant que systèmes BFT, et les applications potentielles inspirent certainement une innovation généralisée.

