Tolerancia a faltas bizantinas explicada
Inicio
Artículos
Tolerancia a faltas bizantinas explicada

Tolerancia a faltas bizantinas explicada

Avanzado
Publicación: Dec 6, 2018Actualización: Aug 17, 2023
5m
Desde la creación de Bitcoin en 2008, como un sistema de efectivo electrónico peer-to-peer, se crearon muchas otras criptomonedas, cada una con un mecanismo particular. Pero una cosa que casi todas las criptomonedas tienen en común es blockchain como el elemento central de su arquitectura.

Con pocas excepciones, las blockchains están diseñados intencionalmente para ser descentralizados, funcionando como un libro de contabilidad digital que es mantenido por una red distribuida de nodos de computadora. Por esta razón, la tecnología de blockchain permitió la creación de sistemas económicos sin confianza, donde las transacciones financieras transparentes y confiables podrían ejecutarse sin la necesidad de intermediarios. Se están adoptando las criptomonedas 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 criptomoneda deben acordar regularmente el estado actual de la blockchain, y eso es lo que llamamos logro de consenso. Sin embargo, alcanzar un consenso sobre redes distribuidas, de una manera segura y confiable, está lejos de ser una tarea fácil.

Entonces, ¿cómo puede una red distribuida de nodos de computadora acordar una decisión, si es probable que algunos de los nodos fallen o actúen de manera deshonesta? Esta es la pregunta fundamental del llamado problema de los generales bizantinos, que dio origen al concepto de tolerancia a fallas bizantinas.


¿Que 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 cuando intentan 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 intentan atacar. Los generales deben estar de acuerdo en 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 en coordinación.

Por lo tanto, podemos considerar los siguientes objetivos:

  • Cada general tiene que decidir: atacar o retirarse (sí o no);

  • Después de que se toma la decisión, no se puede cambiar;

  • Todos los generales deben acordar 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 solo puede comunicarse con otro a través de mensajes, que son enviados por un correo. 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 motivo) actuar maliciosamente y enviar un mensaje fraudulento para confundir a los otros generales, lo que lleva a un error total.

Si aplicamos el dilema al contexto de blockchains, cada general representa un nodo de red y los nodos deben alcanzar 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 una falla completa.

Por lo tanto, la única forma de lograr un 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 maliciosamente, el sistema es susceptible de fallas y ataques (como el ataque del 51%).


Tolerancia a faltas bizantinas (BFT)

En pocas palabras, la tolerancia a fallas bizantinas (BFT) es la propiedad de un sistema que puede resistir la clase de fallas derivadas del problema del dilema de los generales bizantinos. Esto significa que un sistema BFT puede continuar funcionando 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 lo tanto, múltiples formas de construir un sistema BFT. Del mismo modo, hay varios enfoques diferentes para que una blockchain alcance la tolerancia a faltas 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 de blockchain alcanza un consenso. Las implementaciones más comunes son la Proof of Work (PoW) y la Proof of Stake (PoS). Pero tomemos el caso de Bitcoin como ejemplo.

Si bien el protocolo Bitcoin prescribe las reglas primarias del sistema, el algoritmo de consenso de PoW es lo que define cómo se seguirán estas reglas para alcanzar el consenso (por ejemplo, durante la verificación y validación de transacciones).

Si bien el concepto de Proof of Work 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.

Ten en cuenta que el algoritmo de PoW no es 100% tolerante a las faltas bizantinas, pero debido al costo del 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 de blockchain. En ese sentido, el algoritmo de consenso de Proof of Work, diseñado por Satoshi Nakamoto, es considerado por muchos como una de las soluciones más geniales para las faltas bizantinas.


Conclusión

El problema de los generales bizantinos es un dilema intrigante que eventualmente dio origen a los sistemas BFT, que se están aplicando ampliamente en varios escenarios. Más allá de la industria de la 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 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 los sistemas BFT, y las aplicaciones potenciales están inspirando una innovación generalizada.