HotStuff: de cero a estado del arte

Artículo 4 de 47

9%

completado al llegar aquí

Sistemas distribuidosNota de investigación11 min de lectura

Replicación de Máquina de Estados (SMR) con manzanas y peras

Un inventario de manzanas y peras muestra por qué réplicas deterministas que aplican el mismo log ordenado llegan siempre al mismo estado en SMR.

Ruta HotStuff: 0/47

En 1 Minuto

Comprende el ciclo de vida de una transacción en Replicación de Máquinas de Estado (SMR): cómo partir de un inventario inicial idéntico y aplicar las mismas operaciones en el mismo orden garantiza que todas las réplicas correctas lleguen al mismo estado.

Prerrequisitos
  • La metáfora del banco sin cajero central (el-banco-sin-cajero-central)
  • El ataque del doble gasto (el-ataque-del-doble-gasto)
Cuándo Detenerte

Detente al entender por qué la igualdad de estados se reduce a dos condiciones, mismo log ordenado y ejecución determinista, y por qué el consenso solo tiene que resolver la primera.

Mapa conceptual

Ruta mental: El Ciclo de Vida del Estado Determinista

  1. 1. Estado Inicial (S0)

    Todas las sucursales inician con exactamente 10 manzanas y 5 peras en inventario.

  2. 2. Entrada de Comando

    Un cliente envía la orden T1: 'Agregar 3 manzanas' a la red.

  3. 3. Ordenación (Consenso)

    El protocolo de consenso asigna a T1 la posición 1 y a T2 (retirar 2 peras) la posición 2.

  4. 4. Ejecución Local

    Cada réplica aplica localmente T1 y luego T2 sobre su estado S0.

  5. 5. Estado Final (S2)

    Las 4 sucursales registran exactamente 13 manzanas y 3 peras al final del ciclo.

Sigue los 5 pasos para entender cómo se aplica SMR a un inventario replicado.

En el banco sin cajero central vimos la intuición: varias réplicas sin jefe pueden mantener el mismo estado si respetan un orden total y ejecutan de forma determinista. Ahora toca bajar al detalle y seguir, paso a paso, cómo evoluciona el estado interno de cada réplica cuando llegan operaciones.

Para ello usaremos una metáfora deliberadamente sencilla: una cadena de fruterías con 4 sucursales, que llamaremos réplicas N1N_1, N2N_2, N3N_3 y N4N_4. Cuatro no es un número casual: es el comité mínimo 3f+13f + 1 para tolerar f=1f = 1 réplica bizantina, el tamaño que usan los protocolos de la serie.

La frutería replicada, paso a paso

Supongamos que las 4 sucursales inician la mañana con el mismo inventario:

  • Estado inicial S0S_0: 10 manzanas y 5 peras.

A lo largo de la mañana llegan dos operaciones de clientes:

  1. Transacción T1T_1: "recibir 3 manzanas", que suma 3 al contador de manzanas.
  2. Transacción T2T_2: "vender 2 peras", que resta 2 al contador de peras si hay existencias suficientes.

Si el protocolo de consenso fija que el orden es primero T1T_1 y después T2T_2, cada réplica calcula por su cuenta:

S1=f(S0,T1)=(13 manzanas, 5 peras)S_1 = f(S_0, T_1) = (13 \text{ manzanas},\ 5 \text{ peras})

S2=f(S1,T2)=(13 manzanas, 3 peras)S_2 = f(S_1, T_2) = (13 \text{ manzanas},\ 3 \text{ peras})

Al terminar, las 4 sucursales tienen 13 manzanas y 3 peras. Ninguna tuvo que copiar el inventario de otra ni preguntar el resultado; todas lo calcularon de forma independiente y coincidieron. Esa es la idea central de SMR: no se replican los datos, se replica la historia que produce los datos.

Castro y Liskov formulan el mismo modelo para PBFT: el servicio es una máquina de estados replicada, las réplicas deben ser deterministas y deben empezar en el mismo estado. Con esas dos condiciones, el único trabajo del protocolo es garantizar que las réplicas no defectuosas ejecuten las peticiones en el mismo orden total.

Por qué el orden importa: operaciones que no conmutan

En el ejemplo anterior el orden daba igual: sumar manzanas y restar peras afectan a contadores distintos, así que T1T_1 y T2T_2 conmutan. Eso es una casualidad del ejemplo, no una propiedad general. Basta con cambiar la segunda operación para verlo.

Supongamos ahora que T2T_2 es "duplicar el inventario de manzanas", por ejemplo porque llega un pedido que repone exactamente lo que hay en estantería. Partiendo de 10 manzanas:

  • Orden T1,T2T_1, T_2: 10+3=1310 + 3 = 13, y después 13⋅2=2613 \cdot 2 = 26 manzanas.
  • Orden T2,T1T_2, T_1: 10⋅2=2010 \cdot 2 = 20, y después 20+3=2320 + 3 = 23 manzanas.

Las dos réplicas aplicaron las mismas operaciones, ambas de forma determinista, y aun así terminaron con estados distintos. El determinismo solo garantiza igualdad si la secuencia es la misma. Por eso la regla de oro exige las dos condiciones a la vez.

Análisis de Escenario de Ejecución

El Riesgo del Desorden (No-Conmutatividad)

✓ Ruta Feliz (Normal Path)
Condición Inicial

Comportamiento del Protocolo

Invariante de Seguridad Preservado

Tiempo / Latencia de Resolución

Uno podría pensar en evitar el problema permitiendo solo operaciones conmutativas. Para un inventario simple quizá funcione, pero en cuanto aparecen reglas como "vender solo si hay existencias" o "aplicar un descuento del 10 %", el orden vuelve a importar. Un retiro que es válido después de una reposición puede ser inválido antes. Es la misma estructura del doble gasto: la validez de una operación depende de lo que ocurrió antes.

