Le Practical Byzantine Fault Tolerance (PBFT) est algorithme servant à garantir un consensus (accord sur la même valeur) fiable et sécurisé dans les systèmes distribués. Il a été conçu pour résoudre le problème des généraux byzantins, qui doivent arriver à se mettre d’accord sur un plan de bataille malgré la présence de traîtres parmi eux (ou parmi les messagers).
L’algorithme PBFT a été proposé pour la première fois en 1999 par Miguel Castro et Barbara Liskov. Il est considéré comme l’un des premiers algorithmes de consensus résistant aux failles byzantines (Byzantine Fault Tolerance = BFT). Il présente l’avantage de pouvoir réaliser des dizaines de milliers de transactions par seconde et d’assurer la sécurité du réseau tant que moins d’un tiers de ses nœuds sont malicieux. Aussi, plus le nombre de nœuds augmente, plus le système devient sécurisé, mais plus il devient lent.
Le fonctionnement de PBFT repose sur un système de réplication d’état. Les nœuds du réseau (appelés « réplicas ») stockent tous une copie identique de l’état actuel du système. Lorsqu’une transaction est proposée, elle est diffusée à tous les réplicas. Chaque réplica la vérifie et la valide.
Le processus de validation est divisé en plusieurs étapes, appelées vues. Au début de chaque vue, un réplica est élu comme leader. Il est chargé de collecter les réponses des autres réplicas et de les agréger. Si « n+1 » (avec n est le nombre maximal de nœuds défectueux autorisés) nœuds du réseau donnent le même résultat, alors la transaction est considérée comme validée et ajoutée à l’état du système.
Le nombre de communications élevé entre les nœuds rend le modèle de consensus PBFT inefficient lorsque les nœuds deviennent trop nombreux dans le réseau. Le temps de réponse est alors trop élevé. Pour pallier ce problème, le PBFT est souvent utilisé en association avec d’autres mécanismes de consensus comme le Proof of Work ou le Proof of Stake.
Le PBFT est utilisé par certaines blockchains. En effet, les mécanismes de consensus utilisés doivent être résistants au fait que certains des participants peuvent être malveillants ou défaillants.
Parmi les projets blockchain qui utilisent le PBFT, on retrouve :
- Zilliqa (en combinaison avec le mécanisme de consensus Proof Of Work)
- Tendermint (en combinaison avec le mécanisme de consensus Delegate Proof of Stake)