HotStuff: de cero a estado del arte

Artículo 34 de 47

72%

completado al llegar aquí

Sistemas distribuidosNota de investigación11 min de lectura

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.

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.

En 1 Minuto

Comprende la arquitectura Primary/Worker de Narwhal (Danezis et al.): los workers difunden y almacenan batches de transacciones con sus pares, mientras el primary solo maneja digests, headers y certificados. Esa división permite escalar el throughput añadiendo máquinas.

Prerrequisitos
  • El cuello de botella de la doble transmisión (cuello-botella-doble-transmision-datos-lideres)
  • Narwhal y Bullshark: separación de Mempool y Consenso DAG (narwhal-dag-mempool-hotstuff)
Cuándo Detenerte

Detente cuando puedas explicar qué viaja entre workers, qué viaja entre primaries y por qué un certificado de 2f + 1 firmas sobre un header basta para garantizar que los batches referenciados siguen disponibles.

Glosario Rápido de Notación

Glosario de Notación Matemática y Criptográfica

f— Número máximo de fallas bizantinas

Cantidad de réplicas maliciosas o con fallas arbitrarias que tolera el sistema.

Ejemplo: n = 3f + 1
Haz clic en un símbolo para desplegar su definición formal y su aplicación en el protocolo.
Mapa conceptual

Ruta mental de la Arquitectura Primary/Worker en Narwhal

  1. Ingesta en workers

    Clientes hacia workers

  2. Batches entre pares

    Worker con worker

  3. Digests al primary

    Solo identificadores

  4. Header y certificado

    Primary con primary

El escalado horizontal de la capa de mempool mediante división de funciones.
Explicación Didáctica

Decodificador Didáctico de Conceptos BFT

El proceso Primary

En palabras simples: El jefe de obra que no carga ladrillos: recibe los remitos de lo que ya llegó al almacén, firma la planilla de la jornada y la encadena con las planillas firmadas del día anterior.

Detalle técnico: Construye un header por ronda con digests de batches y referencias a certificados de la ronda anterior; recolecta firmas de otros primaries hasta formar un certificado.

Los procesos Workers

En palabras simples: La flota de camiones: llevan el material pesado a los almacenes de las otras obras y devuelven a su jefe solo el número de remito.

Detalle técnico: Reciben transacciones, forman batches, los intercambian con los workers pares de otros validadores y reportan digests a su primary.

Traducción de lenguaje formal a analogías intuitivas del mundo real.

En Narwhal y Bullshark vimos la idea general: separar la difusión confiable de transacciones del protocolo que decide el orden. En el cuello de botella de la doble transmisión vimos por qué esa separación importa: si el líder transporta todo el payload, su ancho de banda limita a todo el sistema.

Este artículo baja un nivel. Narwhal no solo separa mempool y consenso como capas lógicas; también divide cada validador en un proceso primary y varios procesos workers, que pueden correr en máquinas distintas. Esa decisión de arquitectura es la que permite hablar de escalado horizontal del mempool.

El cuello de botella del validador monolítico

En un protocolo con líder como HotStuff, el líder de cada vista propone un bloque que contiene los comandos de clientes y lo envía a todas las réplicas. Ese diseño hace muy limpio el razonamiento de safety, pero concentra dos trabajos en la misma máquina: decidir el orden y mover los datos.

Pensemos qué hace un validador monolítico en cada paso. Recibe transacciones de clientes, las valida, las retransmite a sus pares, participa en el consenso y persiste el resultado. Todas esas tareas compiten por la misma tarjeta de red, la misma CPU y el mismo disco. Cuando la carga crece, el validador no puede crecer más allá de lo que una sola máquina soporta.

Los autores de Narwhal parten de una observación concreta: en los sistemas BFT de su época, difundir transacciones y ordenarlas estaban mezclados, y el costo de mover datos dominaba el rendimiento. Su propuesta es que el consenso trabaje sobre referencias pequeñas, mientras el volumen de datos circula por otro camino que se puede paralelizar.

