Desde la creación de Bitcoin en 2008, como sistema de dinero electrónico entre pares, se crearon muchas otras criptodivisas, cada una con un mecanismo particular. Pero una cosa que casi todas las criptodivisas tienen en común es el blockchain, como elemento central de su arquitectura.
Con pocas excepciones, los blockchains están diseñados intencionadamente para ser descentralizados, funcionando como un libro de contabilidad digital que es 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, en los que se pueden ejecutar transacciones financieras transparentes y fiables 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 necesitan ponerse de acuerdo periódicamente sobre el estado actual de la blockchain, y eso es lo que llamamos logro de consenso. Sin embargo, alcanzar el consenso en las redes distribuidas, de forma segura y eficiente, dista mucho de ser una tarea fácil.
Entonces, ¿cómo puede una red distribuida de nodos informáticos ponerse de acuerdo sobre una decisión, si es probable que algunos de los nodos fallen o actúen de forma deshonesta? Esta es la cuestión fundamental del llamado problema de los generales bizantinos, que dio origen al concepto de tolerancia a fallos bizantinos.
¿Qué 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 tienen que ponerse de acuerdo para atacar o retirarse. No importa si atacan o se retiran, siempre que todos los generales lleguen a un consenso, es decir se pongan de acuerdo en una decisión común para ejecutarla de forma coordinada.
Por 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 tienen que ponerse de acuerdo en 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 remitidos 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 elegir (por cualquier razón) actuar maliciosamente y enviar un mensaje fraudulento para confundir a los otros 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 necesitan 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 estar de acuerdo y ejecutar la misma acción para evitar el fracaso total.
Por lo tanto, la única manera de lograr el consenso en este tipo de sistemas distribuidos es teniendo al menos ⅔ o más nodos de red fiables y honestos. Esto significa que si la mayoría de la red decide actuar maliciosamente, el sistema es susceptible de sufrir fallos y ataques (como el ataque del 51%).
Tolerancia a fallos bizantinos (BFT)
En pocas palabras, la tolerancia a fallos bizantinos (BFT) es la propiedad de un sistema que es capaz de resistir la clase de fallos derivados del Problema de los Generales Bizantinos. Esto significa que un sistema BFT es capaz de continuar operando incluso si algunos de los nodos fallan o actúan maliciosamente.
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. Del mismo modo, existen diferentes enfoques para que una blockchain logre la tolerancia a fallos bizantinos 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 de blockchain alcanza el consenso. Las implementaciones más comunes son Proof of Work (PoW) y Proof of Stake (PoS). Pero tomemos el caso de Bitcoin como ejemplo.
Mientras que el protocolo de Bitcoin prescribe las reglas principales del sistema, el algoritmo de consenso PoW es el que define cómo se seguirán estas reglas para alcanzar el consenso (por ejemplo, durante la verificación y validación de las 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 algoritmo que permitió la creación de Bitcoin como sistema BFT.
Tenga en cuenta que el algoritmo PoW no es 100% tolerante a los fallos bizantinos, pero debido al proceso de minería de alto coste y a las técnicas criptográficas subyacentes, PoW ha demostrado ser una de las implementaciones más seguras y fiables para las redes blockchain. En ese sentido, el algoritmo de consenso Proof of Work, diseñado por Satoshi Nakamoto, es considerado por muchos como una de las soluciones más geniales a los fallos bizantinos.
Pensamientos finales
El Problema de los Generales Bizantinos es un intrigante dilema que acabó dando lugar a los sistemas BFT, que se están aplicando ampliamente en diversos escenarios. Más allá de la industria del blockchain, algunos casos de uso de los sistemas BFT incluyen las industrias de la aviación, el espacio y la energía nuclear.
En el contexto de las criptomonedas, tener una comunicación de red eficiente junto con un buen mecanismo de consenso es vital para cualquier ecosistema de blockchain. Asegurar estos sistemas es un esfuerzo continuo, y los algoritmos de consenso existentes todavía tienen que superar algunas limitaciones (como la escalabilidad). No obstante, PoW y PoS son enfoques muy interesantes como sistemas BFT, y las aplicaciones potenciales están ciertamente inspirando la innovación generalizada.