Depuis la création du bitcoin en 2008, en tant que système de monnaie électronique de pair à pair, de nombreuses autres crypto-monnaies ont été créées, chacune avec un mécanisme particulier. Mais une chose que presque toutes les crypto-monnaies ont en commun est la blockchain, comme élément central de leur architecture.
À quelques exceptions près, les blockchains sont intentionnellement conçues pour être décentralisées, fonctionnant comme un grand livre numérique qui est maintenu 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, où des transactions financières transparentes et fiables peuvent être exécutées sans intermédiaire. Les crypto-monnaies sont adoptées comme une alternative viable aux systèmes bancaires et de paiement traditionnels, qui dépendent fortement de la confiance.
Comme la plupart des systèmes informatiques distribués, les participants d’un réseau de crypto-monnaies doivent régulièrement se mettre d’accord sur l’état actuel de la blockchain, et c’est ce que nous appelons la réalisation du consensus. Cependant, l’obtention d’un consensus sur les réseaux distribués, de manière sûre et efficace, est loin d’être une tâche facile.
Donc, comment un réseau distribué de nœuds informatiques peut-il se mettre d’accord sur une décision, si certains des nœuds sont susceptibles 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.
Qu’est-ce que 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 qui illustre comment un groupe de généraux byzantins peut avoir des problèmes de communication lorsqu’il essaie de se mettre d’accord sur leur prochain mouvement.
Le dilemme suppose que chaque général a sa propre armée et que chaque groupe est situé à différents endroits autour de la ville qu’ils ont l’intention d’attaquer. Les généraux doivent se mettre d’accord pour attaquer ou battre en retraite. Peu importe qu’ils attaquent ou qu’ils se retirent, tant que tous les généraux parviennent à un consensus, c’est-à-dire qu’ils doivent s’accordent sur une décision commune afin de l’exécuter en coordination.
On peut donc considérer les exigences suivantes :
- Chaque général doit décider : attaquer ou battre en retraite (oui ou non) ;
- Une fois la décision prise, elle ne peut pas être modifiée ;
- Tous les généraux doivent s’accorder 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 des messages, qui sont transmis par un coursier. Par conséquent, le défi central du problème des généraux byzantins est que les messages peuvent être, d’une manière ou d’une autre, 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 malicieusement 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 de réseau, et les nœuds doivent parvenir à un consensus sur l’état actuel du système. Dit autrement, la majorité des participants au sein d’un réseau distribué doivent être d’accord et exécuter la même action afin d’éviter un échec complet.
Par conséquent, la seule façon d’obtenir un consensus dans ces types de système distribué est d’avoir 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 susceptible de subir des défaillances et des attaques (comme l’attaque 51%).
Tolérance aux fautes byzantines (BFT)
En quelques mots, la tolérance aux fautes byzantines (BFT) est la propriété d’un système qui est capable de résister à la classe de défaillances 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 tombent en panne 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 pour qu’une blockchain atteigne la tolérance aux pannes byzantines et cela nous amène à ce que l’on appelle les algorithmes de consensus.
Algorithmes de consensus de blockchain
Nous pouvons définir un algorithme de consensus comme le mécanisme par lequel un réseau de blockchain atteint le consensus. Les implémentations les plus courantes sont la preuve de travail (PoW) et la preuve d’enjeu (PoS). Mais prenons le cas de Bitcoin comme exemple.
Alors que le protocole Bitcoin prescrit les règles primaires du système, l’algorithme de consensus PoW est ce qui définit comment ces règles seront suivies pour atteindre le consensus (par exemple, pendant la vérification et 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 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 de minage coûteux et des techniques cryptographiques sous-jacentes, PoW s’est avéré être l’une des implémentations les plus sûres 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.
Pensées finales
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, avoir une communication réseau efficace ainsi qu’un bon mécanisme de consensus est vital pour tout écosystème de 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 les applications potentielles inspirent certainement une innovation généralisée.