HotStuff: de cero a estado del arte
Artículo 16 de 47
34%
completado al llegar aquí
Sistemas distribuidosNota de investigación13 min de lectura
La pesadilla del View-Change cuadrático en PBFT: Por qué cambiar de líder apaga la red
Qué viaja en VIEW-CHANGE y NEW-VIEW de PBFT, por qué su costo en autenticadores crece hasta O(n^3) y cómo HotStuff lo reduce a un highQC lineal.
Ruta HotStuff: 0/47
Prerequisitos recomendados
Si alguno de estos conceptos todavía está medio nebuloso, empieza por aquí. Te ahorra tropiezos y un par de cejas fruncidas.
Desarma el cambio de vista de PBFT: qué certificados viajan en VIEW-CHANGE y NEW-VIEW, por qué el costo total en autenticadores crece con n hasta O(n^3) y qué cambia cuando HotStuff transporta un único highQC por réplica.
- Consenso BFT desde cero (bft-consensus-from-zero)
- PBFT (1999) y sus tres pasos (pbft-1999-tres-pasos-confirmacion)
Detente cuando puedas detallar qué datos contiene un mensaje VIEW-CHANGE en PBFT, por qué su tamaño crece con n y con las solicitudes preparadas, y por qué NEW-VIEW debe reenviar esos expedientes.
Glosario de Notación Matemática y Criptográfica
Número de vista o ronda actual. Cada vista tiene un único líder designado.
view = 42Ruta mental del Cambio de Vista en PBFT
1. Timeout de Réplicas
Sospecha del primario
2. Construcción de Expediente
Checkpoint C y conjunto P
3. Mensaje NEW-VIEW
Líder junta 2f + 1 expedientes
4. Verificación del expediente
Costo que crece con n
Decodificador Didáctico de Conceptos BFT
En palabras simples: Para nombrar a un nuevo gerente, cada empleado entrega copia firmada de todas las aprobaciones pendientes que vio, con las firmas de los colegas que las respaldaron.
Detalle técnico: Mensaje <VIEW-CHANGE, v+1, n, C, P, i> con el checkpoint estable n, su prueba C y el conjunto P de certificados Prepared posteriores a ese checkpoint.
En palabras simples: El nuevo gerente no puede resumir: debe reenviar a toda la oficina las carpetas completas de una mayoría de empleados para que cada uno compruebe su decisión.
Detalle técnico: NEW-VIEW incluye 2f + 1 expedientes de O(n) firmas cada uno y se envía a n réplicas: O(n^3) autenticadores en total, para una ventana de solicitudes acotada.
Un protocolo BFT no se juzga solo por cómo funciona cuando todo va bien, sino por cómo sobrevive cuando el líder cae o se vuelve malicioso. En PBFT, ese momento lo gobierna el protocolo de view change: las réplicas abandonan la vista , eligen al primario de la vista y reconstruyen el estado de las solicitudes que estaban a medio camino. [1]
Es en ese mecanismo donde PBFT paga su mayor costo de comunicación. No porque el diseño sea descuidado, sino porque la seguridad entre vistas se sostiene con expedientes completos de evidencia en lugar de con un certificado compacto y portable. Vamos a ver qué viaja, cuánto pesa y por qué HotStuff decidió reorganizar el problema.
Qué protege el cambio de vista en PBFT
En el camino normal, una solicitud pasa por pre-prepare, prepare y commit. Una réplica considera una solicitud prepared cuando tiene el pre-prepare del primario y prepares coincidentes de otras réplicas para la misma vista, número de secuencia y digest. [1]
El problema aparece si el primario falla justo después de que alguna réplica correcta ejecutó una solicitud. Esa ejecución ocurrió porque un quórum de réplicas la tenía preparada. El nuevo primario no puede ignorar esa historia: si asignara otro contenido al mismo número de secuencia, dos réplicas correctas ejecutarían operaciones distintas en la misma posición del log.
Por eso el cambio de vista tiene una sola obligación de safety: toda solicitud que pudo comprometerse en la vista anterior debe reaparecer con el mismo número de secuencia en la vista nueva. La pregunta es cómo demostrarlo sin confiar en la palabra del nuevo primario, que también podría ser bizantino. [1]
La respuesta de PBFT es transparente y costosa: cada réplica entrega su evidencia, y el nuevo primario reenvía esa evidencia para que todos puedan auditar su decisión.
Anatomía del mensaje VIEW-CHANGE
Cuando el temporizador de una réplica expira mientras espera ejecutar una solicitud, la réplica deja de participar en la vista y multidifunde a todas las réplicas un mensaje firmado: [1]
Sus campos son:
- : la vista a la que la réplica quiere migrar.
- : el número de secuencia del último checkpoint estable que conoce la réplica .
- : el conjunto de mensajes de checkpoint que prueba que ese checkpoint es correcto.
- : un conjunto por cada solicitud que quedó preparada en la réplica con número de secuencia mayor que .
Cada contiene un pre-prepare válido y prepares firmados por réplicas distintas. [1] Es decir, cada solicitud en vuelo arrastra un certificado de tamaño proporcional a . Si en la ventana entre checkpoints hay solicitudes preparadas, el mensaje transporta del orden de firmas, más las del checkpoint.
La sobrecarga del mensaje VIEW-CHANGE en PBFT
Fuentes:
[1]Cómo leer esta figura
El diagrama contrapone dos paneles con cuatro réplicas. En el camino feliz, la réplica primaria envía flechas a las otras tres. En el cambio de vista, todas las réplicas se conectan con todas mediante flechas bidireccionales, porque cada una multidifunde su mensaje VIEW-CHANGE con su checkpoint y sus certificados Prepared. El nuevo primario luego empaqueta 2f + 1 de esos expedientes en NEW-VIEW.
Conviene subrayar algo: no crece sin límite. PBFT acota las solicitudes en vuelo con marcas de agua entre checkpoints, así que el tamaño del expediente depende de esa ventana y de . Para hablar de escalabilidad con el número de réplicas, se suele tratar la ventana como constante y mirar cómo crece el costo con .
NEW-VIEW: el expediente que el nuevo primario debe reenviar
El primario de la vista espera mensajes VIEW-CHANGE válidos de otras réplicas. Con ellos y el suyo propio arma el conjunto y difunde: [1]
es el conjunto de nuevos pre-prepare. El primario lo calcula así: toma el último checkpoint estable que aparece en como límite inferior y el número de secuencia preparado más alto como límite superior. Para cada número intermedio, si algún certificado de muestra una solicitud preparada, la vuelve a proponer en la vista ; si no hay ninguna, propone una operación nula. [1]
La clave está en la verificación. Una réplica que recibe NEW-VIEW no acepta por fe: comprueba que los mensajes de sean válidos y que sea correcto repitiendo el mismo cálculo. Para poder repetirlo necesita los expedientes completos, no un resumen. [1]
Esa decisión de diseño es elegante desde safety: un primario bizantino no puede omitir una solicitud preparada sin que el cálculo de las réplicas lo delate. Pero obliga a que el mensaje NEW-VIEW cargue expedientes, cada uno con firmas.
Conteo de autenticadores del cambio de vista en PBFT
Contando autenticadores: de cuadrático a cúbico
El paper de HotStuff propone medir estos protocolos por complejidad de autenticadores: cuántas firmas o MACs reciben en total las réplicas para alcanzar una decisión. Bajo esa métrica, reporta que el reemplazo de líder en PBFT cuesta , mientras que el camino normal con un líder correcto es cuadrático. [2]
Podemos reconstruir el orden de magnitud con la anatomía anterior:
- VIEW-CHANGE todos contra todos. Cada una de las réplicas envía a las demás un mensaje con firmas. Eso suma autenticadores recibidos.
- NEW-VIEW de uno a todos. El primario envía a réplicas un mensaje con expedientes de firmas: .
Este conteo no depende de una mala calibración. Aun con un temporizador perfecto, cada reemplazo de líder paga ese orden. Lo que sí empeora la situación es encadenar varios cambios de vista: el paper de HotStuff analiza también el caso de varios líderes fallidos consecutivos, donde el costo acumulado crece todavía más. [2]
¿Bastan las firmas umbral para arreglarlo? Ayudan, pero no eliminan el problema. Si cada certificado Prepared se comprime en una sola firma, cada VIEW-CHANGE baja a autenticadores por solicitud. Sin embargo, el nuevo primario sigue reenviando los reportes de réplicas a destinatarios, y el costo queda cuadrático. El cuello de botella no es solo el tamaño de cada certificado, sino la necesidad de reenviar la evidencia de muchas réplicas. [2]
Por qué el expediente no se puede simplemente borrar
La tentación obvia es pedir que el nuevo primario envíe solo el certificado más alto que conoce, sin justificar por qué es el más alto. El problema es que una réplica correcta puede tener un certificado preparado más reciente que ninguno de los reportes que llegaron al primario. Si esa réplica actúa como si estuviera bloqueada en ese certificado, rechazará la propuesta, y el sistema puede quedarse sin quórum. [3]
Hay tres maneras clásicas de resolver esa tensión:
- Probarlo todo, como PBFT: el primario reenvía los expedientes y cada réplica verifica. Es responsivo, pero cuadrático o cúbico en comunicación. [1]
- Esperar, como Tendermint o Casper: el nuevo líder aguarda el retraso máximo de red conocido antes de proponer, para asegurarse de haber oído el certificado más alto de toda réplica correcta. Es lineal, pero pierde responsividad. [2]
- Agregar una fase, como HotStuff: cambia qué significa estar bloqueado, de modo que el certificado más alto entre reportes siempre basta. [2]
La comparación de Malkhi y Nayak sobre PBFT, Tendermint, HotStuff y HotStuff-2 organiza precisamente estas opciones como un compromiso entre fases, comunicación del cambio de vista y responsividad. [3]
La alternativa de HotStuff: un único highQC por réplica
HotStuff ataca el problema desde la forma de la evidencia. En lugar de un expediente con un certificado por solicitud, cada réplica guarda un Quorum Certificate (QC) que resume votos en un solo objeto verificable, y con firmas umbral ese QC es un único autenticador. [2]
En un cambio de vista de HotStuff:
- cada réplica envía al siguiente líder un mensaje
new-viewcon suhighQC, el QC más alto que conoce; - el líder elige el
highQCde vista más alta entre mensajes; - el líder propone un bloque que extiende ese QC y lo difunde junto con ese único certificado.
Ese flujo es lineal: mensajes de tamaño constante hacia el líder y de vuelta. [2] La razón por la que basta un solo QC es la tercera fase: una réplica correcta solo se bloquea en un QC cuando ya existe evidencia de que réplicas lo conocen, así que cualquier conjunto de reportes contiene al menos un highQC tan alto como cualquier lock correcto. El análisis completo de esa regla vive en la regla de tres cadenas con QC y highQC y en el pacemaker y el cambio de vista de HotStuff.
El precio es explícito: una fase lógica más en el camino de commit. HotStuff la acepta porque, a cambio, obtiene simultáneamente cambio de vista lineal y responsividad optimista. [2] Los protocolos de dos fases posteriores intentan recuperar esa fase sin perder lo ganado, y la discusión sobre qué cuesta recortar a dos cadenas es el siguiente paso natural.
Impacto operativo del View-Change de PBFT
En un consorcio BFT basado en PBFT, cada reemplazo de líder obliga a reenviar expedientes de certificados cuyo costo crece con el número de réplicas; un comité más grande encarece justo el momento de recuperación.
Protocolos con cambio de vista lineal, como HotStuff, mantienen acotado el costo de rotar líderes al transportar un único certificado por réplica.
Checklist mental de View-Change Complexity
4 de 4 revisados
Bibliografía académica
- [1]
M. Castro and B. Liskov, "Practical Byzantine Fault Tolerance," OSDI, 1999.
Fuente primaria para los mensajes VIEW-CHANGE y NEW-VIEW, los certificados Prepared y el cálculo de O.
- [2]
M. Yin, D. Malkhi, M. K. Reiter, G. G. Gueta, and I. Abraham, "HotStuff: BFT Consensus in the Lens of Blockchain," PODC, 2019.
Complejidad de autenticadores, costo del reemplazo de líder en PBFT y cambio de vista lineal con highQC.
- [3]
D. Malkhi and K. Nayak, "What is the difference between PBFT, Tendermint, HotStuff, and HotStuff-2?," Decentralized Thoughts, 2023.
Comparación del compromiso entre fases, cambio de vista y responsividad en PBFT, Tendermint, HotStuff y HotStuff-2.
Siguiente lectura
Continúa con Tendermint visto desde HotStuff: locks, unlocks y evidencia, donde la opción de esperar el retraso máximo de red aparece en un protocolo real.
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.
De PBFT a cadenas: el puente mental hacia HotStuff
Antes de QC y highQC conviene ver cómo PBFT, Tendermint y Streamlet preparan la intuición de vistas, locks y commits sobre cadenas.
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.
Fast-HotStuff: dos cadenas, AggQC y la letra pequeña
Por qué Fast-HotStuff intenta reducir latencia, cómo usa AggQC para probar highQC en cambios de vista y qué trade-offs aparecen en firmas agregadas.
HotStuff multipipeline: de fases a cadena viva
Cómo Chained HotStuff convierte prepare, pre-commit, commit y decide en una línea temporal de vistas, GenericQC y commits por profundidad de cadena.