Desde la creación de Bitcoin en 2008 como sistema de pago electrónico peer-to-peer, se han creado muchas otras criptomonedas, cada una con un mecanismo operativo particular. Pero algo que casi todas las criptomonedas tienen en común es la cadena de bloques, un elemento central de su arquitectura.

Con pocas excepciones, las cadenas de bloques están diseñadas intencionalmente para ser descentralizadas y operar como un libro de contabilidad digital administrado por una red distribuida de nodos informáticos. En este contexto, la tecnología blockchain permitió la creación de sistemas económicos libres de la necesidad de confianza, en los que se podían ejecutar transacciones financieras transparentes y confiables sin el uso de intermediarios. Las criptomonedas se están adoptando como una alternativa viable a los sistemas bancarios y de pago tradicionales, que dependen en gran medida de la confianza.

Al igual que la mayoría de los sistemas informáticos distribuidos, los participantes en una red de criptomonedas deben ponerse de acuerdo con mucha regularidad sobre el estado de la cadena de bloques, lo que se denomina llegar a un consenso. Sin embargo, lograr un consenso entre redes distribuidas, de manera segura y confiable, no es una tarea fácil.

Entonces, ¿cómo puede una red distribuida de nodos informáticos llegar a un acuerdo sobre una decisión si es probable que algunos de los nodos fallen o actúen de manera deshonesta? Ésta es la cuestión fundamental del llamado problema de los generales bizantinos, que dio lugar al concepto de tolerancia bizantina a los fallos.


¿Qué les pasa a los generales bizantinos?

En pocas palabras, el Problema de los Generales Bizantinos fue concebido en 1982 como un dilema lógico que describe cómo un grupo de generales bizantinos puede tener problemas de comunicación al intentar ponerse de acuerdo sobre su próximo movimiento estratégico.

El dilema supone que cada general tiene su propio ejército y que cada grupo armado está ubicado en diferentes lugares alrededor de una ciudad que desean asediar. Los generales deben aceptar atacar o retirarse. Ya sea que ataquen o se retiren, todos los generales deben llegar a un consenso, es decir, acordar una decisión común para poder ejecutarla de manera coordinada.

Por tanto, podemos plantearnos los siguientes objetivos:

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

  • Una vez tomada la decisión, no se puede cambiar.

  • Todos los generales deben acordar la misma decisión y ejecutarla en sincronización.

Los problemas de comunicación antes mencionados están ligados a que un general sólo puede comunicarse con otro a través de mensajes que son transmitidos por un emisario. Por lo tanto, el desafío central del problema de los generales bizantinos es este: los mensajes pueden retrasarse, destruirse o perderse.

Además, incluso si un mensaje se entrega con éxito, uno o más generales pueden optar (por cualquier motivo) por actuar maliciosamente y enviar un mensaje fraudulento para confundir a los demás generales, lo que resultará en un fracaso total.

Si aplicamos el dilema al contexto de las blockchains, 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 la misma acción para evitar un fracaso total.

Por tanto, la única forma de lograr consenso en este tipo de sistemas distribuidos es tener al menos ⅔ de nodos de red confiables y honestos. Esto significa que si la mayoría de la red decide actuar maliciosamente, el sistema es propenso a fallas y ataques (como el ataque del 51%).


Tolerancia a fallas bizantinas (BFT)

En pocas palabras, la Tolerancia a Fallas Bizantinas (BFT) caracteriza un sistema capaz de soportar la variedad de fallas derivadas del Problema de los Generales Bizantinos. Esto significa que un sistema BFT puede seguir funcionando incluso si algunos de los nodos fallan o actúan de forma maliciosa.

Hay más de una solución posible al problema de los generales bizantinos y, por tanto, múltiples formas de construir un sistema BFT. Asimismo, existen diferentes enfoques para que una blockchain alcance la tolerancia a fallas bizantinas, lo que nos lleva a algoritmos de consenso.


Algoritmos de consenso de blockchain

Podemos definir un algoritmo de consenso como un mecanismo mediante el cual una red blockchain logra un consenso. Las implementaciones más comunes son prueba de trabajo y prueba de participación. Pero tomemos como ejemplo el caso de Bitcoin.

Si bien el protocolo Bitcoin prescribe las reglas principales del sistema, es el algoritmo de consenso PoW el que define cómo se seguirán estas reglas para lograr el consenso (por ejemplo, al verificar y validar transacciones).

Aunque el concepto de prueba de trabajo es más antiguo que las criptomonedas, Satoshi Nakamoto desarrolló una versión modificada del mismo como el algoritmo y sistema BFT que permitió la creación de Bitcoin.

Tenga en cuenta que el algoritmo PoW no es 100% tolerante a las fallas bizantinas, pero debido al costoso proceso de minería y las técnicas criptográficas subyacentes, PoW ha demostrado ser una de las implementaciones más seguras y confiables para las redes blockchain. En este sentido, el algoritmo de consenso Prueba de Trabajo, diseñado por Satoshi Nakamoto, es considerado por muchos como una de las soluciones más relevantes a los errores bizantinos.


Conclusión

El problema de los generales bizantinos es un dilema intrigante que finalmente dio lugar a los sistemas BFT, que se utilizan ampliamente en diversos escenarios. Más allá del sector blockchain, algunos casos de uso de los sistemas BFT incluyen los sectores de la aviación, el espacio y la energía nuclear.

En el contexto de las criptomonedas, una comunicación de red eficaz junto con un buen mecanismo de consenso son esenciales para cualquier ecosistema blockchain. Proteger estos sistemas es un esfuerzo continuo y los algoritmos de consenso existentes aún deben superar algunas limitaciones (como la escalabilidad). No obstante, PoW y PoS son enfoques muy interesantes como sistemas BFT, y sus aplicaciones potenciales ciertamente requieren una innovación generalizada.