BFT frontier: notas de campo

Artículo 2 de 9

22%

completado al llegar aquí

Sistemas distribuidosNota de investigación14 min de lectura

Shoal: pipelining de anclas y reputación de líderes sobre DAG-BFT

Cómo Shoal añade a Bullshark un ancla por ronda y una reputación de líderes leída del DAG para bajar la latencia y no esperar timeouts de líderes caídos.

En 1 Minuto

Comprende cómo Shoal (Spiegelman, Arun, Gelashvili y Li, 2023) envuelve un protocolo DAG-BFT tipo Bullshark para tener un ancla en cada ronda (pipelining) y elegir anclas según una reputación calculada sobre la historia confirmada del DAG, reduciendo la latencia y las esperas por timeout.

Prerrequisitos
  • Narwhal como mempool DAG (narwhal-dag-mempool-hotstuff)
  • Tusk: consenso asíncrono sobre el DAG (tusk-consenso-asincrono-sin-timeouts)
Cuándo Detenerte

Detente cuando puedas explicar por qué todas las réplicas correctas coinciden en dónde empieza cada instancia de Shoal y en qué reputación tiene cada validador, sin intercambiar un solo mensaje adicional.

Glosario Rápido de Notación

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

v— Vista (View / Round)

Número de vista o ronda actual. Cada vista tiene un único líder designado.

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

Ruta mental de Shoal sobre un DAG tipo Bullshark

  1. 1. Bullshark como base

    Anclas en rondas alternas

  2. 2. Pipelining por instancias

    Un ancla por ronda

  3. 3. Reputación de líderes

    Calculada desde el DAG

  4. 4. Menos esperas

    Progreso al ritmo de la red

Dos mejoras que se apoyan en el mismo hecho: todas las réplicas correctas coinciden en el prefijo ordenado del DAG.
Explicación Didáctica

Decodificador Didáctico de Conceptos BFT

Shoal como envoltorio de Bullshark

En palabras simples: Una línea de metro que, en lugar de esperar a que un tren termine su recorrido completo para despachar el siguiente, despacha uno en cada estación usando la misma vía.

Detalle técnico: Shoal no cambia la regla de confirmación del protocolo base: ejecuta instancias sucesivas de él sobre el mismo DAG y usa el ancla ordenada de cada instancia como punto de arranque de la siguiente.

Reputación de líderes basada en el DAG

En palabras simples: Un entrenador que decide la alineación revisando el acta oficial de los partidos ya jugados, que es idéntica para todo el cuerpo técnico, y no las impresiones de cada asistente.

Detalle técnico: Las puntuaciones se calculan sobre la parte del DAG que ya quedó ordenada, por lo que el resultado es determinista e idéntico en todas las réplicas correctas.

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

Los protocolos de consenso sobre un DAG separan dos trabajos. Narwhal se encarga de difundir y certificar los datos: en cada ronda cada validador emite un vértice que referencia al menos n−fn - f vértices de la ronda anterior, y el resultado es un grafo dirigido acíclico que todas las réplicas correctas terminan viendo de forma consistente. Encima de ese grafo, un protocolo como Bullshark decide el orden total sin enviar mensajes propios: cada réplica interpreta su copia local del DAG y llega al mismo orden que las demás.

Ese diseño es muy eficiente en throughput, pero deja dos fuentes de latencia que Shoal ataca directamente: no todas las rondas tienen un ancla y, cuando el líder de un ancla está caído o es lento, el protocolo puede quedarse esperando un timeout antes de avanzar. Shoal, propuesto por Spiegelman, Arun, Gelashvili y Li en 2023, es un marco que se coloca por encima de cualquier protocolo DAG-BFT basado en Narwhal y añade dos mecanismos: pipelining y reputación de líderes.

Dónde pierde tiempo Bullshark

En la versión parcialmente síncrona de Bullshark, las rondas pares tienen un líder predefinido cuyo vértice es el ancla de esa ronda, y los vértices de la ronda impar siguiente funcionan como votos: si al menos f+1f + 1 vértices de la ronda siguiente referencian al ancla, una réplica la confirma. Al confirmar un ancla, la réplica revisa las anclas anteriores todavía no ordenadas y ordena primero las que tienen un camino hasta la nueva; después ordena de forma determinista la historia causal de cada ancla.

La consecuencia es que un vértice cualquiera, que no es ancla, no queda ordenado por sí mismo: tiene que esperar a que alguna ancla posterior lo incluya en su historia causal y a que esa ancla reciba sus votos. Como solo hay ancla en una de cada dos rondas, los vértices que no son ancla pagan rondas extra de espera respecto de las propias anclas.

