HotStuff: de cero a estado del arte

Artículo 12 de 47

26%

completado al llegar aquí

Sistemas distribuidosNota de investigación11 min de lectura

El modelo de fallas de parada u omisión de DLS: El paso previo a BFT

Jerarquía de fallas en DLS 1988: parada, omisión y bizantina, y por qué bajo sincronía parcial exigen n >= 2f+1 o n >= 3f+1 réplicas, con o sin firmas.

Ruta HotStuff: 0/47

En 1 Minuto

Recorre la jerarquía de modelos de falla que usan Dwork, Lynch y Stockmeyer (parada, omisión, bizantina autenticada y bizantina sin autenticar) y las cotas de resiliencia que demuestran bajo sincronía parcial.

Prerrequisitos
  • Consenso BFT desde cero (bft-consensus-from-zero)
  • Por qué no usar timeouts fijos (por-que-no-timeouts-fijos-delta)
Cuándo Detenerte

Detente cuando puedas explicar por qué, bajo sincronía parcial, parada y omisión exigen n >= 2f + 1 mientras que las fallas bizantinas exigen n >= 3f + 1 incluso con firmas.

Glosario Rápido de Notación

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

f— Número máximo de fallas bizantinas

Cantidad de réplicas maliciosas o con fallas arbitrarias que tolera el sistema.

Ejemplo: n = 3f + 1
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 jerarquía de fallas

  1. Parada

    Silencio definitivo

  2. Omisión

    Silencio selectivo

  3. Bizantina

    Comportamiento arbitrario

  4. Resiliencia

    n >= 2f + 1 vs n >= 3f + 1

Cada modelo permite todo lo que permite el anterior y algo más.
Explicación Didáctica

Decodificador Didáctico de Conceptos BFT

Falla por parada (fail-stop / crash)

En palabras simples: Un empleado que se desmaya en mitad de la reunión: hasta ese momento habló con normalidad, después ya no dice nada.

Detalle técnico: El proceso sigue el protocolo hasta que se detiene y no envía ningún mensaje posterior.

Falla por omisión

En palabras simples: Un empleado que a veces olvida enviar un correo: lo que envía es correcto, pero algunos mensajes nunca salen.

Detalle técnico: El proceso sigue el protocolo salvo que puede omitir el envío de algunos de sus mensajes.

Falla bizantina

En palabras simples: Un participante que dice a un jefe 'voté por tu proyecto' y al otro 'voté por el tuyo'.

Detalle técnico: El proceso puede desviarse del protocolo de forma arbitraria, incluida la equivocación.

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

Cuando se aborda el consenso BFT en Consenso BFT desde cero, se salta directamente al adversario bizantino: réplicas que mienten, duplican votos y se coordinan para romper el registro. Ese salto es correcto para HotStuff, pero oculta un escalón intermedio que aclara de dónde salen los números.

El artículo de Dwork, Lynch y Stockmeyer de 1988 no estudia un solo tipo de falla. Recorre varios modelos con el mismo método y, para cada uno, demuestra cuántos procesos defectuosos se pueden tolerar cuando la red es parcialmente síncrona. Leer esa tabla en orden es la forma más corta de entender por qué un protocolo tolerante a caídas trabaja con mayorías simples y uno bizantino con supermayorías de dos tercios.

Cuatro modelos de falla, de menor a mayor poder adversarial

DLS considera procesos con fallas por parada (fail-stop), por omisión, bizantinas con autenticación y bizantinas sin autenticación. Conviene leerlos como una escalera: cada peldaño le da al proceso defectuoso todo lo que tenía el anterior y algo más.

En una falla por parada, el proceso ejecuta correctamente hasta cierto paso y luego se detiene para siempre. En una falla por omisión, el proceso no se detiene, pero puede no enviar algunos de los mensajes que el protocolo le exige; lo que sí envía es correcto. Desde fuera, la omisión es más difícil de manejar que la parada porque el proceso reaparece: unos vecinos lo escuchan y otros no.