Figura 1

Arquitectura interna de un validador Narwhal: Primary y Nodos Workers

Fuentes:

[1]
Arquitectura interna de un validador Narwhal: Primary y Nodos Workers
Cómo leer esta figura

El diagrama muestra un validador i con un primary arriba y tres workers debajo. Los clientes envían transacciones a los tres workers. Cada worker intercambia batches con los workers de otros validadores. Un arco etiquetado solo digests sube de los workers al primary, que ordena el DAG con certificados.

Visual original de TrautsLab. Un validador Narwhal con un primary y varios workers: los clientes envían transacciones a los workers, los workers intercambian batches con los workers de otros validadores y solo entregan digests al primary.

Qué hace un worker: batches, pares y digests

El worker es el proceso que toca las transacciones. Recibe los envíos de los clientes, los agrupa en batches y envía cada batch a los workers correspondientes de los demás validadores. Un worker de un validador conversa con su par en cada uno de los otros validadores; no necesita hablar con los primaries ajenos.

Cuando un worker recibe un batch de un par, lo almacena. Cuando un worker termina de difundir un batch propio, entrega a su primary solo el digest, es decir, el hash que identifica ese batch. El primary nunca recibe el contenido de las transacciones: trabaja con identificadores de tamaño fijo.

Este reparto tiene una consecuencia práctica fácil de pasar por alto. El tamaño de los mensajes que ve el primary no depende del tamaño de las transacciones, sino de cuántos digests entran en su header. Los bytes pesados viajan en paralelo por varios pares de workers, cada uno con su propia conexión.

Ojo con una confusión frecuente: el worker no "certifica" nada por sí mismo en el modelo del paper. La garantía de disponibilidad que el consenso usa se construye un nivel más arriba, sobre los headers de los primaries. El worker aporta el almacenamiento que hace que esa garantía sea verdadera.

Qué hace el primary: headers, votos y certificados

El primary es el proceso que construye el DAG. En cada ronda, el primary de un validador arma un header que contiene los digests reportados por sus workers y referencias a al menos 2f+12f + 1 certificados de la ronda anterior. Luego lo difunde a los primaries de los demás validadores.

Un primary correcto firma el header de otro validador solo si es válido: debe ser el primero que recibe de ese autor en esa ronda y debe apoyarse en certificados de la ronda anterior. Además, antes de votar comprueba que sus propios workers ya tienen los batches cuyos digests aparecen en el header. Cuando el autor reúne 2f+12f + 1 firmas, el header se convierte en un certificado de disponibilidad, que podrá ser referenciado en la ronda siguiente.

La idea se parece a un QC de HotStuff, porque ambos son conjuntos de 2f+12f + 1 firmas sobre un mismo objeto. La diferencia está en lo que prometen: un QC de HotStuff es un paso hacia el commit de un bloque, mientras que un certificado de Narwhal promete que el header y sus datos están disponibles, sin decir nada todavía sobre el orden.

Invariante

Disponibilidad derivada del certificado

Si un header de Narwhal tiene un certificado de firmas y a lo sumo f validadores son bizantinos, al menos firmantes son correctos. Como un primary correcto solo firma después de que sus workers almacenan los batches referenciados, esos datos pueden recuperarse de algún validador correcto.
Bosquejo de Demostración: Conteo directo: de firmantes, a lo sumo f son bizantinos, de modo que quedan al menos correctos que cumplieron la regla de almacenamiento antes de firmar.

Por qué la separación escala horizontalmente

Con esta división, aumentar la capacidad de difusión ya no exige una máquina más grande. Un validador puede ejecutar más workers, cada uno en su propia máquina, y repartir entre ellos el tráfico de clientes y de batches. El primary sigue haciendo el mismo trabajo de metadatos: más workers significan más digests por header, no más bytes de transacciones atravesando el primary.

