Depuis les débuts du Bitcoin en 2008 en tant que système financier électronique peer-to-peer, de nombreuses monnaies numériques ont été créées, chacune fonctionnant avec un mécanisme spécial. Mais la seule chose que toutes les monnaies numériques ont en commun est la blockchain en tant qu’élément de base de leur structure.
Toutes les blockchains sont intentionnellement conçues pour être décentralisées et, à quelques exceptions près, elles agissent 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 fiables dans lesquels les transactions financières peuvent être effectuées de manière transparente et fiable sans avoir recours à des intermédiaires.
L’utilisation des monnaies numériques est actuellement adoptée comme une alternative viable aux systèmes bancaires et méthodes de paiement traditionnels qui reposent fortement sur la confiance.
Comme c’est le cas dans la plupart des systèmes informatiques distribués, les participants à un réseau de cryptomonnaies doivent régulièrement se mettre d’accord sur l’état actuel dans lequel fonctionne la blockchain. 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 sécurisée est une tâche très difficile.
Alors, comment un réseau distribué de nœuds informatiques peut-il s’entendre sur la probabilité que certains nœuds tombent en panne ou agissent illégalement ? C’est la question fondamentale du soi-disant problème des généraux byzantins, d’où est né le concept de tolérance aux fautes byzantines.
Quel est le problème des généraux byzantins ?
En bref, le problème des généraux byzantins de 1982 a été conçu comme un dilemme logique illustrant comment un groupe de généraux byzantins pourrait avoir des difficultés à communiquer entre eux lorsqu’ils tentent de se mettre d’accord sur la prochaine étape de leur plan.
Le dilemme suppose que chaque général possède sa propre armée, que chaque groupe est situé à différents endroits autour de la ville qu'il a l'intention d'attaquer et que chaque général doit accepter d'attaquer ou de battre en retraite. Peu importe qu’ils attaquent ou battent en retraite, du moment que tous les généraux parviennent à un consensus, c’est-à-dire qu’ils s’accordent sur une décision commune afin de la mettre en œuvre de manière coordonnée.
Ainsi, nous pouvons considérer les objectifs suivants :
Chaque général doit décider : attaque ou retraite (oui ou non).
Une fois qu’une décision est prise, elle ne peut plus être modifiée.
Tous les généraux doivent s’entendre sur la même décision et la mettre en œuvre de manière synchronisée.
Les problèmes de communication ci-dessus sont liés au fait que chaque général ne peut communiquer avec un autre général que par le biais de messages envoyés par le transporteur/coursier. Ainsi, le principal défi du problème pour les généraux byzantins était que les messages pouvaient être retardés, endommagés ou perdus.
De plus, même si le message est transmis avec succès, un ou plusieurs généraux peuvent (pour quelque raison que ce soit) choisir d'agir de manière malveillante et d'envoyer un message usurpé pour confondre les autres généraux, conduisant à l'échec complet de la mission.
Si nous appliquons ce dilemme dans le contexte de la blockchain, chaque génération représente un nœud du réseau et les nœuds doivent parvenir à un consensus sur l'état actuel du système. Autrement dit, la majorité des participants d'un réseau distribué doivent accepter et effectuer la même action pour éviter un échec complet.
Par conséquent, la seule façon d’atteindre un consensus dans ces types de systèmes distribués est d’avoir ⅔ (deux tiers) ou plus de nœuds honnêtes. Cela signifie que si la majorité du réseau décide d'agir de manière malveillante, le système sera vulnérable aux pannes et aux attaques (par exemple 51 % d'attaque).
Tolérance aux pannes byzantines - BFT
En bref, la tolérance aux pannes byzantine (BFT) est la propriété d’un système capable de résister au type de défaillance dérivé du problème des généraux byzantins. Cela signifie que le système BFT est capable de continuer à fonctionner même si certains nœuds tombent en panne ou se comportent de manière malveillante.
Il existe plusieurs solutions possibles au problème des généraux byzantins, ce qui signifie qu'il existe plusieurs façons de construire un système BFT. De même, il existe plusieurs approches différentes permettant aux blockchains d’atteindre la tolérance aux pannes byzantine, ce qui nous amène à ce que l’on appelle les algorithmes 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 applications les plus courantes sont la preuve de travail (PoW) et la preuve de participation (PoS). Mais prenons comme exemple le cas du Bitcoin.
Si le protocole Bitcoin précise les règles de base du système, c'est l'algorithme de consensus connu sous le nom de Proof of Work (PoW) qui définit la manière dont ces règles sont suivies afin de parvenir à un consensus (par exemple, lors de la vérification 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 de preuve de travail (PoW) n'est pas 100 % tolérant aux pannes, mais en raison du processus d'extraction coûteux et des techniques cryptographiques, PoW s'est avéré être l'une des implémentations les plus sécurisées et les plus fiables des réseaux blockchain.
Par conséquent, l’algorithme Proof of Work conçu par Satoshi Nakamoto est utilisé par beaucoup comme l’une des solutions les plus ingénieuses aux erreurs byzantines.
Conclusion
Le problème des généraux byzantins est un dilemme intéressant qui a finalement donné naissance aux systèmes BFT qui sont largement appliqués dans divers scénarios. Même en dehors de l’industrie de la blockchain, quelques cas d’utilisation du BFT incluent les industries de l’aviation, de l’espace et de l’énergie nucléaire.
Dans le contexte des monnaies numériques, disposer d’un réseau de communication efficace ainsi que d’un mécanisme de consensus est vital pour tout système blockchain. La sécurisation de ces systèmes est un effort continu et les algorithmes de consensus existants s'efforcent encore de surmonter certaines limitations (telles que l'évolutivité). Cependant, Proof of Work (PoW) et Proof of Stake (PoS) sont deux approches très intéressantes des systèmes BFT et les applications potentielles sont certainement une source d'inspiration largement répandue.
