HotStuff: de cero a estado del arte
Artículo 2 de 47
4%
completado al llegar aquí
Sistemas distribuidosNota de investigación11 min de lectura
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.
Ruta HotStuff: 0/47
Aprende la intuición de la Replicación de Máquinas de Estado (SMR): cómo varios cajeros independientes pueden mantener saldos idénticos sin un jefe central, siempre que partan del mismo estado y ejecuten la misma secuencia de operaciones con reglas deterministas.
- El ataque del doble gasto (el-ataque-del-doble-gasto)
- Intuición básica sobre estado, entrada y transición
Detente al entender por qué dos réplicas deterministas que parten del mismo estado inicial y reciben las mismas entradas en el mismo orden terminan en el mismo estado, y por qué el problema difícil es acordar ese orden.
Ruta mental: Del Servidor Central al Banco Descentralizado
1. El Cajero Único
En un banco tradicional, un servidor central valida todo y representa un punto único de fallo.
Un único cajero con una libreta
2. Replicación Local
Cada cajero del banco descentralizado tiene su propia copia del libro contable.
Cada ventanilla con su cuaderno
3. Secuencia Acordada
Todas las transacciones se enumeran en un único orden global.
Tickets de atención numerados
4. Ejecución Determinista
Cada cajero aplica las operaciones localmente siguiendo exactamente las mismas reglas.
Calculadoras idénticas aplicando la suma
5. Estado Consistente
Al final del día, los saldos de todos los cajeros correctos coinciden al centavo.
Las mismas cifras en todas las pantallas
En un banco tradicional existe un gran ordenador central, un mainframe o un servidor de base de datos, que supervisa todo. Si ese servidor se cae, sufre un incendio en el centro de datos o es comprometido, el banco entero deja de funcionar o, peor, empieza a funcionar mal sin que nadie lo note. Es un punto único de fallo.
Imaginemos ahora un banco radicalmente distinto: diez cajeros independientes sentados en la misma sala, donde no existe ningún jefe central ni servidor principal. Cada cajero tiene sobre su mesa un cuaderno de contabilidad y una calculadora.
¿Cómo pueden estos diez cajeros procesar retiros, depósitos y transferencias durante todo el día y asegurar que, al cerrar la jornada, todas las libretas tengan exactamente los mismos saldos? Y una pregunta más incómoda: ¿qué pasa si alguno de los cajeros se equivoca o, directamente, miente?
Por qué copiar el cuaderno no basta
La primera idea para eliminar el punto único de fallo es obvia: tener varias copias. Pero copiar el cuaderno una vez por la mañana no sirve de mucho, porque a lo largo del día cada cajero atiende a clientes distintos. Si el cajero 3 registra un retiro que el cajero 7 no conoce, al mediodía ya hay dos versiones del saldo del mismo cliente.
La segunda idea es que cada cajero anuncie en voz alta cada operación y los demás la apunten. Eso mejora las cosas, pero introduce un problema sutil: los anuncios llegan a cada mesa en momentos distintos. Si dos clientes operan sobre la misma cuenta casi a la vez, unos cajeros apuntarán primero el depósito y otros primero el retiro. Si el retiro solo es válido después del depósito, unos cajeros lo aceptarán y otros lo rechazarán.
Es el mismo problema que vimos en el ataque del doble gasto, visto desde dentro del banco. Lo que hay que replicar no es el cuaderno, sino la secuencia de operaciones que lo modifica, y esa secuencia tiene que ser la misma para todos.
Las dos reglas de SMR: orden total y determinismo
Para que el banco sin jefe funcione, los cajeros deben seguir dos reglas.
Primera regla, orden total. Todas las transacciones reciben una posición en una secuencia global única: . No importa quién llegó primero a la ventanilla de cada cajero; lo que importa es la posición oficial asignada en esa secuencia. Dos cajeros correctos nunca pueden tener transacciones distintas en la misma posición.
Segunda regla, determinismo. La regla para procesar una transacción depende únicamente del estado actual y de la propia transacción. Si la cuenta de Juan tiene 500 unidades y se procesa "retirar 200", el resultado tiene que ser 300 en todas las mesas. No puede depender de la hora local, de un número aleatorio ni de qué cajero lo calcula.
Castro y Liskov enuncian estas condiciones de forma explícita para PBFT: el servicio se modela como una máquina de estados replicada en varios nodos, y las réplicas deben ser deterministas y empezar en el mismo estado. [2] El protocolo se encarga entonces de que las réplicas no defectuosas acuerden un orden total para ejecutar las peticiones. [2]
Las dos reglas se reparten el trabajo de forma muy limpia. El determinismo es responsabilidad de quien escribe la aplicación, y es relativamente fácil de cumplir si se evitan fuentes de azar. El orden total es el problema difícil, porque hay que conseguirlo sin un jefe, con una red que retrasa mensajes y con algunos participantes que pueden fallar. Ese problema es el consenso.
Comparativa: Arquitectura Centralizada vs. Replicación de Estado (SMR)
Base de Datos Centralizada
Tradicional- •Un solo servidor decide el orden de las escrituras.
- •Su caída o su compromiso afecta a todo el servicio.
- •Los clientes deben confiar plenamente en esa máquina.
Replicación de Estado (SMR / BFT)
Descentralizado- ✓Varias réplicas ejecutan la misma secuencia de operaciones.
- ✓Con 3f+1 réplicas tolera hasta f réplicas bizantinas.
- ✓Un cliente puede contrastar respuestas de varias réplicas.
Cuando un cajero miente: réplicas bizantinas
Hasta aquí hemos supuesto cajeros honestos que, como mucho, se distraen o se van a casa. En un sistema abierto hay que contemplar algo peor: un cajero que anuncia operaciones falsas, que dice una cosa a unos compañeros y otra distinta a otros, o que responde a un cliente con un saldo inventado. A ese comportamiento arbitrario se le llama falla bizantina.
El nombre viene del trabajo de Lamport, Shostak y Pease sobre los generales bizantinos, donde un traidor puede enviar mensajes contradictorios a distintos participantes. [1] Ese mismo trabajo dedica una sección a cómo construir sistemas fiables con varios procesadores que calculan el mismo resultado y votan por mayoría, y subraya la condición clave: todos los procesadores correctos deben usar la misma entrada. [1] Es la semilla de nuestra regla de orden total: si las entradas difieren, la votación pierde su sentido.
Lamport, Shostak y Pease también muestran el precio. Con mensajes orales, que pueden alterarse al retransmitirse, no hay solución si un tercio o más de los generales son traidores. [1] Por eso los protocolos prácticos como PBFT usan réplicas para tolerar bizantinas. [2] En nuestro banco de diez cajeros, eso significa tolerar como mucho tres cajeros deshonestos, porque .
Decodificador Didáctico de Conceptos BFT
En palabras simples: Una máquina expendedora: empieza en 'esperando moneda'. Si insertas una moneda (entrada), pasa a 'producto entregado' (nuevo estado).
Detalle técnico: Modelo computacional formado por un conjunto de estados, unas entradas y una función de transición que, dado un estado y una entrada, produce el siguiente estado.
En palabras simples: Una receta estricta: con los mismos gramos de harina y los mismos minutos de horno, el pastel sale igual en Lima o en Tokio.
Detalle técnico: Propiedad de una operación que, aplicada sobre el mismo estado con los mismos argumentos, produce siempre el mismo resultado y el mismo estado final.
Quién valida: el cliente frente a varias respuestas
Volvamos a la pregunta del título. En el banco sin jefe nadie valida en solitario. Cada réplica correcta valida cada transacción contra su propio estado, y como todas tienen el mismo estado y el mismo orden, todas llegan a la misma conclusión. La validación está replicada igual que los datos.
Eso cambia también la forma de hablar con el banco. Un cliente no puede fiarse de la respuesta de un único cajero, porque ese cajero podría ser uno de los deshonestos. En PBFT el cliente espera respuestas con el mismo resultado de réplicas distintas; como a lo sumo son defectuosas, al menos una de esas respuestas procede de una réplica correcta. [2]
HotStuff conserva este marco. Se presenta como un protocolo de replicación BFT basado en líder para el modelo de sincronía parcial, en el que las réplicas acuerdan una secuencia creciente de comandos de los clientes. [3] Lo que cambia respecto a PBFT es cómo se consigue ese acuerdo y cuánto cuesta reemplazar a un líder, no el objetivo de fondo. [3]
Ojo con una trampa frecuente: "sin cajero central" no significa "sin coordinador". Tanto PBFT como HotStuff eligen en cada momento un líder que propone el orden. La diferencia con el banco tradicional es que ese líder no tiene autoridad final: su propuesta solo cuenta si la respaldan suficientes réplicas, y si falla o miente, el protocolo lo reemplaza.
Qué gana el banco y qué paga
En la banca tradicional, sistemas distintos que llevan registros separados necesitan procesos de reconciliación para detectar discrepancias después del hecho. Con SMR la discrepancia entre réplicas correctas no se corrige más tarde: se evita desde el principio, porque todas ejecutan la misma secuencia.
Qué aporta la replicación de máquinas de estado
Varios registros que se actualizan por separado pueden divergir y necesitan reconciliación posterior para detectar y corregir diferencias.
Con SMR las réplicas correctas acuerdan el orden antes de ejecutar, así que no divergen entre sí aunque algunas réplicas fallen dentro del límite tolerado.
El precio también es real. Hacen falta más máquinas, al menos para tolerar bizantinas, y cada transacción requiere rondas de mensajes entre ellas antes de confirmarse. [2] Además, el determinismo impone disciplina a la aplicación: cualquier fuente de no determinismo, como leer el reloj local, tiene que tratarse explícitamente o romperá la coincidencia de estados.
Criterios clave
Criterios clave
4 de 4 revisados
Bibliografía académica
- [1]
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.
- [2]
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.
- [3]
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.
Siguiente lectura
Para ver cómo PBFT convierte estas reglas en un protocolo concreto, sigue con PBFT 1999: tres pasos de confirmación. Si quieres el panorama general antes, empieza por Consenso BFT desde cero.
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.
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.
Consenso BFT desde cero: réplicas, quórums y fallas bizantinas
Primer paso de la serie HotStuff: qué problema resuelve BFT, por qué aparece n >= 3f + 1 y cómo separar safety de liveness sin drama matemático.
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.