Tolerancia a fallos bizantinos (BFT)
La tolerancia a fallos bizantinos (BFT, por Byzantine Fault Tolerance) es la capacidad de un sistema para seguir alcanzando un acuerdo correcto incluso cuando algunos participantes fallan de forma arbitraria, lo que incluye mentir, enviar mensajes contradictorios o conspirar activamente para perturbar la red. El nombre procede del «Problema de los generales bizantinos», un experimento mental de 1982 sobre comandantes de un ejército que deben coordinar un ataque cuando algunos generales pueden ser traidores que envían órdenes contradictorias.
Este es el problema central que resuelve toda blockchain: miles de desconocidos deben ponerse de acuerdo sobre un único historial de transacciones asumiendo que algunos de ellos son maliciosos. Los protocolos BFT clásicos, descendientes de PBFT (Practical Byzantine Fault Tolerance), funcionan haciendo que un conjunto conocido de validadores intercambie rondas de votos; pueden tolerar que hasta un tercio de los validadores sea defectuoso. Por ejemplo, Tendermint (el motor de consenso de las cadenas de Cosmos) finaliza un bloque cuando más de dos tercios del poder de voto de los validadores lo firman, de modo que un bloque es irreversible en el momento en que se confirma. El mecanismo de finalidad Casper FFG de Ethereum aplica el mismo principio de los dos tercios.
Un error común es creer que Bitcoin usa un protocolo de votación BFT; en cambio, Bitcoin logra la tolerancia a fallos bizantinos de forma probabilística mediante el proof of work y la regla de la cadena más larga, sin que los validadores voten en absoluto, un enfoque distinto que suele llamarse consenso de Nakamoto. La diferencia práctica se nota en la finalidad: las cadenas de estilo BFT ofrecen una finalidad instantánea y absoluta tras un bloque, mientras que las de estilo Nakamoto ofrecen una confianza que crece con cada confirmación pero nunca alcanza la certeza matemática.