HotStuff: de cero a estado del arte
Artículo 35 de 47
74%
completado al llegar aquí
Sistemas distribuidosNota de investigación11 min de lectura
El Grafo Dirigido Acíclico (DAG) como una máquina del tiempo inmutable
Cómo el DAG por rondas de Narwhal enlaza cada vértice con 2f+1 certificados previos y por qué Tusk y Bullshark derivan el orden total sin mensajes extra.
Ruta HotStuff: 0/47
Comprende el DAG por rondas de los protocolos BFT modernos: cada vértice referencia al menos 2f + 1 vértices certificados de la ronda anterior, esas referencias fijan una historia causal, y protocolos como Tusk y Bullshark leen el orden total directamente del grafo.
- Narwhal y Bullshark: separación de Mempool y Consenso DAG (narwhal-dag-mempool-hotstuff)
- Quórums en acción: mayorías honestas (quorums-en-accion-mayorias-honestas)
Detente cuando puedas explicar qué es la historia causal de un vértice y por qué dos réplicas correctas que hacen commit del mismo ancla derivan el mismo orden sin intercambiar mensajes adicionales.
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 la Estructura DAG Causal
Referencias de ronda
De la ronda r a la r-1
Historia causal
Todo lo alcanzable hacia atrás
Anclas
Vértices de líder
Orden total
Sin mensajes extra
Decodificador Didáctico de Conceptos BFT
En palabras simples: Una pared de ladrillos por hileras: cada ladrillo nuevo se apoya sobre varios ladrillos de la hilera de abajo. No puedes cambiar un ladrillo inferior sin que dejen de encajar los de arriba.
Detalle técnico: Vértices (headers certificados) y aristas dirigidas (referencias por hash a vértices de la ronda anterior) sin ciclos, porque toda arista apunta a una ronda menor.
En palabras simples: Un árbol genealógico: conocer a una persona implica conocer a sus padres, abuelos y a todo su linaje hacia atrás.
Detalle técnico: Conjunto de vértices alcanzables siguiendo aristas desde un vértice dado. Es lo que un protocolo DAG ordena cuando hace commit de un ancla.
En Narwhal y Bullshark y en el cuello de botella de la doble transmisión vimos por qué los protocolos modernos separan la difusión de datos del orden. Este artículo mira la estructura que queda en medio: el grafo dirigido acíclico que Narwhal construye ronda a ronda.
La metáfora de la "máquina del tiempo" sirve si se usa con cuidado. El DAG no mide tiempo físico: registra quién había visto qué en el momento de emitir cada vértice. Esa relación de precedencia causal es justo la información que un protocolo de consenso necesita para ordenar, y por eso el orden puede leerse del grafo en lugar de votarse aparte.
La geometría de las rondas
Narwhal organiza el DAG en rondas. En cada ronda, el primary de cada validador emite como máximo un header que contiene digests de batches y referencias a al menos certificados de la ronda anterior. [1] Ese header se convierte en vértice del DAG cuando reúne un certificado de firmas.
Dos reglas dan forma al grafo. La primera es que un validador correcto firma a lo sumo un header por autor y por ronda, de modo que, aunque un autor bizantino emita dos headers distintos, solo uno de ellos puede certificarse. [1] La segunda es que un validador avanza a la ronda solo cuando tiene certificados de la ronda .
Un ejemplo pequeño ayuda a fijar los números. Con hay cuatro validadores, A, B, C y D. Cada certificado necesita tres firmas, y cada vértice de la ronda debe apuntar a por lo menos tres vértices certificados de la ronda . Si D está caído o lento, A, B y C pueden seguir avanzando entre ellos; el DAG sigue creciendo sin D, que más tarde puede ponerse al día descargando los certificados que se formaron mientras tanto.
La primera regla es la intersección de quórums de siempre: dos certificados para el mismo autor y la misma ronda necesitarían dos conjuntos de firmas que comparten al menos una réplica correcta, y esa réplica no firma dos veces. La segunda regla impide que un validador corra solo hacia rondas futuras: necesita que una mayoría calificada ya haya terminado la ronda actual.
Estructura de rondas y vínculos causales en un DAG de Narwhal
Fuentes:
[1]Cómo leer esta figura
El diagrama muestra cuatro validadores A, B, C y D con un vértice por ronda en las rondas r, r+1 y r+2. Cada vértice de la ronda r+1 tiene aristas hacia tres vértices de la ronda r, y cada vértice de r+2 hacia tres de r+1, que es 2f + 1 con f = 1.
Historia causal: por qué el pasado queda fijo
Llamemos historia causal de un vértice al conjunto de vértices alcanzables siguiendo sus aristas hacia atrás. Como las referencias son hashes de certificados, la historia causal de un vértice certificado queda determinada por el propio vértice. [1] Cambiar cualquier vértice antiguo cambiaría su hash, y las referencias que ya apuntan a él dejarían de coincidir.
Esto produce la propiedad que motiva la metáfora. Si dos réplicas correctas tienen el mismo vértice certificado , tienen exactamente la misma historia causal de , aunque hayan recibido los vértices en distinto orden y en distintos momentos. El DAG local de cada réplica puede ir más adelante o más atrás, pero lo que está "debajo" de un vértice compartido es idéntico para todas.
También explica por qué el grafo es acíclico sin esfuerzo: toda arista apunta de una ronda a una ronda menor, así que nunca se puede volver al punto de partida. No hace falta un algoritmo especial para detectar ciclos; la numeración de rondas los excluye por construcción.
Narwhal resume las garantías del grafo en propiedades como integridad, disponibilidad de bloques y causalidad: un certificado implica que su historia causal está disponible y que cualquier réplica correcta que lo acepte puede recuperarla. [1]
Historia causal compartida
Del grafo al orden: anclas y commit sin mensajes extra
Que todas las réplicas compartan historias causales no basta para ordenar. Falta elegir qué vértices sirven de puntos de corte. Los protocolos construidos sobre el DAG llaman a esos vértices líderes o anclas, y deciden su commit mirando únicamente la estructura del grafo. [2]
Tusk, el protocolo asíncrono presentado junto a Narwhal, agrupa rondas en olas y usa una moneda aleatoria común para elegir el líder de cada ola después de que el grafo de esa ola ya está construido. [1] Como el líder se revela tarde, el adversario no puede apuntar de antemano contra él. El commit depende de cuántos vértices de la ronda siguiente referencian al líder.
Bullshark conserva la misma interpretación local del DAG y añade un camino rápido para sincronía parcial: hay anclas predefinidas cada dos rondas, y un ancla se compromete cuando al menos vértices de la ronda siguiente la referencian. [2] El paper destaca que este consenso no envía mensajes propios: los "votos" son las aristas que el DAG ya contiene. [2]
Cuando una réplica compromete un ancla, primero revisa anclas anteriores no comprometidas que sean alcanzables desde ella y las ordena antes. Después ordena la historia causal de cada ancla, aún no entregada, con una regla determinista. [2] Por el lema anterior, dos réplicas que comprometen la misma secuencia de anclas producen la misma secuencia de vértices.
Lo que el DAG no regala
La frase "consenso sin mensajes" necesita su letra pequeña. No hay mensajes adicionales para votar, pero construir el DAG ya cuesta: cada vértice certificado requiere difundir un header y recolectar firmas. [1] El consenso es gratis solo porque su costo se pagó al construir el mempool.
Ese costo tiene un efecto en latencia. Certificar cada vértice añade viajes de red antes de que el vértice pueda ser referenciado. Mysticeti explora precisamente la alternativa de construir un DAG sin certificados explícitos por vértice para reducir la latencia de commit. [3] El precio es que las garantías que antes daba el certificado deben recuperarse con otras reglas de commit.
Por último, el DAG no impide que un adversario retrase mensajes. Con anclas predefinidas, un ancla que no llega a tiempo simplemente no se compromete en su ronda, y su contenido se ordena después a través de un ancla posterior si es alcanzable desde ella. [2] La historia queda fija; lo que el protocolo no promete es cuándo se vuelve definitiva.
Qué cambia al ordenar a partir de un DAG
En un protocolo con líder, cada bloque necesita su propia ronda de votos además de la difusión de datos.
En un DAG por rondas, las referencias entre vértices certificados funcionan como votos implícitos, de modo que el orden se deriva localmente.
Checklist mental del Grafo DAG
4 de 4 revisados
Bibliografía académica
- [1]
G. Danezis, L. Kokoris-Kogias, A. Sonnino, and A. Spiegelman, "Narwhal and Tusk: A DAG-based Mempool and Efficient BFT Consensus," in Proc. EuroSys, pp. 34-50, 2022, doi: 10.1145/3492321.3519594
DAG por rondas con referencias a 2f + 1 certificados, propiedades de causalidad y el consenso asíncrono Tusk.
- [2]
A. Spiegelman, N. Giridharan, A. Sonnino, and L. Kokoris-Kogias, "Bullshark," arXiv:2201.05677, 2022.
Anclas, regla de commit con f + 1 referencias y orden de historias causales sin mensajes adicionales.
- [3]
K. Babel et al., "Mysticeti: Reaching the Latency Limits with Uncertified DAGs," NDSS, 2025, doi: 10.14722/ndss.2025.240929
Alternativa con DAG sin certificados por vértice para reducir latencia.
Siguiente lectura
Para ver cómo la moneda aleatoria de Tusk convierte este grafo en consenso asíncrono, continúa con Tusk: consenso asíncrono sin timeouts. Si quieres repasar por qué firmas impiden certificar dos headers en conflicto, vuelve a Quórums en acción.
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.
Bullshark: El motor de consenso DAG parcialmente síncrono
Cómo Bullshark ordena el DAG de Narwhal con anclas predefinidas, confirma con f+1 votos en la ronda siguiente y por qué sus timeouts sufren con anclas lentas.
HotStuff-2 y frontera moderna: dos fases, Twins y DAG-BFT
Cierre de la serie HotStuff: HotStuff-2, pruebas Byzantine con Twins, Narwhal/Tusk/Bullshark y cómo leer el estado del arte sin mezclar linajes.
Narwhal: cuando el mempool se vuelve DAG
Por qué Narwhal no es simplemente otro consenso, cómo separa disponibilidad de datos y ordenamiento, y cómo se conecta con HotStuff/Tusk.