El problema de los generales bizantinos

La tecnología blockchain, también conocida como “contabilidad distribuida” (o con sus siglas inglesas DLT) o en castellano “cadenas de bloques”, es un protocolo de operaciones de intercambio entre pares que se producen, gestionan y comprueban de forma descentralizada, automatizada, compartida y segura. Pero en la base para que la tecnología blockchain sea fiable está el consenso.

¿Qué es eso del consenso? Pues que todos los integrantes de una red están de acuerdo en que una transacción X ha ocurrido entre dos miembros de la red en un momento temporal determinado. Simplemente. Para ponerse de acuerdo, evitando engaños y minimizando errores, es cuando se pone en práctica la solución al problema de los generales bizantinos.

De Fercufer – Trabajo propio, CC BY-SA 4.0

El problema de los generales bizantinos es un viejo juego de lógica: en un asedio hay un número indeterminado de generales que debe coordinarse para la conquista. Sólo uno cursa la orden (que es binaria, atacar o retirarse), el comandante, el resto son tenientes. Puede haber uno o más traidores (comandante incluido), con el objetivo de que no se cumpla la orden.

Todos a una, pero vigilándose

Así, y simplificando mucho, cada teniente (miembro de la red) recibe una orden (transacción) y emite la misma a los demás. La orden contradictoria del traidor quedaría en minoría, incluso si es el comandante (el que ordena la transacción), y se dará por verdadera la orden mayoritaria. Los traidores maliciosos son así neutralizados.

Existen ciertas condiciones que las blockchain reales crean para hacer más resistente el consenso obtenido a través de este sistema de prueba de trabajo (POW en inglés), que es como se le suele llamar:

  • Todos los generales se comunican con todos los demás.
  • Todo general sabe quién le envía la orden.
  • Ante una ausencia de mensaje hay una orden por defecto.
  • Las órdenes están escritas y firmadas.
  • Los errores aleatorios se controlan mediante códigos de detección de errores.
  • El sellado temporal confiable evita la duplicación de órdenes.

La resolución de este dilema, alcanzada en 1982, es una de las bases fundamentales del funcionamiento de las cadenas de bloques, y el elemento que hace que sean una forma fiable de hacer transacciones entre nodos no necesariamente fiables: todos los nodos participan y registran todas las transacciones. Los cimientos del futuro están planteados.