Las blockchains permiten que los ordenadores y las personas confíen entre ellas sin necesidad de intermediarios. Estas redes de personas y ordenadores simplemente necesita confiar en que las reglas que todos siguen son fiables. Y la BFT o tolerancia a fallos bizantina (Byzantine Fault Tolerance) es una de las propiedades fundamentales para crear reglas o protocolos de blockchain fiables.
Pero antes de entender qué es la tolerancia a fallos bizantina, tenemos que dar un paso atrás y averiguar qué significan los pares, los nodos y el consenso y qué tienen que ver las tácticas militares con todo esto.
¿Qué son los pares y los nodos?
La mayoría de las cadenas de bloques funcionan como redes en las que todos los ordenadores de la red tienen el mismo acceso y derechos, y se comunican directamente entre sí. Cada uno de los ordenadores de esta red se conoce como peer o nodo. En un sistema verdaderamente descentralizado, ningún par o nodo tiene más autoridad o poder que el siguiente. Esto significa que no hay gerentes, coordinadores o directores que hagan cumplir las reglas, determinen lo que es cierto o castiguen el mal comportamiento. En su lugar, el sistema se basa en el hecho de que todos los nodos deben seguir las mismas reglas o protocolo para llegar a un acuerdo.
¿Qué es el consenso?
Consenso significa simplemente un acuerdo general. En un sistema descentralizado en el que no hay autoridades, lograr el consenso es una de las cosas más importantes y más difíciles de hacer. Para que el sistema o la red funcione correctamente, la mayoría de los nodos deben estar de acuerdo con lo que es cierto, llegando a un consenso a intervalos regulares. El problema es que algunos nodos inevitablemente fallarán, se comportarán mal o simplemente no estarán de acuerdo con el consenso de los demás nodos, por lo que el sistema debe diseñarse de tal manera que haga frente a esta inevitabilidad.
¿Qué es la tolerancia a fallos bizantina?
Un sistema tiene Tolerancia a Fallos Bizantinos (BFT) cuando puede seguir funcionando correctamente mientras dos tercios de la red estén de acuerdo o lleguen a un consenso. La BFT es una propiedad o característica de un sistema que puede resistir hasta un tercio de los nodos que fallan o actúan maliciosamente.
Todas las cadenas de bloques descentralizadas funcionan con protocolos de consenso o reglas que todos los nodos de la cadena de bloques deben seguir para participar. Los protocolos de consenso como Proof-of-Work, Proof-of-Stake y Proof-of-Authority son BFT y por lo tanto son capaces de resistir hasta un tercio de los nodos en desacuerdo.
¿Quién inventó la tolerancia a fallos bizantina?
El Problema General Bizantino fue inventado en 1982 por Leslie Lamport, Robert Shostak y Marshall Pease y es la inspiración para el concepto de Tolerancia a Fallos Bizantina.
El concepto de BFT viene del Problema del General Bizantino, que es un experimento de pensamiento lógico en el que hay varios generales que necesitan atacar una ciudad.
- Los generales se encuentran en lugares diferentes y solo pueden comunicarse por medio de un mensajero, un mensaje a la vez.
- Todos deben coordinar la misma acción para atacar o retirarse con éxito.
- Si todos atacan, estarán bien. Si todos se retiran, todo irá bien.
- El problema se produce cuando algunos generales atacan mientras otros se retiran, en cuyo caso el resultado será malo para todos.
- El giro es que algunos generales son desleales y tratarán de confundir a los otros generales.
- El problema a resolver es: ¿cómo se pondrán de acuerdo todos los generales en la misma acción incluso ante la traición y el engaño?
Un protocolo de consenso que es BFT puede coordinarse y llegar a un consenso a pesar de que haya cierto desacuerdo entre los nodos. Esto es vital para las cadenas de bloques descentralizadas como Ethereum o Bitcoin. Una de las innovaciones esenciales de Satoshi Nakamoto cuando creó Bitcoin fue resolver el Problema General Bizantino aplicando la prueba de trabajo a la red Bitcoin. Al tener la propiedad de BFT, la red Bitcoin está protegida de que hasta un tercio de los nodos sean maliciosos.