Desde el inicio de Bitcoin en 2008, como un sistema de efectivo electrónico de igual a igual, se crearon muchas otras criptomonedas; cada una con un mecanismo particular. Pero una cosa que casi todas las criptomonedas tienen en común es la cadena de bloques, como elemento central de su arquitectura. Al igual que la mayoría de los sistemas informáticos distribuidos, los participantes de una red de criptomonedas deben ponerse de acuerdo regularmente 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 ponerse de acuerdo en una decisión, si es probable que algunos de los nodos fallen o actúen deshonestamente? Ésta es la cuestión fundamental del llamado problema de los generales bizantinos, que dio origen al concepto de tolerancia a las fallas bizantinas.
Tolerancia a Fallas Bizantinas. El Problema de los Generales Bizantinos
En pocas palabras; el problema de los generales bizantinos se concibió 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 asume que cada general tiene su propio ejército y que cada grupo está situado en diferentes lugares de la ciudad que pretenden atacar. Los generales deben ponerse de acuerdo sobre atacar o retirarse. No importa si atacan o se retiran, siempre que todos los generales lleguen a un consenso, es decir, acuerden una decisión común para ejecutarla coordinadamente.
Por lo tanto, podemos considerar los siguientes requisitos:
- Cada general tiene que decidir: atacar o retirarse (sí o no);
- Una vez que se toma la decisión, no se puede cambiar;
- Todos los generales deben 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 solo 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 el motivo que sea) para 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 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 estar de acuerdo y ejecutar la misma acción para evitar un fallo total.
Por lo tanto, la única forma de lograr consenso en estos tipos 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 de manera maliciosa; 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 bizantina (BFT) es la 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 posible solución al problema de los generales bizantinos y, por lo tanto, múltiples formas de construir un sistema BFT. Asimismo, existen diferentes enfoques para que una cadena de bloques logre 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 llega a 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 de 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 del mismo 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 Proof of Work, 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 varios escenarios. Más allá de la industria de la cadena de bloques, 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 la criptomoneda, 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 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.