El problema de los generales bizantinos es una solución para los nodos erróneos o maliciosos que transmiten información incorrecta. Esto permite que la blockchain siga funcionando correctamente a pesar de los errores. Hoy, hagamos un breve viaje a la antigüedad. El Imperio Bizantino formaba parte del Imperio Romano, después de que éste se dividiera en dos partes. Bizancio (más tarde Constantinopla y Estambul) era la capital.
✔️ La tolerancia bizantina a fallos se utiliza en la tecnología blockchain para garantizar que todos los nodos/mineros llegan al mismo acuerdo sobre qué bloques se añaden a la cadena.
✔️ El 51% de los mineros deben estar de acuerdo con un bloque para que se añada.
✔️ El sistema no requiere confianza entre los mineros, por lo que se denomina "trustless".
✔️ Bitcoin lleva funcionando con éxito más de 10 años gracias a la tolerancia a fallos bizantina.
Así que los generales bizantinos son generales del Imperio Bizantino.
¿Cuál era el problema clásico? Supongamos que se asedia una gran ciudad. Hay varias unidades del ejército dirigidas por un general. En un momento dado, todos los generales deben realizar la misma acción, por ejemplo, atacar o retirarse. Si no hacen lo mismo, les espera la derrota.
¿Cómo se debe proceder? En primer lugar, descubramos el fallo bizantino. Entre los ejércitos circulan mensajeros que informan a los generales de lo que han decidido los demás generales. Si una mayoría elige una estrategia determinada, todos los generales deben acatarla.
Un fallo bizantino se produce cuando un general traidor decide comunicar una decisión (ataque) a un grupo de generales y otra (retirada) al resto.
La tolerancia a los fallos bizantinos funciona de forma que los generales no leales no pueden "aplastar el sistema" a menos que tengan la mayoría. Supongamos que tiene 9 generales, de los cuales 5 son leales y 4 no leales, entonces la mayoría decide la estrategia. Como la mayoría de los generales suelen ser leales, este sistema funcionará casi siempre.
Vale, pero ¿qué tiene que ver eso con blockchain? La tolerancia bizantina a fallos (Byzantine faullt tolerance en blockchain) tiene que ver con el consensus, o acuerdo, en una blockchain.
Todo el tiempo se realizan transacciones y se añaden nuevos bloques a una blockchain. Unos ordenadores tienen que hacer un seguimiento de esta blockchain. Son los miner o validadores. ¿Cómo saben estos ordenadores qué bloques son los correctos? Después de todo, puede haber validadores que quieran añadir un bloque que sea incorrecto o fraudulento.
Lo hacen llegando a un acuerdo o consensus sobre qué bloque es el correcto. En la mayoría de los protocolos de consensus de prueba de trabajo, el 51% de los miners deben estar de acuerdo en que un bloque es correcto. En el momento en que lo hacen, el bloque se añade a la blockchain y se registra de forma inalterable.
Así que es muy posible que haya bastantes validadores malos o falsos entre ellos y que, aun así, el sistema siga funcionando bien. La tolerancia bizantina a fallos funciona tan bien que Bitcoin lleva más de una década funcionando bien con ella. Además, cada año es más difícil y más caro atacar la red porque la blockchain es más grande y el precio es más caro. Entonces, si se quiere conseguir el 51% de la potencia de cálculo en conjunto, implica sumas de dinero tan grandes que cuesta más de lo que se ingresa. Por eso ya nunca se oye hablar de un ataque a las grandes redes.
La belleza de este sistema es que los nodes o miner ni siquiera tienen que confiar los unos en los otros, es trustless. Todo lo que hace falta es que la mayoría se ponga de acuerdo, y eso es todo automático, sin la intervención de nadie excepto de ordenadores impersonales.
Esta tolerancia al error es enormemente importante para mantener el sistema en funcionamiento sin tener que cambiarlo todo continuamente como creador o programador. Así que podemos concluir sin temor a equivocarnos que Satoshi Nakamoto, el creador de Bitcoin, hizo algo muy inteligente.