HotStuff: de cero a estado del arte

Artículo 7 de 47

15%

completado al llegar aquí

Sistemas distribuidosNota de investigación15 min de lectura

El Teorema FLP: Por qué una sola computadora lenta puede romper el acuerdo

Por qué ningún consenso determinista asíncrono garantiza terminar con una sola falla por crash, qué es la bivalencia y cómo la evaden los protocolos BFT.

Ruta HotStuff: 0/47

En 1 Minuto

Comprende el Teorema FLP (Fischer, Lynch, Paterson 1985): por qué en una red puramente asíncrona ningún protocolo de consenso determinista puede garantizar a la vez acuerdo, validez y terminación si incluso un solo proceso puede detenerse.

Prerrequisitos
  • Consenso BFT desde cero (bft-consensus-from-zero)
  • Intersección de quórums y sincronía parcial (partial-synchrony-quorums-bft)
Cuándo Detenerte

Detente cuando puedas explicar el concepto de 'configuración bivalente' y por qué un planificador de mensajes puede mantener al sistema indeciso indefinidamente.

Glosario Rápido de Notación

Glosario de Notación Matemática y Criptográfica

n— Término (n)

Definición conceptual para n dentro del contexto de consenso BFT.

Haz clic en un símbolo para desplegar su definición formal y su aplicación en el protocolo.
Mapa conceptual

Ruta mental de la Imposibilidad FLP

  1. Modelo Asíncrono Puro

    Retardos ilimitados

  2. Estado Bivalente

    Ambos resultados posibles

  3. El Planificador Adversario

    Retardo estratégico

  4. Salida del Dilema

    Sincronía parcial / Aleatoriedad

Sigue la lógica detrás del teorema más famoso de los sistemas distribuidos.
Explicación Didáctica

Decodificador Didáctico de Conceptos BFT

Teorema FLP (Fischer, Lynch, Paterson 1985)

En palabras simples: Dos amigos intentan coordinar un almuerzo enviándose cartas por correo postal sin saber si el cartero se retrasó o si el amigo dejó de escribir. Sin asumir algún límite de tiempo, ninguno puede decidir con certeza si esperar otra carta o actuar ya.

Detalle técnico: Ningún algoritmo de consenso determinista puede garantizar acuerdo, validez y terminación en un sistema asíncrono de paso de mensajes si un solo proceso puede fallar por parada (crash).

Estado Bivalente vs Univalente

En palabras simples: Bivalente es un partido 0-0 en el minuto 89: cualquiera de los dos equipos puede ganar. Univalente es cuando cae un gol en el minuto 93 y ya no queda tiempo: el resultado quedó sellado.

Detalle técnico: Una configuración es bivalente si desde ella son alcanzables ejecuciones que deciden 0 y ejecuciones que deciden 1; es univalente si todas las ejecuciones alcanzables deciden el mismo valor.

Traducción de lenguaje formal a analogías intuitivas del mundo real.

En 1985, Michael Fischer, Nancy Lynch y Michael Paterson publicaron en el Journal of the ACM un artículo breve que fijó un límite duro para toda la disciplina: "Impossibility of Distributed Consensus with One Faulty Process".

Tras estudiar quórums en Consenso BFT desde cero, es natural preguntarse: si la aritmética de q=2f+1q = 2f + 1 sobre n=3f+1n = 3f + 1 es tan sólida, ¿podemos construir un protocolo que jamás se detenga, sin importar lo mala que sea la red? La respuesta de FLP es que no, al menos no con un algoritmo determinista y sin ninguna hipótesis temporal. Y lo sorprendente es que el obstáculo no requiere traidores bizantinos: basta un proceso que pueda detenerse en silencio.

El modelo exacto que asume FLP

La fuerza del teorema está en lo débil que es el adversario. FLP no supone mensajes falsificados, firmas rotas ni nodos maliciosos. Supone un sistema de nn procesos que se comunican por mensajes, con estas reglas:

  1. Asincronía completa: no hay relojes sincronizados, no hay cota conocida Δ\Delta para la entrega de mensajes y no hay cota para la velocidad relativa de los procesos.
  2. Canales fiables: ningún mensaje se pierde ni se duplica; todo mensaje enviado a un proceso que sigue vivo termina entregándose, pero en un orden y un momento arbitrarios.
  3. Determinismo: cada proceso es una máquina de estados; dado su estado y el mensaje recibido, su siguiente paso está completamente determinado.
  4. Una falla por parada: a lo sumo un proceso puede detenerse (crash) y, desde fuera, una parada es indistinguible de un proceso extremadamente lento.