El segundo problema aparece con fallas. Para garantizar liveness bajo sincronía parcial, Bullshark hace que las réplicas esperen el ancla de la ronda, o los votos sobre ella, hasta que vence un timeout. Si el líder asignado está caído, cada vez que le toque ser ancla la red entera pierde el tiempo del timeout. Con un calendario de líderes fijo, como un round-robin, un validador caído vuelve a provocar esa espera periódicamente. Por qué un valor fijo de timeout es un compromiso incómodo se discute en Por qué no timeouts fijos.

Flujo visual

Cómo Shoal reorganiza el trabajo sobre el mismo DAG

Ninguno de los pasos añade mensajes de red: todo se deriva de la copia local del DAG.
  1. Narwhal construye y certifica el DAG ronda a ronda
  2. La instancia actual de Bullshark ordena su primera ancla
  3. Las réplicas recalculan la reputación con la historia ya ordenada
  4. Una nueva instancia empieza en la ronda siguiente con el nuevo calendario de anclas
  5. El ciclo se repite y, en el caso favorable, hay un ancla ordenada por ronda

Pipelining: una instancia nueva en cada ronda

La idea central de Shoal es tratar al protocolo base como una caja negra que se puede reiniciar. Una instancia de Bullshark empieza en cierta ronda del DAG y corre hasta ordenar su primera ancla. En ese momento la instancia termina y comienza otra nueva, que interpreta el mismo DAG a partir de la ronda siguiente a esa ancla. No se crea un DAG nuevo ni se detiene la difusión de Narwhal: solo cambia la forma en que las réplicas leen lo que ya tienen.

Si todo va bien, la primera ancla de cada instancia se ordena en la primera ronda de esa instancia, y la instancia siguiente empieza en la ronda inmediatamente posterior. El efecto es que, en el caso favorable, aparece un ancla en cada ronda en lugar de una cada dos. Para los vértices que no son ancla esto importa mucho: la próxima ancla que puede incluirlos en su historia causal está más cerca, y por eso esperan menos.

El punto delicado es la seguridad del cambio de instancia. Si dos réplicas correctas creyeran que la instancia siguiente empieza en rondas distintas, interpretarían el DAG de forma distinta y podrían ordenar cosas en otro orden. Shoal evita ese riesgo apoyándose en la propiedad que ya garantiza el protocolo base: todas las réplicas correctas ordenan las mismas anclas en el mismo orden. Como la primera ancla ordenada de cada instancia es la misma para todas, también coincide la ronda donde arranca la siguiente, y el cambio de instancia no requiere comunicación.

Invariante

Acuerdo sobre el punto de arranque de cada instancia

Si todas las réplicas correctas ordenan la misma primera ancla en la instancia k, entonces todas inician la instancia k + 1 en la misma ronda del DAG y la interpretan con el mismo calendario de líderes.
Bosquejo de Demostración: El protocolo base garantiza que las anclas ordenadas son idénticas en todas las réplicas correctas. Shoal define el inicio de la instancia siguiente y su calendario únicamente en función de esa ancla y de la historia causal ya ordenada, que también es idéntica, por lo que no queda ningún dato local que pueda divergir.

Reputación de líderes calculada desde la historia causal

Pipelining reduce la espera en el caso favorable, pero no resuelve el líder caído: si el calendario sigue eligiendo a un validador que no responde, su ronda vuelve a costar un timeout. La segunda pieza de Shoal es asignar las anclas según una reputación que favorece a los validadores que han mostrado actividad reciente en el DAG.

La idea de reputación no nace con Shoal. DiemBFT v4, un descendiente de HotStuff diseñado para producción, ya describe un mecanismo de reputación para elegir líderes a partir de información confirmada, de modo que los validadores que no participan dejen de ser seleccionados. El contexto productivo de esa familia se resume en DiemBFT, Jolteon y Ditto en producción.

La dificultad en un DAG es la misma que en un protocolo con líder: todas las réplicas correctas deben estar de acuerdo en quién es el ancla de cada ronda. Si cada réplica puntuara a los validadores con lo que observa localmente, por ejemplo latencias medidas o vértices recibidos tarde, dos réplicas podrían asignar líderes distintos a la misma ronda y romper la interpretación común del DAG. Shoal resuelve ese acuerdo calculando la reputación solo sobre la historia causal que ya fue ordenada, que es idéntica en todas las réplicas correctas.

Aquí es donde las dos mejoras encajan. El momento natural para actualizar el calendario es justamente el cambio de instancia: cuando se ordena la primera ancla de una instancia, cada réplica actualiza las puntuaciones con la nueva historia ordenada y la instancia siguiente arranca con un calendario de anclas que refleja esas puntuaciones. No hace falta un subprotocolo de votación ni mensajes de medición: el DAG ya contiene la evidencia de quién participó, porque los vértices de cada validador y sus referencias quedan registrados en el grafo. Para una explicación de por qué el DAG funciona como un registro de causalidad, ver El DAG como máquina del tiempo.

Timeouts que casi nunca vencen