El log: la pieza que replica el consenso

Si el estado se deriva de la historia, lo que realmente hay que acordar es esa historia: una lista numerada de operaciones, el log. El estado en cada réplica es simplemente el resultado de aplicar el log desde S0S_0.

HotStuff describe su objetivo justo en estos términos: es un protocolo de replicación BFT en el que las réplicas acuerdan una secuencia creciente de comandos propuestos por los clientes. En HotStuff los comandos viajan agrupados en bloques encadenados, y una réplica ejecuta los comandos de un bloque cuando ese bloque queda confirmado por la regla de commit del protocolo, siguiendo el orden de la cadena.

Esta visión tiene una consecuencia arquitectónica importante: el consenso no necesita entender las operaciones. Para ordenar "recibir 3 manzanas" y "duplicar manzanas" no hace falta saber nada de fruta; basta con tratarlas como comandos opacos y fijar su posición. La aplicación, por su parte, no necesita saber nada de quórums: recibe comandos en orden y los ejecuta. Esa separación entre ordenar y ejecutar es una idea de diseño general de SMR, y permite cambiar la lógica de la aplicación sin tocar el protocolo de acuerdo, siempre que la nueva lógica siga siendo determinista.

Explicación Didáctica

Decodificador Didáctico de Conceptos BFT

Separación entre consenso y ejecución

En palabras simples: El encargado de un restaurante que solo toma los pedidos y les pone un número, frente al cocinero que prepara los platos en el orden de los números.

Detalle técnico: Diseño en el que el protocolo de consenso solo acuerda el orden de comandos opacos en un log, y la aplicación ejecuta esos comandos en ese orden para calcular el nuevo estado.

Transición de Estado (State Transition)

En palabras simples: Un tablero de ajedrez: mover un peón cambia la posición del juego siempre de la misma manera.

Detalle técnico: Función f(S, T) que, aplicada al estado S y a la transacción T, produce de forma inequívoca el nuevo estado.

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

Dónde se rompe la regla en la práctica

La regla de oro es una implicación: si el log es el mismo y la ejecución es determinista, el estado es el mismo. En sistemas reales hay que vigilar las dos premisas.

El log puede diferir si el protocolo de consenso falla o si una réplica es bizantina. Una réplica bizantina puede ignorar el log, ejecutar otra cosa o mentir sobre su estado. SMR no promete nada sobre ella; promete que las réplicas correctas coinciden. Por eso el problema de fondo es el de los generales bizantinos: que todos los participantes leales actúen sobre la misma información aunque algunos mientan. Lamport, Shostak y Pease también señalan que un sistema fiable basado en varios procesadores que votan solo funciona si todos los procesadores correctos usan la misma entrada.

La ejecución puede no ser determinista sin que nadie lo note. Leer el reloj local, generar un número aleatorio, recorrer una tabla hash cuyo orden de iteración varía entre ejecuciones o depender de la precisión de punto flotante de cada máquina son fuentes clásicas de divergencia. PBFT reconoce el problema y propone que el valor no determinista se fije de forma acordada, por ejemplo propuesto por el primario, en lugar de que cada réplica lo calcule por su cuenta.

Además, PBFT incluye un mecanismo que ayuda a comprobar el estado: las réplicas generan periódicamente puntos de control con un resumen de su estado, y un punto de control se considera estable cuando lo respaldan 2f+12f + 1 réplicas. Ese mecanismo permite descartar mensajes antiguos del log y da un punto de referencia común sobre el estado.

Qué pide SMR a cada capa

Impacto de Negocio & Finanzas

Responsabilidades separadas en una arquitectura SMR

Problema Comercial / Operacional

Cuando la lógica de negocio y la lógica de acuerdo están mezcladas, es difícil saber si una divergencia de estado viene de un fallo de orden o de un cálculo no determinista.

Solución del Paper (Insight Técnico)

SMR divide la responsabilidad: el consenso garantiza el mismo log ordenado y la aplicación garantiza una transición determinista.

Impacto para el Producto / Negocio: Los fallos se diagnostican por capas, y la lógica de la aplicación puede evolucionar sin rediseñar el protocolo de acuerdo mientras siga siendo determinista.

Resumiendo el reparto. El protocolo de consenso se compromete a que todas las réplicas correctas vean el mismo log, con las mismas operaciones en las mismas posiciones, tolerando hasta ff réplicas bizantinas en un comité de 3f+13f + 1. La aplicación se compromete a que su función de transición sea determinista. Y el estado inicial se fija una vez, idéntico para todos.

Con esas tres piezas, la frutería de cuatro sucursales se comporta como si fuera una sola tienda, aunque una de ellas mienta. Lo que queda por estudiar, y ocupa el resto de la serie, es cómo construir el log de forma eficiente: cuántos mensajes cuesta, cómo se reemplaza a un líder que falla y cuándo puede una réplica dar una posición del log por definitiva.

Criterios clave

Checklist Didáctico

Criterios clave

4 de 4 revisados

Revisa estos 4 puntos fundamentales antes de continuar.
Referencias

Bibliografía académica

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

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

    Base práctica para replicación de estado con fallas bizantinas y comparación con fases cuadráticas.

  2. [2]

    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.

  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.

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

Siguiente lectura

Para ver cómo un protocolo concreto construye ese log ordenado, sigue con PBFT 1999: tres pasos de confirmación. Si quieres saltar directamente a la versión de HotStuff, lee QC, highQC y three-chain.

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.