¿Qué es una Falla Bizantina?

En informática, se determina falla bizantina a la caída de un sistema debido a la descoordinación entre los participantes de una red distribuida. El concepto nació a partir de una alegoría llamada problema de los generales bizantinos de 1982. En resumen, se describe una situación donde distintos generales se deben poner de acuerdo para atacar o retirarse. 

contenido 29

Una falla de consenso podría llevar a la descoordinación entre las tropas y, consecuentemente, a la pérdida de la batalla. Desde ese entonces, se desarrollaron sistemas distribuidos tolerantes a la falla bizantina, usados para construir una blockchain funcional. Veamos en detalle qué son las fallas bizantinas y cómo se pueden mitigar para crear redes seguras. 

¿Cuál es el problema de los generales bizantinos? Un cuentito corto

El problema de los generales bizantinos fue introducido por primera vez en 1982. La historia cuenta que distintas divisiones de la armada Bizantina se encontraban en las afueras de una ciudad enemiga. Cada una estaba comandada por un general distinto. Entre todos, debían decidir su próximo movimiento, atacar o retirarse. Aunque idealmente deben tomar la decisión más razonable, lo importante es que todos hagan lo mismo. Un ataque llevado a cabo por la mitad de las tropas, tenía pocas chances de ser exitoso. Para que todos supieran que hacer, los generales se comunicaban a través de cartas entregadas por un soldado. 

Por desgracia, puede haber generales traidores que quieren ver caer el imperio bizantino y envíen cartas engañosas o, que se pierdan. Esto trae algunas complicaciones.

En un mundo ideal, todos los generales se mandan mensajes con su voto y se hace lo que decida la mayoría. Pero imaginemos un escenario donde un general traidor ve que la mitad de sus compañeros se quieren retirar y la otra mitad atacar. Como él es el que desempata, podría mandarles distintos mensajes a cada uno para convencer a algunos de retirarse y a otros de atacar. Eso sería una falla bizantina en la red conformada por los generales. 

Genial, pero ¿qué tiene que ver esto con crypto?

La blockchain no tiene una autoridad centralizada que tome decisiones en nombre de la red. Por esa razón, el poder está distribuido entre todos los participantes y se podría dar una falla bizantina. En este caso, los generales serían los nodos que verifican la validez de las transacciones y los bloques. Podría pasar que uno o más nodos quieran proponer una transacción falsa. Para que esta no sea verificada e incluida en la blockchain, la red debe tener un una forma de luchar contra esto. Acá es donde nacen los sistemas tolerantes a la falla bizantina, o BFTs por sus siglas en inglés. 

¿Qué es un sistema tolerante a fallas bizantinas (BFTs)?

Como lo dice su nombre, un BFT es un sistema que está diseñado para funcionar en situaciones adversas, como cuando parte de sus participantes actúan de manera deshonesta. Encontrar una solución a las fallas bizantinas es una tarea compleja y todavía en desarrollo. Veamos los pasos básicos que siguen los sistemas tolerantes a fallas bizantinas en el contexto de una blockchain.

  • Se empieza en un estado neutro  

Si se está evaluando la validez de una transacción, el estado inicial debe ser neutro. Se suele decir que la transacción está “no confirmada”. Esto ayuda a que, en el caso de que algún nodo falle y no emita ningún voto, no beneficia a ningún lado. 

  • Medio de comunicación 

Para que los nodos puedan hablar entre sí, deben tener un medio de comunicación lo más seguro posible. En la blockchain, cada nodo está conectado con algunos nodos vecinos, y estos con otros. Entonces, cuando se crea una transacción, esta se va propagando rápidamente a toda la red saltando de nodo en nodo.

  • Los nodos toman una decisión 

Cada vez que un nodo recibe una transacción nueva, debe compararla con las reglas de la red y decidir si es válida. Este proceso lo hacen cada participantes de forma independiente. Este es un aspecto clave de la blockchain, ya que trae seguridad y descentralización a la red, pero también limita la escalabilidad. 

  • Se llega a un consenso

Una vez que todos los nodos se pronunciaron a favor o en contra de la transacción, se sigue a la mayoría y se llega al consenso. 

¿Cómo hace Bitcoin para evitar fallas bizantinas?

La blockchain de Bitcoin sigue el esquema anterior pero le agrega un incentivo extra a los nodos para comportarse de manera honesta. Esto lo consigue gracias a su famoso algoritmo de consenso llamado Proof of Work (PoW) o Prueba de Trabajo. Vamos a describir, paso a paso, cómo hace PoW para lograr consenso en una blockchain descentralizada.

  1. Los usuarios realizar transacciones

Cuando los usuarios empiezan a hacer transacciones, la red debe determinar si estas son válidas y si se agregan de manera inmutable a la blockchain. Al irse propagando por los distintos nodos, cada uno va a determinar si conservarlas. La decisión depende de si las reglas de la red se están cumpliendo o no.

  1. Los mineros crean bloques

Tomando las transacciones validadas por los nodos, los mineros las van a agrupar y formar bloques. Sin embargo, antes de poder presentar un bloque a la red, los mineros deben resolver un problema criptográfico. Este trabajo lo hacen sus computadoras. Mientras más potente sea el hardware, más rápido podrá resolverlo. El primero que presente una solución para el problema criptográfico, se gana el derecho de agregar su bloque a la blockchain.

  1. El bloque ganador el validado por el resto de los mineros   

El ganador presenta su bloque a la red y todos controlan que sea válido. De ser así, los nodos actualizan su copia de la blockchain para reflejar la adición del bloque nuevo. Dentro de este, el minero ganador va a agregar una transacción donde se emiten nuevos BTC y son enviados a su wallet. Si su bloque es rechazado por la red, entonces no recibe esta recompensa. 

Una vez completados los 3 pasos, el ciclo vuelve a empezar para crear el próximo bloque. El hecho de que el minero ganador solo reciba la recompensa en BTC luego de que su bloque sea aprobado, es el incentivo para comportarse de manera honesta. De lo contrario, habría gastado sus recursos para resolver el problema criptográfico en vano. 

ethereum
Ethereum (ETH) USD 3,163.16
bitcoin
Bitcoin (BTC) USD 64,667.33
solana
Solana (SOL) USD 146.12
bnb
BNB (BNB) USD 613.47
tether
Tether (USDT) USD 1.00