Cada proceso tiene un bit de entrada en {0,1}\{0,1\} y un registro de salida que se escribe una sola vez. El protocolo es parcialmente correcto si ningún par de procesos decide valores distintos y si ambas decisiones, 00 y 11, son posibles para alguna combinación de entradas. Esa última condición descarta el truco trivial de decidir siempre 00.

Comparado con el problema de los generales bizantinos, el contraste es instructivo. Lamport, Shostak y Pease estudiaron un modelo síncrono, con rondas y relojes, y adversarios que mienten; allí demostraron que con mensajes orales no hay solución si un tercio o más de los generales son traidores. FLP invierte los ejes: la falla es la más benigna posible, pero el tiempo deja de estar acotado. Y eso basta para perder la terminación garantizada.

El enunciado: qué se pierde y qué no

El Teorema FLP establece que:

En un sistema distribuido asíncrono, no existe ningún protocolo de consenso determinista que sea parcialmente correcto y que además garantice la terminación de todos los procesos correctos si se permite que un solo proceso (f=1f = 1) falle por parada.

Conviene leerlo con precisión. FLP no dice que el consenso nunca termine en la práctica, ni que todo protocolo viole safety. Dice que, para cualquier protocolo determinista que respete acuerdo y validez, existe al menos una ejecución admisible en la que nadie decide jamás.

Un detalle sutil, y muy útil para leer papers posteriores, es que la ejecución no terminante que construye la prueba ni siquiera necesita que algún proceso falle de verdad. Todos los procesos dan infinitos pasos y todos los mensajes terminan entregándose. La mera posibilidad de una parada es lo que obliga al protocolo a no poder esperar indefinidamente a nadie, y esa obligación es la grieta que explota el planificador.

Figura 1

El laberinto de la bivalencia en FLP

Fuentes:

[1]
El laberinto de la bivalencia en FLP
Cómo leer esta figura

El diagrama muestra configuraciones globales de red. Las configuraciones bivalentes C0 y C1 tienen caminos hacia decisiones de valor 0 o valor 1. Al retrasar estratégicamente el mensaje m que forzaría la decisión hacia univalencia, el adversario fuerza al sistema a transicionar a otro estado bivalente C2, atrapando el consenso en un bucle infinito.

Visual original de TrautsLab. Demostración esquemática de la bivalencia. Un planificador de red asíncrono puede alternar continuamente la entrega de mensajes para mantener al sistema en estados bivalentes sin permitir la transición a un estado univalente.

Configuraciones bivalentes y univalentes

La prueba razona sobre configuraciones: el estado interno de todos los procesos junto con el conjunto de mensajes en vuelo. Un paso consiste en entregar un mensaje mm a un proceso pp (o entregarle "nada"), que entonces cambia de estado y puede enviar nuevos mensajes. Con ese vocabulario se definen dos clases:

  • Configuración bivalente: desde ella son alcanzables ejecuciones que deciden 00 y ejecuciones que deciden 11. El resultado todavía no está escrito.
  • Configuración univalente (00-valente o 11-valente): todas las ejecuciones alcanzables deciden el mismo valor, aunque ningún proceso lo haya escrito aún en su registro de salida.

Esta distinción es la pieza conceptual clave. La decisión "real" del sistema ocurre en el instante en que la configuración pasa de bivalente a univalente, no cuando un proceso escribe su salida. Un protocolo que termina tiene que cruzar esa frontera en algún paso concreto. FLP demuestra que el planificador siempre puede impedir que ese cruce ocurra.

La demostración en tres lemas

La estructura de la prueba es corta y elegante. Vale la pena seguirla con calma porque sus ideas reaparecen en casi todos los argumentos de imposibilidad posteriores.

Lema 1, conmutatividad. Si dos secuencias de pasos afectan a conjuntos disjuntos de procesos, aplicarlas en un orden o en el otro conduce a la misma configuración. Es una observación casi obvia sobre independencia, pero permite intercambiar el orden de eventos dentro de la prueba.

Lema 2, existe una configuración inicial bivalente. Supongamos, por contradicción, que todas las configuraciones iniciales fueran univalentes, y ordenémoslas las configuraciones iniciales de forma que dos vecinas difieran solo en la entrada de un proceso pp. Por validez, hay una configuración inicial 00-valente y otra 11-valente, así que en esa cadena existen dos vecinas, una 00-valente y otra 11-valente, que difieren solo en pp.