En una falla bizantina, el proceso puede comportarse de cualquier manera. La variante autenticada añade una única restricción: existe un esquema de firmas que el proceso defectuoso no puede falsificar, de modo que no puede inventar mensajes firmados por procesos correctos. Sigue pudiendo mentir sobre sus propios valores, firmar dos mensajes contradictorios o callar.

La escalera importa porque un protocolo diseñado para un peldaño funciona en los de abajo, pero no en los de arriba. Un protocolo bizantino tolera caídas; un protocolo de caídas no tolera mentiras.

Sincronía parcial: el terreno donde se miden las cotas

Las cotas de DLS no tienen sentido sin el modelo de tiempo. En un sistema totalmente asíncrono, Fischer, Lynch y Paterson demostraron que ningún protocolo determinista garantiza consenso si un solo proceso puede fallar por parada. La razón de fondo es que un proceso caído y uno muy lento son indistinguibles cuando no existe ninguna cota de tiempo.

DLS propone un punto intermedio. En una versión del modelo, existen cotas sobre el retraso de los mensajes y la velocidad relativa de los procesos, pero no se conocen de antemano. En otra, las cotas se conocen, pero solo se cumplen a partir de un instante desconocido, el tiempo de estabilización global o GST. Los protocolos del artículo mantienen safety siempre y garantizan terminación una vez que el sistema se comporta de forma síncrona el tiempo suficiente.

Este es el modelo que heredan PBFT y HotStuff: safety no depende de la red y liveness sí. PBFT lo dice explícitamente: no confía en la sincronía para proveer safety, pero necesita cierta sincronía para asegurar liveness.

Las cotas de DLS: 2f + 1 frente a 3f + 1

Bajo sincronía parcial, DLS muestra que el consenso que tolera ff fallas es posible si y solo si n≥2f+1n \ge 2f + 1 para parada y omisión, y n≥3f+1n \ge 3f + 1 para fallas bizantinas. La cota bizantina es la misma con autenticación y sin ella: las firmas no reducen el número de procesos necesarios en este modelo.

Ese resultado contrasta con el modelo síncrono. Con mensajes firmados y sincronía, el algoritmo de Lamport, Shostak y Pease resuelve el problema de los generales bizantinos para cualquier número de generales; sin firmas, necesita más de 3m3m generales para tolerar mm traidores. En otras palabras, la autenticación compra resiliencia cuando hay cotas de tiempo conocidas, pero no cuando la red puede retrasar mensajes de forma arbitraria hasta GST.

Matriz de decisión

Cotas de resiliencia bajo sincronía parcial (DLS 1988)

Parada (fail-stop)

El proceso se detiene y no vuelve a enviar mensajes.

Ideal para
Entornos donde todo el software y los operadores son de confianza.
Ojo con
Exige n >= 2f + 1. Una sola réplica que emita un mensaje incorrecto rompe las suposiciones.
Precaución

Omisión

El proceso puede no enviar algunos mensajes; lo que envía es correcto.

Ideal para
Modelar procesos vivos pero intermitentes.
Ojo con
Misma cota que la parada bajo sincronía parcial: n >= 2f + 1.
Recomendado

Bizantina, con o sin firmas

El proceso puede comportarse de forma arbitraria.

Ideal para
Réplicas operadas por partes que no confían entre sí (PBFT, HotStuff).
Ojo con
Exige n >= 3f + 1 aun con autenticación; los quórums son de 2f + 1.
Número mínimo de procesos para tolerar f fallas, según el modelo de falla.
Teorema

Cotas de resiliencia bajo sincronía parcial

Dwork, Lynch y Stockmeyer, 1988
En los modelos parcialmente síncronos de DLS, existe un protocolo de consenso que tolera f procesos defectuosos si y solo si n >= para fallas por parada u omisión, y n >= 3 para fallas bizantinas, tanto autenticadas como no autenticadas.
Bosquejo de Demostración: Las cotas inferiores se apoyan en escenarios indistinguibles: antes de GST, la red puede retrasar a un grupo de procesos correctos de modo que los demás no sepan si están caídos, lentos o mintiendo, y deban decidir igual.

