Desde el nacimiento de Bitcoin como sistema de efectivo electrónico entre pares en 2008, han surgido gradualmente muchas otras monedas digitales, y cada moneda digital tiene su propio mecanismo específico. Pero casi todas las monedas digitales tienen una cosa en común: la arquitectura central de blockchain.

En la mayoría de los casos, las cadenas de bloques están diseñadas para ser libros de contabilidad electrónicos descentralizados mantenidos por una red distribuida de nodos. Por lo tanto, los sistemas blockchain permiten que las transacciones financieras se ejecuten de forma totalmente transparente y fiable sin intermediarios. Las monedas digitales están reemplazando gradualmente a los sistemas de pago bancarios tradicionales que requieren una alta confiabilidad.

Como ocurre con la mayoría de los sistemas informáticos distribuidos, los participantes en una red de moneda digital deben discutir y acordar periódicamente el estado actual de la cadena de bloques. Esto es lo que llamamos consenso. Sin embargo, lograr consenso de forma segura y eficiente en una red distribuida no es una tarea fácil.

Entonces, ¿cómo puede una red distribuida de nodos informáticos acordar decisiones en situaciones en las que algunos nodos pueden funcionar mal o comportarse de manera deshonesta? Ésta es la raíz del llamado Problema de los Generales Bizantinos, que dio lugar al concepto de Tolerancia a Fallos Bizantinos.


¿Cuál es el problema de los generales bizantinos?

En pocas palabras, en 1982, el problema de los generales bizantinos se consideraba un dilema lógico que ilustraba los problemas de comunicación que podía tener un grupo de generales bizantinos al intentar ponerse de acuerdo sobre una opinión unificada sobre su próximo movimiento.

El dilema supone que cada general tiene su propio ejército, cada uno ubicado en un lugar diferente alrededor de la ciudad que pretende atacar. Estos generales deben ponerse de acuerdo sobre si atacar o retirarse. No importa si se trata de un ataque o una retirada, siempre y cuando todos los generales lleguen a un consenso, es decir, se coordinen y decidan ejecutarlo juntos.

Por tanto, podemos considerar las siguientes condiciones:

  • Cada general debe tomar una decisión: atacar o retirarse (sí o no);

  • Una vez que se toma una decisión, no se puede cambiar;

  • Todos los generales deben acordar una decisión unificada y ejecutarla simultáneamente.


El problema de comunicación anterior implica el hecho de que un general puede comunicarse con otro general sólo a través de mensajes enviados por agentes de inteligencia. Por lo tanto, el desafío central del problema de los generales bizantinos es que la información de alguna manera puede retrasarse, corromperse o perderse.

Además, incluso si el mensaje se entrega con éxito, uno o más generales pueden optar por actuar maliciosamente (por cualquier motivo) y enviar mensajes fraudulentos para confundir a otros generales, provocando que la operación fracase.

Si asignamos este dilema a la cadena de bloques, cada general representa un nodo de la red, y los nodos deben llegar a un consenso sobre el estado actual del sistema. En otras palabras, la mayoría de los participantes en una red distribuida deben estar de acuerdo y realizar las mismas acciones para evitar fallas.

Por tanto, la única forma de lograr consenso en este tipo de sistemas distribuidos es tener al menos dos tercios de los nodos de la red que sean confiables y honestos. Esto significa que el sistema es vulnerable a fallas y ataques (como ataques del 51%) si la mayoría de los nodos de la red deciden actuar de manera maliciosa.


Tolerancia a fallas bizantinas (BFT)

En pocas palabras, la tolerancia a fallas bizantinas (BFT) es una propiedad del sistema que puede resistir una serie de fallas causadas por el problema de los generales bizantinos. Esto significa que un sistema bizantino tolerante a fallas puede continuar funcionando incluso si algunos nodos fallan o se comportan de manera maliciosa.

Hay muchas soluciones posibles al problema de los generales bizantinos y, por lo tanto, hay muchas formas de construir un sistema bizantino tolerante a fallas. Asimismo, las cadenas de bloques tienen varias formas diferentes de lograr la tolerancia a fallas bizantinas, que es lo que llamamos algoritmos de consenso.


Algoritmo de consenso de blockchain

Podemos definir un algoritmo de consenso como el mecanismo mediante el cual una red blockchain llega a un consenso. Los ejemplos más comunes son Prueba de trabajo (PoW) y Prueba de participación (PoS). Aquí tomamos Bitcoin como ejemplo.

El protocolo Bitcoin establece las reglas principales del sistema y el algoritmo de consenso de prueba de trabajo explica cómo se siguen estas reglas para llegar a un consenso (por ejemplo, durante la verificación y validación de transacciones).

Aunque el concepto de prueba de trabajo es anterior a la moneda digital, Satoshi Nakamoto modificó la versión original y desarrolló un algoritmo de prueba de trabajo mejorado que puede generar Bitcoin como un sistema bizantino tolerante a fallas.

Tenga en cuenta que este algoritmo de prueba de trabajo no es completamente resistente a fallas bizantinas, pero debido al proceso de minería de alto costo y la tecnología de cifrado subyacente, la prueba de trabajo ha demostrado ser uno de los métodos más seguros y confiables en redes blockchain. En este sentido, el algoritmo de consenso de prueba de trabajo diseñado por Satoshi Nakamoto es considerado por muchos como una de las soluciones más sofisticadas a la tolerancia a fallos bizantinos.

en conclusión

El problema de los generales bizantinos es un dilema interesante que finalmente dio lugar a los sistemas bizantinos tolerantes a fallas, que se están utilizando ampliamente en una variedad de escenarios. Además de la industria blockchain, algunos casos de uso de los sistemas bizantinos de tolerancia a fallas también incluyen las industrias de la aviación, aeroespacial y de energía nuclear.

En el campo de la moneda digital, tener una comunicación de red eficiente y un buen mecanismo de consenso son cruciales para cualquier ecosistema blockchain. Proteger estos sistemas requiere esfuerzos continuos y existen limitaciones (como la escalabilidad) que los algoritmos de consenso existentes no han podido superar. No obstante, la prueba de trabajo y la prueba de participación son métodos efectivos para los sistemas bizantinos tolerantes a fallas, y sus aplicaciones potenciales inspirarán más innovación.