O que é Practical Byzantine Fault Tolerance (PBFT)?
Practical Byzantine Fault Tolerance (PBFT) é um algoritmo de consenso projetado para funcionar eficientemente num sistema assíncrono (sem assumir quaisquer sincronizações) e otimizado para ter baixa latência.
Introduzido pela primeira vez por Miguel Castro e Barbara Liskov num estudo de 1999, o algoritmo PBFT é uma forma de replicação de máquina de estados, o que significa que um estado do sistema é replicado e distribuído por vários servidores. Isso acaba por tornar o sistema mais robusto porque falhas como as bizantinas podem ocorrer isoladamente, ao contrário de causar a falha de uma rede inteira.
Como funciona o algoritmo PBFT
Fundamentalmente, os nós num modelo PBFT são ordenados numa sequência onde um nó é considerado o nó primário (líder) e outros nós são referidos como backups. No entanto, todos os nós dentro de uma rede ainda mantêm comunicação. O objetivo é que todos os nós honestos cheguem a um acordo em relação ao estado do sistema através de uma regra da maioria.
Para que o modelo PBFT funcione, o número máximo de nós maliciosos não deve ser maior ou igual a um terço de todos os nós no sistema. Cada rodada de consenso PBFT (normalmente referida como “vistas”) é resumida em quatro fases simples:
- Um cliente envia um pedido de operação de serviço para o nó primário (líder).
- O nó primário distribui este pedido a todas as réplicas de backup ao mesmo tempo.
- As réplicas executam o pedido e enviam uma resposta ao cliente.
- O cliente aguarda respostas de diferentes réplicas com resultados semelhantes.
O nó primário muda a cada visualização, que pode ser substituída por um protocolo de “mudança de visualização” se o pedido não for transmitido após um certo período. Além disso, se um nó primário for considerado defeituoso, pode ser removido com o acordo de uma grande maioria de nós honestos.
Exemplos de plataformas que utilizam variantes de PBFT são Zilliqa, Hyperledger e Tendermint.