Por qué con caídas basta una mayoría

Una forma intuitiva de ver la cota 2f+12f + 1 es pensar en lo que un proceso puede esperar. Si hasta ff procesos pueden haberse detenido, ningún protocolo puede exigir respuestas de más de n−fn - f procesos sin arriesgarse a esperar para siempre. Antes de GST, además, los ff procesos que no respondieron podrían estar vivos y simplemente retrasados.

Supongamos n=2fn = 2f. La red podría dividir a los procesos en dos mitades de ff y retrasar todos los mensajes entre ellas. Cada mitad ve exactamente lo que vería si la otra se hubiera caído, así que debe decidir por su cuenta, y nada impide que decidan valores distintos. Con n=2f+1n = 2f + 1, dos grupos de f+1f + 1 procesos siempre comparten al menos uno, y como en este modelo nadie miente, ese proceso común transporta la información correcta. Este argumento es una lectura informal; la demostración rigurosa está en el artículo.

La omisión no cambia la cuenta bajo sincronía parcial porque, mirado desde fuera, un mensaje omitido se parece a un mensaje retrasado, y el modelo ya obliga al protocolo a convivir con retrasos arbitrarios antes de GST.

Por qué con fallas bizantinas hace falta 3f + 1

En el caso bizantino, el proceso común entre dos grupos ya no basta: podría ser uno de los defectuosos y contarle una historia distinta a cada grupo. Firmar no lo evita, porque una réplica bizantina puede firmar válidamente dos mensajes contradictorios.

El protocolo sigue sin poder esperar más de n−fn - f respuestas. Para que dos grupos de ese tamaño compartan al menos un proceso correcto, su intersección debe superar a los ff que pueden mentir: 2(n−f)−n≥f+12(n - f) - n \ge f + 1, es decir, n≥3f+1n \ge 3f + 1. Con n=3f+1n = 3f + 1, cada grupo tiene 2f+12f + 1 procesos y la intersección tiene al menos f+1f + 1. Es la misma aritmética que PBFT convierte en regla de protocolo con 3f+13f + 1 réplicas y quórums de 2f+12f + 1 mensajes.

Impacto de Negocio & Finanzas

Qué se paga al pasar de caídas a fallas bizantinas

Problema Comercial / Operacional

Un protocolo diseñado solo para caídas asume que ningún participante emitirá un mensaje incorrecto; en un consorcio entre organizaciones esa suposición no se puede imponer.

Solución del Paper (Insight Técnico)

Bajo sincronía parcial, tolerar f participantes bizantinos cuesta f réplicas más que tolerar f caídas, y las firmas no reducen esa cifra.

Impacto para el Producto / Negocio: La decisión del modelo de fallas fija el tamaño mínimo del comité antes de elegir cualquier protocolo concreto.
Parada u omisiónn = 2f + 1mínimo bajo sincronía parcial
Bizantinan = 3f + 1con o sin firmas
Quórum por mayoríaq = f + 1de 2f + 1 procesos
Quórum bizantinoq = 2f + 1de 3f + 1 procesos
Jerarquía de fallas

Checklist mental de modelos de falla

4 de 4 revisados

Criterios para identificar qué cota aplica.
Referencias

Bibliografía académica

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

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

    Modelos de falla por parada, omisión y bizantina (con y sin autenticación), sincronía parcial con GST y sus cotas de resiliencia.

  2. [2]

    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

    Imposibilidad del consenso determinista en asincronía pura con una sola falla por parada.

  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)

    Contraste síncrono: más de 3m generales con mensajes orales y cualquier número con mensajes firmados.

  4. [4]

    M. Castro and B. Liskov, "Practical Byzantine Fault Tolerance," OSDI, 1999.

    Safety sin depender de la sincronía, liveness con sincronía eventual, 3f + 1 réplicas y quórums de 2f + 1.

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

Siguiente lectura

La intersección de quórums que aparece al final se demuestra paso a paso en Quórums en acción. Para ver cómo GST y los timeouts se combinan con esos quórums en un protocolo, continúa con Sincronía parcial y quórums.

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.