Desde los inicios de Bitcoin en 2008, como sistema de dinero electrónico peer-to-peer, se crearon muchas otras criptomonedas, cada una con un mecanismo particular. Pero algo que casi todas las criptomonedas tienen en común es la cadena de bloques, como elemento central de su arquitectura.
Con pocas excepciones, las cadenas de bloques están diseñadas intencionalmente para ser descentralizadas, funcionando como un libro de contabilidad digital mantenido por una red distribuida de nodos informáticos. Por esta razón, la tecnología blockchain permitió la creación de sistemas económicos sin confianza, donde se podían ejecutar transacciones financieras transparentes y confiables sin necesidad 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 de una red de criptomonedas deben ponerse de acuerdo periódicamente sobre el estado actual de la cadena de bloques, y eso es lo que llamamos logro de consenso. Sin embargo, llegar a un consenso sobre redes distribuidas, de forma segura y eficiente, está lejos de ser 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 origen al concepto de tolerancia bizantina a los fallos.
¿Cuál es el problema de los generales bizantinos?
En pocas palabras, el problema de los generales bizantinos fue concebido en 1982 como un dilema lógico que ilustra cómo un grupo de generales bizantinos puede tener problemas de comunicación al intentar ponerse de acuerdo sobre su próximo movimiento.
El dilema supone que cada general tiene su propio ejército y que cada grupo está situado en diferentes lugares alrededor de la ciudad que pretenden atacar. Los generales deben ponerse de acuerdo sobre atacar o retirarse. No importa si atacan o se retiran, siempre y cuando todos los generales lleguen a un consenso, es decir, acuerden una decisión común para ejecutarla de forma coordinada.
Por lo tanto, podemos considerar los siguientes requisitos:
Cada general tiene que decidir: atacar o retirarse (sí o no);
Una vez tomada la decisión, no se puede cambiar;
Todos los generales deben ponerse de acuerdo sobre la misma decisión y ejecutarla de forma sincronizada.
Los problemas de comunicación antes mencionados están relacionados con el hecho de que un general sólo puede comunicarse con otro a través de mensajes, que son reenviados por un mensajero. En consecuencia, el desafío central del problema de los generales bizantinos es que los mensajes pueden retrasarse, destruirse o perderse de alguna manera.
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 lleva a un fracaso total.
Si aplicamos el dilema al contexto de las cadenas de bloques, cada general representa un nodo de la red, y los nodos deben llegar a un consenso sobre el estado actual del sistema. Dicho de otra manera, la mayoría de los participantes dentro de una red distribuida tienen que acordar y ejecutar la misma acción para evitar un fracaso total.
Por lo tanto, la única forma de lograr consenso en este tipo de sistemas distribuidos es tener al menos ⅔ o más nodos de red confiables y honestos. Esto significa que si la mayoría de la red decide actuar maliciosamente, el sistema es susceptible a fallas y ataques (como el ataque del 51%).
Tolerancia a fallas bizantinas (BFT)
En pocas palabras, la tolerancia a fallas bizantinas (BFT) es propiedad de un sistema que es capaz de resistir la clase 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 y esto nos lleva a los llamados algoritmos de consenso.
Algoritmos de consenso de blockchain
Podemos definir un algoritmo de consenso como el mecanismo a través del cual una red blockchain alcanza un consenso. Las implementaciones más comunes son Prueba de trabajo (PoW) y Prueba de participación (PoS). Pero tomemos el caso de Bitcoin como ejemplo.
Si bien el protocolo Bitcoin prescribe las reglas principales del sistema, el algoritmo de consenso PoW es lo que define cómo se seguirán 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 más antiguo que las criptomonedas, Satoshi Nakamoto desarrolló una versión modificada como un algoritmo que permitió la creación de Bitcoin como un sistema BFT.
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 redes blockchain. En ese sentido, el algoritmo de consenso Prueba de Trabajo, diseñado por Satoshi Nakamoto, es considerado por muchos como una de las soluciones más geniales a las fallas bizantinas.
Pensamientos finales
El problema de los generales bizantinos es un dilema intrigante que finalmente dio lugar a los sistemas BFT, que se están aplicando ampliamente en diversos escenarios. Más allá de la industria blockchain, algunos casos de uso de los sistemas BFT incluyen las industrias de la aviación, el espacio y la energía nuclear.
Dentro del contexto de las criptomonedas, tener una comunicación de red eficiente junto con un buen mecanismo de consenso es vital 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 las aplicaciones potenciales ciertamente están inspirando una innovación generalizada.

