Depuis la création du Bitcoin en 2008, en tant que système de paiement électronique de pair à pair, de nombreuses autres crypto-monnaies ont été créées, chacune avec un mécanisme de fonctionnement particulier. Mais une chose que presque toutes les crypto-monnaies ont en commun, c’est la blockchain, élément central de leur architecture.
À quelques exceptions près, les blockchains sont conçues intentionnellement comme décentralisées et fonctionnent comme un registre numérique géré par un réseau distribué de noeuds d'ordinateurs. Dans ce cadre, la technologie blockchain a permis la création de systèmes économiques exempts du besoin de confiance, dans lesquels des transactions financières transparentes et fiables pouvaient être exécutées sans recourir à des intermédiaires. Les crypto-monnaies sont en train d’être adoptées comme une 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 très régulièrement se mettre d'accord sur l'état de la blockchain, c'est ce que l’on appelle la réalisation d'un consensus. Cependant, parvenir à un consensus sur des réseaux distribués, de manière sécurisée et fiable, est loin d’être une tâche facile.
Alors, comment un réseau distribué de nœuds d’ordinateur peut-il s’accorder sur une décision si certains des nœuds risquent d’échouer 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 pannes byzantines.
Quel est le problème des généraux byzantins?
Le dilemme suppose que chaque général a sa propre armée et que chaque groupe armé est situé à différents endroits autour d’une ville qu’ils désirent assiéger. Les généraux doivent se mettre d’accord pour attaquer ou battre en retraite. Peu importe qu’ils attaquent ou qu’ils battent en retraite, il faut que tous les généraux parviennent à un consensus, c’est-à-dire à s’entendre sur une décision commune afin de l’exécuter en coordination.
Par conséquent, nous pouvons considérer les objectifs suivants:
Chaque général doit prendre une décision: 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 susmentionnés sont liés au fait qu’un général ne peut communiquer avec un autre que par l’intermédiaire de messages qui sont transmis par un émissaire. Par conséquent, le challenge central du problème des généraux byzantins est le suivant : les messages peuvent être retardés, détruits ou perdus.
En outre, même si un message est délivré avec succès, un ou plusieurs généraux peuvent choisir (pour une raison quelconque) d’agir de manière malveillante et d’envoyer un message frauduleux afin d’embrouiller les autres généraux, entraînant ainsi un échec total.
Si nous appliquons le dilemme au contexte des blockchains, chaque général représente un nœud de 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 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 de parvenir à un consensus dans ces types de systèmes distribués consiste à avoir au moins ⅔ 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 malicieuse, le système est sujet aux défaillances et aux attaques (comme l’attaque à 51%).
La Tolérance aux pannes byzantines (BFT)
En quelques mots, la tolérance aux pannes byzantines (BFT) caractérise un système capable de résister à la l’éventail de pannes dérivées du Problème des généraux byzantins. Cela signifie qu'un système BFT est capable de continuer à fonctionner même si certains des nœuds échouent ou agissent de manière malveillante.
Il existe plus d’une solution possible au problème des généraux byzantins et, par conséquent, de multiples façons de construire un système BFT. De même, il existe différentes approches permettant à une blockchain d'atteindre la tolérance de panne byzantine, ce qui nous conduit aux algorithmes de consensus.
Les algorithmes de consensus de Blockchain
Nous pouvons définir un algorithme de consensus comme un mécanisme par lequel un réseau blockchain parvient à un consensus. Les implémentations les plus courantes sont la preuve de travail et la preuve de participation. Mais prenons le cas Bitcoin comme exemple.
Alors que le protocole Bitcoin prescrit les règles principales du système, c'est l'algorithme de consensus PoW qui définit comment 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 preuve de travail soit plus ancien que les crypto-monnaies, Satoshi Nakamoto en a développé une version modifiée, en tant qu’algorithme et système BFT ayant permis la création du Bitcoin.
Notez que l'algorithme PoW n'est pas tolérant à 100% aux fautes byzantines, mais en raison du processus de minage 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 pertinentes aux fautes byzantines.
Conclusion
Le problème des généraux byzantins est un dilemme intrigant qui a finalement donné naissance aux systèmes BFT, qui sont largement utilisés dans divers scénarios. Au-delà du secteur de la blockchain, quelques cas d'utilisation des systèmes BFT incluent les secteurs de l'aviation, de l'espace et de l'énergie nucléaire.
Dans le contexte de la crypto-monnaie, une communication réseau efficace associée à un bon mécanisme de consensus sont essentiels pour tout écosystème blockchain. La sécurisation de ces systèmes est un effort continu et les algorithmes de consensus existants doivent encore surmonter quelques limitations (telles que la scalabilité). Néanmoins, PoW et PoS sont des approches très intéressantes en tant que systèmes BFT, et leurs applications potentielles appellent certainement à une innovation généralisée.