Qu’est ce que Byzantine Fault Tolerance (BFT)

Pour bien comprendre ce qu’est l’algorithme Byzantine Fault Tolerance (BFT) il faut le faire par étapes. La blockchain est un système décentralisé sur lequel plusieurs intervenants agissent selon leurs motivations personnelles.

Une fois qu’une transaction est transmise au réseau, les noeuds s’occupent de la vérifier, la valider, pour finalement l’inclure dans le grand livre distribué.

Il est important de mettre cela en évidence notamment avec l’apparition du terme consensus. Ce terme prend tout son sens lorsque plus de la moitié des intervenants prennent une décision entre différentes actions et parviennent à un accord.

L’objectif du consensus est de permettre que tout se passe de la bonne façon, sans pannes (bugs, erreurs, actes malveillants…)

On peut alors se poser les questions suivantes :

  • Qu’est ce qu’il se passe si un intervenant choisit de ne pas respecter les règles et d’altérer l’état de la blockchain ?
  • Que se passe t-il si ces entités frauduleuses sont nombreuses dans le réseau ?

C’est en se posant ces questions que nous parvenons à comprendre pourquoi il est vraiment important qu’un protocole de consensus puisse être tolérant à de multiples types de pannes, comme les pannes Byzantines.


Problème des généraux byzantins

Dans ce problème, plus de deux généraux doivent s’accorder sur le moment où il faut attaquer un ennemi. En sachant qu’un ou plusieurs d’entre eux peuvent alors être un  (des) traître(s). 

Cela veut dire que s’ils comptent garder leur choix initial, notamment sur des critères tels que la date et l’heure de l’attaque, alors il faudra trouver une solution.

Le paradigme qui est mis en évidence dans ce célèbre problème est la mise en place d’une configuration commandant et lieutenant, permettant de parvenir à un consensus, solution la plus adéquate pour tous. 

De cette façon, la solution la plus adéquate a été trouvée. Le commandant doit parvenir à un accord avec tous les lieutenants pour appliquer la même décision.


La variante des deux généraux 

Dans cette version plus simple du problème des généraux expliqué plus haut, deux généraux attaquent un ennemi et possèdent des grades. Le général numéro 1 représente le chef et l’autre le suiveur.

Dans cette situation la problématique est la suivante : il faut qu’il y ait l’intervention de leurs armées respectives réunies pour être capable de battre l’armée ennemie.

Ils doivent donc se mettre d’accord puis coopérer en attaquant alors au même moment. Afin de pouvoir établir un moyen de communication et pouvoir ainsi choisir une heure.

Le premier général doit transmettre au deuxième général un messager. Ce messager vient avec toutes les informations, et cela au travers du camp ennemi. En sachant que le messager peut être capturé par l’ennemi. Il n’y a donc pas de garantie apportant la certitude aux généraux que l’autre soit d’accord pour le plan d’attaque.


Tolérance aux pannes byzantines – Byzantine Fault Tolerance

La tolérance aux pannes byzantines est un système étant en mesure de tolérer ce type de pannes en particulier. Il s’agit de la classe la plus compliquée et la plus dure à résoudre.

Si cet algorithme n’est pas mis en place, une personne peut transmettre et poster des transactions erronées. 

Un noeud peut générer différentes données arbitraires en faisant croire qu’il est un intervenant honnête.