La evaluación del paper muestra exactamente ese efecto: al añadir workers por validador, el throughput crece de forma aproximadamente lineal sin un aumento apreciable de latencia en sus experimentos. Conviene leer ese resultado con su contexto: es una medición de una implementación concreta, en un despliegue concreto, y no un teorema que valga para cualquier red o cualquier tamaño de comité.

La misma arquitectura sirve de base a otros protocolos. Bullshark se presenta como un protocolo de consenso sobre un DAG estilo Narwhal y hereda de esa capa la difusión escalable de datos. Esa reutilización es la prueba más clara de que la división primary/worker pertenece al mempool, no a un algoritmo de orden en particular.

Impacto de Negocio & Finanzas

Qué cambia al operar un validador Primary/Worker

Problema Comercial / Operacional

Un validador monolítico solo crece verticalmente: cuando la red o el disco se saturan, la única salida es una máquina más grande.

Solución del Paper (Insight Técnico)

Separar workers de primary permite añadir máquinas para la difusión de datos sin tocar la lógica que construye el DAG ni el consenso que lo ordena.

Impacto para el Producto / Negocio: La capacidad de ingesta se planifica por número de workers, pero cada worker añade otra máquina que monitorear, asegurar y mantener en línea.
PrimaryUno por validadorheaders, votos y certificados
WorkersVarios por validadorbatches y almacenamiento
Del worker al primaryDigestsnunca el payload completo
Certificado2f + 1 firmasdisponibilidad, no orden

Lo que la división no resuelve

La separación no es gratis. Un validador pasa a ser un pequeño sistema distribuido interno: si un worker se cae, el primary no puede votar headers ajenos que referencian batches que ese worker debía guardar, porque la regla de almacenamiento previo no se cumple. La disponibilidad del validador depende ahora de varias máquinas, no de una.

Tampoco resuelve el orden. Narwhal entrega un DAG de certificados con buenas propiedades de disponibilidad y causalidad, pero el orden total lo decide otro protocolo encima: Tusk en el paper original, o un protocolo con líder como HotStuff ejecutado sobre los certificados. Bullshark es otra opción para esa capa superior, con un camino rápido bajo sincronía parcial.

Finalmente, la ganancia depende de que el cuello de botella fuera realmente la difusión. Si el costo dominante está en ejecutar transacciones o en verificar firmas, añadir workers no lo elimina. La pregunta útil antes de escalar no es "¿cuántos workers?", sino "¿qué recurso se satura primero?".

Primary / Worker Split

Checklist mental de Narwhal Workers

4 de 4 revisados

Principios clave del escalado horizontal de mempool.
Referencias

Bibliografía académica

Formato IEEENumerado para ingeniería, sistemas y protocolos.
  1. [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

    PaperID: NARWHAL-TUSK-2021Abrir fuente (abre en otra pestaña)

    Arquitectura primary/worker, headers con digests, certificados de disponibilidad y evaluación del escalado con workers.

  2. [2]

    A. Spiegelman, N. Giridharan, A. Sonnino, and L. Kokoris-Kogias, "Bullshark," arXiv:2201.05677, 2022.

    Consenso sobre un DAG estilo Narwhal que reutiliza su capa de difusión.

  3. [3]

    M. Yin, D. Malkhi, M. K. Reiter, G. G. Gueta, and I. Abraham, "HotStuff: BFT Consensus in the Lens of Blockchain," PODC, 2019.

    Protocolo con líder que propone bloques completos y certifica con QCs de n - f votos.

Fuentes primarias, papers seminales y especificaciones técnicas citadas en esta investigación.

Siguiente lectura

Con la división primary/worker clara, el siguiente paso es mirar cómo los certificados forman un grafo por rondas y cómo un protocolo ordena ese grafo sin mensajes extra: Tusk, consenso asíncrono sin timeouts. Si quieres repasar el problema que motiva todo esto, vuelve a el cuello de botella de la doble transmisió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.

Sigue leyendo

Ideas conectadas con este artículo

Una ruta corta para continuar sin abrir veinte pestañas y perder el hilo.

Los comentarios se cargan al final de la lectura para no meter peso antes de tiempo.