Ahora consideremos una ejecución en la que pp no da ningún paso, algo que el protocolo debe tolerar porque pp podría haber caído. Esa ejecución es indistinguible desde ambas configuraciones para todos los demás procesos, de modo que decide el mismo valor en las dos. Contradicción: alguna configuración inicial tiene que ser bivalente.

Lema 3, siempre se puede seguir siendo bivalente. Sea CC bivalente y sea e=(p,m)e = (p, m) un evento aplicable a CC. Si consideramos todas las configuraciones alcanzables desde CC sin aplicar ee, y luego aplicamos ee al final, al menos una de las configuraciones resultantes es bivalente.

La prueba procede por contradicción. Si todas fueran univalentes, habría dos configuraciones vecinas, separadas por un solo evento e′e', con valencias distintas tras aplicar ee. Si e′e' ocurre en un proceso distinto de pp, el Lema 1 hace que ambos órdenes coincidan, lo que es imposible. Si e′e' también ocurre en pp, se considera una ejecución finita en la que pp no da pasos y el resto del sistema decide, algo que el protocolo debe permitir porque pp podría haber caído. Por el Lema 1, la configuración alcanzada por esa ejecución, que ya contiene una decisión, todavía podría conducir tanto a 00 como a 11: sería bivalente, lo que es imposible.

Ese segundo caso es el único lugar donde la prueba usa la falla por parada, y lo usa una sola vez. Es exactamente la razón por la que f=1f = 1 basta.

Teorema

Teorema de Imposibilidad de FLP

Fischer, Lynch, Paterson 1985
Sea P un protocolo de consenso determinista en un modelo de mensajes asíncrono. Si P es parcialmente correcto y tolera al menos una falla de parada, entonces existe alguna ejecución admisible de P en la que ningún proceso decide.
Bosquejo de Demostración: Se demuestra que (1) existe una configuración inicial bivalente C0, y (2) para cualquier configuración bivalente C y cualquier evento e aplicable, existe una secuencia de eventos que termina aplicando e y lleva a otra configuración bivalente. Repitiendo el argumento por turnos entre procesos, se construye una ejecución infinita en la que todo mensaje se entrega y nunca se alcanza la univalencia.

El planificador que nunca deja decidir

Con los lemas, la ejecución infinita se construye por etapas. El planificador mantiene una cola de procesos y, en cada etapa, toma el proceso pp que está al frente y el mensaje más antiguo mm pendiente para él. Por el Lema 3, existe una forma de llegar a otra configuración bivalente cuyo último paso es justamente entregar mm a pp. El planificador ejecuta esa secuencia, mueve a pp al final de la cola y repite.

El resultado es una ejecución en la que cada proceso da infinitos pasos, cada mensaje termina entregándose y, sin embargo, la configuración nunca deja de ser bivalente. Ningún proceso puede decidir sin arriesgarse a contradecir otra ejecución alcanzable.

Desde dentro de un proceso, el dilema es siempre el mismo. Cuando falta una respuesta, no puede distinguir entre "el remitente cayó" y "el mensaje viene muy lento". Si decide sin esa información, puede violar acuerdo; si espera, el planificador puede hacerle esperar para siempre. FLP formaliza que ninguna regla determinista resuelve ese dilema en todos los casos.

Cómo evaden FLP los protocolos BFT reales

Si el consenso determinista es imposible en asincronía, ¿cómo funcionan Tendermint o HotStuff? Relajando exactamente una de las hipótesis del teorema, sin tocar las demás.

  1. Sincronía parcial. Dwork, Lynch y Stockmeyer propusieron un modelo en el que la red puede comportarse de forma asíncrona durante un periodo arbitrario, pero eventualmente existe una cota Δ\Delta sobre la entrega de mensajes a partir de un instante desconocido, GST. En ese modelo el consenso es alcanzable tolerando ff fallas bizantinas con n≥3f+1n \ge 3f + 1. La clave es que safety se mantiene siempre, y solo la terminación depende de que llegue GST; lo desarrollamos en Sincronía parcial y quórums BFT.
  2. Aleatorización. Si los procesos pueden lanzar monedas, la ejecución no terminante sigue existiendo, pero su probabilidad puede hacerse cero: el protocolo termina con probabilidad 11. Esta vía abandona la hipótesis de determinismo, no la de asincronía.
  3. Detectores de fallas. Otra familia añade un oráculo que sospecha de procesos caídos con cierta precisión eventual. Formalmente equivale a introducir información temporal que el modelo FLP no tiene.

