Desde la creación de Bitcoin en 2008, como un sistema de dinero electrónico de igual a igual (peer-to-peer), se han creado muchas otras criptomonedas, cada una con su propio mecanismo. Pero el único elemento con el que casi todas las criptomonedas están relacionadas es la cadena de bloques como el elemento principal de su arquitectura.
Con algunas excepciones, la cadena de bloques está intencionalmente diseñada para la descentralización, funcionando como un registro digital mantenido por una red distribuida de nodos informáticos. Por esta razón, la tecnología blockchain ha permitido la creación de sistemas económicos fiables, en los que transacciones financieras transparentes y seguras pueden realizarse sin necesidad de intermediarios. La criptomoneda se considera 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 de computación distribuidos, los participantes en la red de criptomonedas necesitan coordinar regularmente el estado actual de la cadena de bloques, y esto es lo que llamamos alcanzar consenso. Sin embargo, lograr consenso en una red distribuida de manera segura y confiable no es una tarea sencilla.
Dado que una red distribuida de nodos informáticos acuerda la solución a la pregunta de qué pasaría si algunos de los nodos, teóricamente, fallaran o actuaran de manera deshonesta? Esta es una cuestión fundamental sobre el problema de los llamados generales bizantinos, que dio origen al concepto de tolerancia bizantina.
¿Qué es el Problema de los Generales Bizantinos?
En pocas palabras, el Problema de los Generales Bizantinos fue concebido en 1982 como una dilema lógica que ilustra cómo un grupo de Generales Bizantinos puede enfrentar problemas de comunicación al intentar acordar el siguiente paso.
La dilema sugiere que cada general tiene su propio ejército, y cada grupo se encuentra en diferentes lugares alrededor de la ciudad, con la intención de atacarla. Los generales deben acordar atacar o retirarse. No importa si atacan o se retiran, siempre que todos los generales lleguen a un consenso, es decir, tomen una decisión común para llevarla a cabo de manera coordinada.
Por lo tanto, podemos considerar los siguientes objetivos:
Cada general debe decidir: atacar o retirarse (sí o no);
Una vez tomada la decisión, no se podrá cambiar;
Todos los generales deben estar de acuerdo y tomar la misma decisión, y ejecutarla de manera sincronizada.
Los problemas de comunicación mencionados anteriormente están relacionados con el hecho de que un general puede comunicarse con otros solo a través de mensajes que se envían por mensajeros. Por lo tanto, el principal Problema de los Generales Bizantinos es que los mensajes pueden retrasarse, perderse o ser destruidos de alguna manera.
Además, incluso si un mensaje se entrega con éxito, uno o varios generales pueden actuar (por alguna razón) de manera malintencionada y enviar un mensaje fraudulento para confundir a los otros generales, lo que llevará a un fallo general.
Si aplicamos este dilema al contexto de la cadena de bloques, cada general representa un nodo en la red, y estos 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 fallo total.
Por lo tanto, la única forma de alcanzar un consenso en estos tipos de sistemas distribuidos es tener al menos ⅔ o más de nodos de red confiables y honestos. Esto significa que si una gran parte de la red decide actuar de manera malintencionada, el sistema es vulnerable a errores y varios ataques (por ejemplo, ataque del 51%).
Tolerancia a Fallos Bizantinos (BFT)
En pocas palabras, la Tolerancia a Fallos Bizantinos (BFT) es una propiedad de un sistema capaz de resistir una clase de fallos que surgen del Problema de los Generales Bizantinos. Esto significa que un sistema BFT puede seguir funcionando incluso si algunos de los nodos no funcionan o actúan de manera malintencionada.
Existen más de una posible solución al problema de los Generales Bizantinos y, por lo tanto, varios métodos para construir un sistema BFT. De manera similar, hay diferentes enfoques para la cadena de bloques para lograr tolerancia a fallos bizantinos, y esto nos lleva a los llamados algoritmos de consenso.
Algoritmo de Consenso de Blockchain
Podemos definir un algoritmo de consenso como el mecanismo mediante el cual una red blockchain alcanza consenso. Los más comunes son Prueba de Trabajo (PoW) y Prueba de Participación (PoS). Pero consideraremos a Bitcoin como un ejemplo.
Mientras que el protocolo de Bitcoin establece las reglas básicas del sistema, el algoritmo de consenso PoW define cómo se cumplirán estas reglas para alcanzar consenso (por ejemplo, durante la verificación y confirmación de transacciones).
Aunque el concepto de Prueba de Trabajo es anterior a la propia criptomoneda, Satoshi Nakamoto desarrolló una versión modificada como un algoritmo que permitió crear Bitcoin como un sistema BFT.
Cabe mencionar que el algoritmo PoW no es 100% tolerante a fallos bizantinos, pero debido al costoso proceso de minería y a los métodos criptográficos fundamentales, PoW se ha establecido como uno de los más seguros y confiables para blockchain. En este sentido, el algoritmo de consenso de Prueba de Trabajo desarrollado por Satoshi Nakamoto es considerado por muchos como una de las soluciones más geniales a los fallos bizantinos.
Conclusión
El Problema de los Generales Bizantinos es una intrigante dilema que, en última instancia, dio origen a sistemas BPT que se aplican ampliamente en varios sistemas. Además de la industria blockchain, varios usos de sistemas BFT incluyen la aviación, la industria espacial y la energía nuclear.
En el contexto de las criptomonedas, la comunicación de red efectiva junto con un buen mecanismo de consenso es vital para cualquier ecosistema de blockchain. Asegurar la seguridad de estos sistemas es un esfuerzo constante, y los algoritmos de consenso existentes aún deben superar varios obstáculos (por ejemplo, escalabilidad). Sin embargo, PoW y PoS son enfoques muy interesantes para BFT y sin duda inspiran aplicaciones potencialmente interesadas en la implementación de tecnologías innovadoras ampliamente.