Shoal no elimina los timeouts del modelo: bajo sincronía parcial siguen siendo la red de seguridad que garantiza liveness. Lo que cambia es cuántas veces llegan a vencer. Los autores llaman a esta propiedad prevalent responsiveness: el protocolo avanza a la velocidad real de la red en casi todos los escenarios, y esperar un timeout queda reservado a casos poco comunes.

El razonamiento es directo. Un validador caído deja de producir vértices, así que deja de aparecer en la historia ordenada y su reputación cae. Tras la siguiente actualización del calendario deja de ser elegido como ancla, y las rondas que antes habrían esperado su timeout pasan a tener un ancla activa que se ordena en cuanto llegan sus votos. El costo de una falla se paga, en esencia, mientras la reputación todavía no la refleja, en lugar de pagarse cada vez que el validador caído vuelve a tocar en un round-robin.

Esto conecta con una tensión clásica que este curso recorre desde HotStuff: los protocolos parcialmente síncronos necesitan timeouts para liveness, pero cada timeout que vence es latencia perdida. Tusk evita los timeouts usando aleatoriedad asíncrona; Shoal se queda en el modelo parcialmente síncrono y reduce la frecuencia con que los timeouts vencen.

Impacto de Negocio & Finanzas

Qué cambia para quien opera un comité DAG-BFT

Problema Comercial / Operacional

Con un calendario fijo de líderes, un validador caído o mal conectado vuelve a costar un timeout cada vez que le toca ser ancla.

Solución del Paper (Insight Técnico)

Shoal deriva el calendario de la historia ordenada del DAG, de modo que los validadores inactivos dejan de ser anclas sin coordinación adicional.

Impacto para el Producto / Negocio: Latencia más estable frente a nodos degradados, sin cambiar la capa de difusión de datos ni la regla de confirmación del protocolo base.
AnclasUna por rondaen el caso favorable, con pipelining
Mensajes extraNingunoreputación y cambio de instancia son locales
Protocolo baseCaja negracualquier DAG-BFT basado en Narwhal
TimeoutsExcepcionalesprevalent responsiveness

Límites y lectura crítica

Conviene leer Shoal con precisión. Primero, no cambia el modelo de fallas ni el tamaño del comité: hereda n=3f+1n = 3f + 1, la difusión certificada de Narwhal y las garantías de safety del protocolo base. Segundo, la ganancia del pipelining depende del caso favorable: si la primera ancla de una instancia no se confirma, la instancia necesita más rondas para ordenar una, igual que ocurriría en Bullshark.

Tercero, la reputación reacciona a la historia ya ordenada, así que hay un retardo entre que un validador falla y que el calendario lo refleja. Un validador que alterna entre responder y no responder puede degradar la latencia mientras su puntuación oscila. Cuarto, la cifra concreta de mejora depende del despliegue y de la carga; el paper reporta su propia evaluación sobre un protocolo base concreto, y esas mediciones no deben trasladarse sin más a otro sistema.

Finalmente, Shoal sigue pagando el costo estructural de un DAG certificado: cada vértice pasa por la difusión fiable de Narwhal antes de poder ser referenciado. Reducir ese costo exige otra línea de diseño, la de los DAG sin certificación, que se comenta en HotStuff-2, la frontera DAG-BFT y Twins.

Shoal Mechanics

Checklist mental de Shoal

5 de 5 revisados

Preguntas para verificar que el mecanismo quedó claro.
Referencias

Bibliografía académica

Formato IEEENumerado para ingeniería, sistemas y protocolos.
  1. [1]

    A. Spiegelman, B. Arun, R. Gelashvili, and Z. Li, "Shoal: Improving DAG-BFT Latency And Robustness," arXiv:2306.03058, 2023.

    Fuente primaria para pipelining por instancias, reputación de líderes sobre la historia ordenada y prevalent responsiveness.

  2. [2]

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

    Protocolo base: anclas en rondas pares, votos implícitos en el DAG, ordenamiento de anclas previas y timeouts para liveness.

  3. [3]

    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)

    Construcción del DAG certificado por rondas y la alternativa asíncrona de Tusk.

  4. [4]

    The Diem Team, "DiemBFT v4: State Machine Replication in the Diem Blockchain," 2021.

    Technical reportID: DIEMBFT-V4-2021Abrir fuente (abre en otra pestaña)

    Antecedente de reputación de líderes en un descendiente productivo de HotStuff.

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

Siguiente lectura

Si quieres repasar cómo se construye el grafo que Shoal reinterpreta, vuelve a Narwhal como mempool DAG. Para comparar con la ruta que evita los timeouts mediante aleatoriedad, lee Tusk: consenso asíncrono sin timeouts, y para el panorama de la frontera DAG-BFT continúa con HotStuff-2, la frontera DAG-BFT y Twins.

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.