HotStuff es un ejemplo directo de la primera vía. Su análisis declara el modelo de sincronía parcial: la seguridad vale en cualquier ejecución, mientras que el progreso se garantiza después de GST mediante un mecanismo de sincronización de vistas, el pacemaker. El diseño del pacemaker se estudia en View-change y pacemaker en HotStuff.

Lo que FLP enseña sobre safety y liveness

El legado práctico de FLP no es pesimismo, sino una disciplina de diseño. Si la terminación no se puede garantizar en todas las ejecuciones asíncronas, entonces el protocolo tiene que decidir qué propiedad sacrifica temporalmente. La respuesta casi unánime de la literatura BFT es: nunca safety, a veces liveness.

Eso se traduce en invariantes concretos. Un timeout puede cambiar el ritmo del protocolo, provocar un cambio de líder o una nueva vista, pero no puede autorizar a una réplica a votar por algo incompatible con lo que ya certificó. Los quórums y los certificados conservan la memoria segura; los relojes solo deciden cuándo vale la pena intentar de nuevo.

La consecuencia operativa es fácil de olvidar. Un sistema BFT que se detiene durante una partición de red no está "roto": está ejecutando exactamente el compromiso que FLP obliga a aceptar. El error de diseño sería el contrario, un protocolo que decide con prisa durante la asincronía y luego descubre dos historias confirmadas. La relación formal entre ambas propiedades y la responsividad se retoma en Safety, liveness y responsiveness en HotStuff.

Impacto de Negocio & Finanzas

Impacto Operativo del Teorema FLP

Problema Comercial / Operacional

Intentar diseñar un protocolo BFT comercial pretendiendo que termine bajo asincronía absoluta sin timeouts ni aleatoriedad conduce a estancamientos indefinidos en el peor caso.

Solución del Paper (Insight Técnico)

Los arquitectos deben aceptar el compromiso de FLP: garantizar safety incondicionalmente bajo asincronía y depender de sincronía parcial (GST) para liveness.

Impacto para el Producto / Negocio: Permite interpretar correctamente una pausa del consenso durante una partición como comportamiento esperado y calibrar los temporizadores de red sin comprometer safety.
Modelo de RedAsíncrono Purosin límites de tiempo
Límite FLPf = 1 fallabasta una parada posible
Solución IndustrialSincronía Parcialmodelo DLS 1988
Garantía CoreSafety Primeropreferir pausar a fallar
FLP Theorem

Checklist mental del Teorema FLP

4 de 4 revisados

Principios teóricos de la imposibilidad distribuida.
Referencias

Bibliografía académica

Formato IEEENumerado para ingeniería, sistemas y protocolos.
  1. [1]

    M. J. Fischer, N. A. Lynch, and M. S. Paterson, "Impossibility of Distributed Consensus with One Faulty Process," JACM, vol. 32, no. 2, pp. 374-382, 1985, doi: 10.1145/3149.214121

    Resultado de imposibilidad para consenso determinista en un sistema completamente asíncrono con una falla por crash.

  2. [2]

    C. Dwork, N. Lynch, and L. Stockmeyer, "Consensus in the Presence of Partial Synchrony," JACM, 1988.

    Modelo clásico para razonar sobre sincronía parcial y progreso eventual.

  3. [3]

    L. Lamport, R. Shostak, and M. Pease, "The Byzantine Generals Problem," ACM TOPLAS, vol. 4, no. 3, pp. 382-401, 1982, doi: 10.1145/357172.357176

    PaperID: LAMPORT-BYZANTINE-1982Abrir fuente (abre en otra pestaña)

    Fuente primaria para distinguir los modelos de mensajes orales y mensajes firmados.

  4. [4]

    M. Yin, D. Malkhi, M. K. Reiter, G. G. Gueta, and I. Abraham, "HotStuff: BFT Consensus in the Lens of Blockchain," PODC, 2019.

    Fuente central para QC, highQC, Chained HotStuff, view-change lineal y three-chain commit.

Fuentes primarias, papers seminales y especificaciones técnicas citadas en esta investigación.

Siguiente lectura

Continúa con Sincronía parcial y quórums BFT, donde GST y la intersección de quórums explican cómo un protocolo recupera el progreso sin renunciar a safety.

Rutas vecinas

Si este tema te abrió hambre, sigue por aquí.

Series y labs que comparten área o dependen de esta ruta. Pocas opciones, para no convertir la curiosidad en menú infinito.

Sigue leyendo

Ideas conectadas con este artículo

Una ruta corta para continuar sin abrir veinte pestañas y perder el hilo.

Los comentarios se cargan al final de la lectura para no meter peso antes de tiempo.