HotStuff: de cero a estado del arte
Artículo 43 de 47
91%
completado al llegar aquí
Sistemas distribuidosNota de investigación12 min de lectura
ResilientDB: El motor BFT universitario que escaló a la industria
Cómo ResilientDB combina un pipeline multihilo de réplicas con GeoBFT: clústeres que ejecutan PBFT local y comparten decisiones certificadas entre regiones.
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.
Estudio de ResilientDB, el fabric de blockchain permisionado de Gupta, Rahnama, Hellings y Sadoghi (PVLDB 2020): por qué su arquitectura de réplica segmentada en etapas importa tanto como el protocolo, y cómo GeoBFT reparte el consenso en clústeres geográficos que intercambian decisiones certificadas.
- PBFT de 1999 y sus tres pasos de confirmación (pbft-1999-tres-pasos-confirmacion)
- Quórums en acción (quorums-en-accion-mayorias-honestas)
Detente cuando puedas explicar las etapas por las que pasa una solicitud dentro de una réplica de ResilientDB y las cuatro piezas de una ronda de GeoBFT: replicación local, compartición global, ordenamiento y cambio de vista remoto.
Glosario de Notación Matemática y Criptográfica
Cantidad de réplicas maliciosas o con fallas arbitrarias que tolera el sistema.
n = 3f + 1Ruta mental de ResilientDB
1. Réplica segmentada
Etapas especializadas
2. Consenso local
PBFT dentro de cada clúster
3. Compartición global
Certificados entre clústeres
4. Orden determinista
Ejecución por rondas
Decodificador Didáctico de Conceptos BFT
En palabras simples: Una federación de oficinas regionales: cada oficina vota sus asuntos internamente y luego envía a las demás un acta firmada por la mayoría local, en lugar de que cada empleado llame por teléfono a todos los empleados del mundo.
Detalle técnico: Protocolo consciente de la topología: PBFT dentro de cada clúster y difusión de certificados de commit entre clústeres.
En palabras simples: Una cocina con estaciones: mientras una estación recibe pedidos, otra arma bandejas y otra cocina, de modo que ningún pedido espera a que el anterior salga por la puerta.
Detalle técnico: Hilos dedicados a cada etapa del procesamiento, conectados por colas, para que red, consenso y ejecución trabajen en paralelo.
En esta serie hemos tratado los protocolos de consenso como algoritmos: fases, quórums, certificados y reglas de bloqueo. Pero un protocolo correcto puede rendir muy poco si la réplica que lo ejecuta procesa cada solicitud de principio a fin antes de mirar la siguiente. ResilientDB nació en ese cruce entre algoritmo e implementación.
El trabajo de Suyash Gupta, Sajjad Rahnama, Jelle Hellings y Mohammad Sadoghi, publicado en PVLDB en 2020, presenta ResilientDB como un fabric de blockchain permisionado tolerante a fallas bizantinas y, dentro de él, el protocolo GeoBFT para despliegues repartidos por el mundo. [1] El proyecto nació en un laboratorio de UC Davis y más tarde siguió como código abierto en el ecosistema de la Apache Software Foundation; aquí nos centramos en lo que documenta el paper, no en el estado actual del repositorio.
El problema: PBFT cuando las réplicas están en continentes distintos
PBFT ordena solicitudes con un primario y tres fases. Tras el pre-prepare del primario, las fases prepare y commit son difusiones de todas las réplicas a todas, y una réplica considera una solicitud comprometida cuando reúne mensajes commit coincidentes de un comité de réplicas. [2] Ese patrón cuesta un número cuadrático de mensajes por decisión.
En una sola región ese coste se tolera. Cuando las réplicas están en varios continentes, casi todos esos mensajes cruzan enlaces de área amplia, con más latencia y menos ancho de banda que una red local. ResilientDB parte de esa observación: un protocolo que ignora la topología paga el precio más caro de la red en cada fase. [1]
HotStuff atacó el coste cuadrático por otra vía: todas las réplicas hablan con el líder, que agrega votos en un QC, con lo que el camino normal y el cambio de vista tienen complejidad lineal en autenticadores. [3] GeoBFT elige otra palanca: en lugar de reducir los mensajes por réplica, decide qué mensajes deben viajar lejos y cuáles pueden quedarse en casa. [1]
Dentro de una réplica: un pipeline de etapas especializadas
Antes de distribuir el consenso entre regiones, el paper insiste en que la propia réplica debe estar bien construida. ResilientDB organiza el trabajo de cada réplica como un pipeline multihilo: distintos hilos se ocupan de etapas distintas y se pasan el trabajo mediante colas, de forma que la red, el consenso y la ejecución avanzan en paralelo sobre solicitudes diferentes. [1]
Flujo visual
Etapas de una solicitud dentro de una réplica de ResilientDB
Recorramos esas etapas en prosa. Primero, unos hilos de entrada reciben mensajes de la red, tanto solicitudes de clientes como mensajes de protocolo de otras réplicas, y los colocan en colas para las etapas siguientes. En el primario, otra etapa agrupa solicitudes de clientes en lotes, porque consensuar un lote amortiza el coste de cada ronda entre muchas transacciones. [1]
Después, la etapa de consenso procesa las fases del protocolo: valida mensajes, cuenta votos y detecta cuándo un lote alcanzó su certificado. Una vez comprometido, el lote pasa a la etapa de ejecución, que aplica las transacciones en el orden acordado; ese orden debe respetarse aunque los lotes terminen el consenso en desorden. Finalmente, unos hilos de salida envían respuestas a los clientes y mensajes a las demás réplicas. En la implementación de GeoBFT que describe el paper, el primario tiene un hilo de entrada dedicado a clientes, cada réplica tiene dos hilos de entrada para el resto de mensajes y dos de salida, y el orden y la ejecución los llevan los hilos worker, execute y certify. [1]
La idea de fondo es clásica en sistemas: si cada etapa tiene su propio hilo, el rendimiento queda limitado por la etapa más lenta y no por la suma de todas. Esto es una intuición de ingeniería, no un teorema; los cuellos de botella reales dependen de la verificación criptográfica, del tamaño de lote y de la red, y el paper los estudia de forma experimental. [1]
GeoBFT: consenso local, certificados compartidos
GeoBFT agrupa las réplicas en clústeres, típicamente uno por región. Cada clúster tiene su propio primario y tolera hasta réplicas bizantinas internas, con la misma aritmética de quórums que PBFT. [1] [2] Las rondas de GeoBFT tienen cuatro piezas.
Replicación local. En cada ronda, cada clúster ejecuta PBFT internamente sobre una solicitud o lote de sus clientes. El resultado no es solo un acuerdo local, sino un certificado de commit: mensajes commit firmados por réplicas del clúster, que cualquier tercero puede verificar. [1] Es el mismo papel que juega un QC en HotStuff: un objeto transferible que prueba que un quórum respaldó una decisión. [3]
Compartición global. El primario de cada clúster envía la decisión y su certificado a réplicas de cada clúster remoto. Como a lo sumo réplicas de ese clúster remoto son bizantinas, al menos una receptora es correcta. [1] El número de mensajes que cruzan regiones crece con el número de clústeres y con , no con el cuadrado del total de réplicas.
Compartición local. Cada réplica que recibe un certificado remoto válido lo difunde dentro de su propio clúster. Esos mensajes viajan por la red local, que es la barata. Así todas las réplicas correctas terminan con la decisión certificada de cada clúster sin que cada una hable con todas las del mundo. [1]
Ordenamiento y ejecución. Cuando una réplica tiene las decisiones certificadas de todos los clústeres para la ronda, las ejecuta en un orden determinista fijado de antemano entre clústeres. Como el orden es común y cada decisión está certificada, todas las réplicas correctas aplican la misma secuencia. [1]
Cuando un clúster no entrega: el cambio de vista remoto
El punto delicado es un primario bizantino que se calla ante el resto del mundo. Dentro de su clúster puede comportarse bien y, sin embargo, no enviar el certificado a los clústeres remotos. Las réplicas remotas no pueden reemplazar a un primario que no pertenece a su clúster usando solo el cambio de vista local de PBFT. [2]
GeoBFT añade un cambio de vista remoto. Si las réplicas de un clúster no reciben a tiempo la decisión de otro clúster, lo detectan y se lo hacen saber a las réplicas de ese clúster. Las réplicas del clúster afectado pueden entonces reemplazar a su primario mediante su propio cambio de vista. [1] Igual que en PBFT y en HotStuff, la liveness depende de que la red acabe comportándose de forma suficientemente síncrona para que los temporizadores distingan un primario lento de uno que falla. [2] [3]
La seguridad no se apoya en esos temporizadores. Una decisión entra al orden global solo con un certificado de commits de su clúster, y dentro de cada clúster rige la intersección de quórums de PBFT. [1] [2] Hay un supuesto adicional que conviene leer con cuidado: la tolerancia se define por clúster, así que un clúster con más de réplicas bizantinas rompe las garantías aunque el sistema en conjunto tenga muchas réplicas correctas.
Qué aprende un lector de HotStuff de ResilientDB
La comparación útil no es "cuál gana", sino qué recurso optimiza cada diseño. HotStuff reduce la complejidad de comunicación por decisión con un líder que agrega votos en QCs y encadena fases. [3] GeoBFT acepta el patrón de PBFT dentro de cada clúster y reduce el tráfico de larga distancia, además de permitir que varios clústeres propongan en paralelo en cada ronda en lugar de depender de un único primario global. [1]
La evaluación del paper compara GeoBFT, dentro del mismo fabric, con otros protocolos, entre ellos PBFT y HotStuff, en despliegues repartidos por varias regiones. [1] Las cifras concretas dependen de su configuración experimental, así que no conviene trasladarlas como promesa a otro despliegue. La lección transferible es metodológica: comparar protocolos sobre la misma implementación, con el mismo pipeline y la misma criptografía, separa el efecto del algoritmo del efecto de la ingeniería.
Qué decisión de arquitectura ilumina ResilientDB
Un consorcio con réplicas en varias regiones paga latencia de área amplia en cada fase si usa un protocolo que trata a todas las réplicas como vecinas.
Agrupar réplicas por región, decidir localmente y compartir solo decisiones certificadas reduce los mensajes que cruzan continentes, a cambio de una tolerancia a fallas definida por clúster.
Checklist mental de ResilientDB
4 de 4 revisados
Bibliografía académica
- [1]
S. Gupta, S. Rahnama, J. Hellings, and M. Sadoghi, "ResilientDB: Global Scale Resilient Blockchain Fabric," PVLDB, vol. 13, no. 6, pp. 868-883, 2020, doi: 10.14778/3380750.3380757
Fuente primaria para la arquitectura y evaluación del fabric BFT ResilientDB y GeoBFT.
- [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
Si quieres repasar las tres fases que GeoBFT reutiliza dentro de cada clúster, vuelve a PBFT de 1999 y sus tres pasos. Para el enfoque alternativo de reducir comunicación con un líder que agrega votos, sigue con QC, highQC y three-chain en HotStuff.
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 arquitectura de Workers en Narwhal: Desacoplar propagación y orden
Cómo Narwhal divide cada validador en un primary que certifica headers con digests y varios workers que difunden batches, y por qué eso escala el mempool.
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.
BFT en consorcios bancarios vs. redes públicas: El dilema del control de identidad
Consorcio permisionado o red abierta: quién certifica identidades, quién ordena, por qué abrir la membresía exige un costo y qué aporta execute-order-validate.
El concepto de GST: El momento mágico en el que la tormenta de red cesa
Qué es GST en el modelo DLS de 1988: safety en toda ejecución, liveness tras la estabilización y las dos variantes, con Δ desconocida o válida tras GST.