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
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.
- La metáfora del banco sin cajero central (el-banco-sin-cajero-central)
- El ataque del doble gasto (el-ataque-del-doble-gasto)
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.
Ruta mental: El Ciclo de Vida del Estado Determinista
1. Estado Inicial (S0)
Todas las sucursales inician con exactamente 10 manzanas y 5 peras en inventario.
Saldos iniciales de la red
2. Entrada de Comando
Un cliente envía la orden T1: 'Agregar 3 manzanas' a la red.
Un pedido en ventanilla
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.
Numeración estricta de tickets
4. Ejecución Local
Cada réplica aplica localmente T1 y luego T2 sobre su estado S0.
Calculadoras ejecutando la suma
5. Estado Final (S2)
Las 4 sucursales registran exactamente 13 manzanas y 3 peras al final del ciclo.
Libretas idénticas
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 , , y . Cuatro no es un número casual: es el comité mínimo para tolerar réplica bizantina, el tamaño que usan los protocolos de la serie. [1]
La frutería replicada, paso a paso
Supongamos que las 4 sucursales inician la mañana con el mismo inventario:
- Estado inicial : 10 manzanas y 5 peras.
A lo largo de la mañana llegan dos operaciones de clientes:
- Transacción : "recibir 3 manzanas", que suma 3 al contador de manzanas.
- Transacción : "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 y después , cada réplica calcula por su cuenta:
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. [1] 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. [1]
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 y conmutan. Eso es una casualidad del ejemplo, no una propiedad general. Basta con cambiar la segunda operación para verlo.
Supongamos ahora que 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 : , y después manzanas.
- Orden : , y después 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.
El Riesgo del Desorden (No-Conmutatividad)
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 .
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. [2] 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. [2]
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.
Decodificador Didáctico de Conceptos BFT
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.
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.
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. [3] 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. [3]
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. [1]
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 réplicas. [1] 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
Responsabilidades separadas en una arquitectura SMR
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.
SMR divide la responsabilidad: el consenso garantiza el mismo log ordenado y la aplicación garantiza una transición 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 réplicas bizantinas en un comité de . [2] 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
Criterios clave
4 de 4 revisados
Bibliografía académica
- [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]
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]
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
Fuente primaria para distinguir los modelos de mensajes orales y mensajes firmados.
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.
Series relacionadas
Ethereum: de historia a labs
Serie progresiva para entender Ethereum desde el whitepaper, forks y The Merge hasta EVM, Solidity, proof-of-stake, rollups, account abstraction, DeFi, observabilidad y laboratorios reproducibles.
Substrate: del runtime al consenso propio
Serie de 20 capítulos, de neófito a experto, sobre Substrate (Polkadot SDK): runtime en Wasm, FRAME, extrinsics, estado, pesos, actualizaciones sin fork, Aura, BABE, GRANDPA, sincronización, parachains, XCM, Sassafras, BEEFY y cómo conectar un consenso BFT propio a un nodo.
Ruta práctica: activos digitales en la operación
Nueve módulos, de menor a mayor dependencia, para decidir cómo usar custodia, wallets, llaves, firmas multifirma y MPC, AML/KYT y stablecoins con Fireblocks, BitGo, Kaleido, Circle y Tether.
Labs para convertir lectura en práctica
Prueba de trabajo y reajuste de dificultad
Laboratorio determinista para medir el costo de la prueba de trabajo y ver cómo el reajuste por altura de bloque estabiliza el tiempo entre bloques.
Consensus benchmark
Banco reproducible para comparar consenso BFT y documentar los trade-offs de HotStuff-2.
Ethereum local: Anvil, wallet y primera transacción
Laboratorio base para levantar una red local, crear cuentas, firmar transacciones y observar receipts sin gastar ETH real.
RPC y Cast: leer Ethereum con lupa
Ejercicios con JSON-RPC y Cast para consultar bloques, nonces, gas, receipts, logs y errores reproducibles.
Sigue leyendo
Ideas conectadas con este artículo
Una ruta corta para continuar sin abrir veinte pestañas y perder el hilo.
La metáfora del banco sin cajero central: ¿Quién valida las transacciones?
Cómo varias réplicas validan transacciones sin un servidor central: mismo estado inicial, mismo orden y ejecución determinista, la intuición de SMR.
El ataque del doble gasto: Cómo los estafadores digitales copian el dinero como si fuera un PDF
Por qué un saldo digital se puede gastar dos veces si las réplicas no acuerdan un único orden de transacciones, y cómo los quórums 2f+1 lo impiden.
El abuelo de los consensos BFT: PBFT (1999) y sus tres pasos
Cómo PBFT (Castro y Liskov, 1999) ordena solicitudes con pre-prepare, prepare y commit, qué certifica cada quórum 2f+1 y por qué su view-change es cuadrático.
¿Por qué mienten las computadoras? Del error de hardware al boicot
Por qué una réplica puede detenerse, callar o contradecirse, y por qué BFT asume fallas arbitrarias: bugs y ataques producen el mismo síntoma ante el protocolo.