HotStuff: de cero a estado del arte

Artículo 24 de 47

51%

completado al llegar aquí

Sistemas distribuidosNota de investigación12 min de lectura

El Pacemaker en detalle: Coordinar relojes en el caos sin sobrecargar la red

Cómo el Pacemaker de HotStuff sincroniza vistas sin tocar safety: rotación de líderes, timeouts locales y certificados de timeout de 2f+1 en DiemBFT.

Ruta HotStuff: 0/47

En 1 Minuto

Comprende qué hace el Pacemaker de HotStuff y por qué vive separado del núcleo de safety: cómo rota líderes, cómo usa timeouts locales y cómo DiemBFT agrega 2f + 1 mensajes de timeout en un certificado que lleva a las réplicas a la misma ronda.

Prerrequisitos
  • Cambio de vista y Pacemaker en HotStuff (hotstuff-view-change-pacemaker)
  • Sincronía parcial y quórums (partial-synchrony-quorums-bft)
Cuándo Detenerte

Detente cuando puedas explicar por qué un error en el Pacemaker puede detener el progreso pero no crear dos commits en conflicto, y qué información transporta un certificado de timeout.

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 del Pacemaker

  1. Temporizador local

    Un reloj por vista

  2. Mensaje de timeout

    Abandono firmado

  3. Certificado de timeout

    2f + 1 firmas

  4. Líder correcto tras GST

    Progreso

La maquinaria de liveness, separada de las reglas de voto que protegen safety.
Explicación Didáctica

Decodificador Didáctico de Conceptos BFT

Pacemaker

En palabras simples: El moderador de una reunión: no decide qué se aprueba, solo cuándo se cambia de orador si el actual no habla.

Detalle técnico: Componente que lleva a las réplicas correctas a una vista común con un líder único durante el tiempo suficiente para que haya progreso después de GST.

Timeout Certificate (TC)

En palabras simples: Un acta firmada por una supermayoría que dice: 'el orador de esta ronda no cumplió, pasamos a la siguiente'.

Detalle técnico: Conjunto de 2f + 1 mensajes de timeout firmados para la misma ronda; prueba que la ronda terminó sin QC y transporta los highQC reportados.

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

En Cambio de vista y Pacemaker vimos la idea general: HotStuff separa las reglas que protegen safety del mecanismo que garantiza progreso. Este artículo baja un nivel. Queremos entender qué decisiones toma exactamente ese mecanismo, qué información necesita y por qué los descendientes de producción, como DiemBFT, le añadieron un objeto nuevo: el certificado de timeout.

La pregunta guía es sencilla. Las réplicas no comparten un reloj. Cada una mide el tiempo con su propio temporizador y ve los mensajes con retrasos distintos. ¿Cómo se ponen de acuerdo en cuándo abandonar a un líder sin que ese acuerdo se convierta en un consenso dentro del consenso?

Por qué separar safety de la sincronización de vistas

El paper de HotStuff describe el protocolo como un núcleo de reglas de voto y bloqueo más un componente llamado Pacemaker, cuya única responsabilidad es la liveness. El núcleo decide cuándo es seguro votar: una réplica guarda su lockedQC y solo acepta una propuesta si extiende ese bloqueo o si trae un QC de vista más alta. El Pacemaker decide cuándo cambiar de vista y quién lidera la siguiente.

La consecuencia práctica es fuerte. La safety de HotStuff no depende de que el Pacemaker funcione bien. Si el Pacemaker elige mal los tiempos, rota líderes de forma torpe o deja a las réplicas en vistas distintas, el sistema puede quedarse sin progreso, pero las reglas de voto siguen impidiendo dos commits en conflicto. Ojo con esto al depurar: un bug de Pacemaker se manifiesta como estancamiento o latencia, no como bifurcación.

Esta separación tiene raíz en el modelo de sincronía parcial. En ese modelo existe un instante desconocido, GST, después del cual los mensajes entre réplicas correctas llegan dentro de una cota Δ\Delta; antes de GST no hay cota útil. Safety tiene que sobrevivir a cualquier retraso, así que no puede apoyarse en relojes. Liveness, en cambio, solo se promete después de GST, y ahí sí pueden entrar los temporizadores. El Pacemaker es el lugar donde se concentra todo lo que depende del tiempo.

Rotación de líderes y el mensaje new-view en HotStuff

Cada vista tiene un líder determinado por una función conocida de antemano, de modo que todas las réplicas saben a quién esperar sin intercambiar mensajes para elegirlo. Una rotación por turnos es la opción más simple. Rotar en cada vista, y no solo cuando el líder falla, reparte la carga de proponer y limita cuánto tiempo puede retrasar un líder bizantino el sistema.

Cuando una réplica pasa a la vista v+1v + 1, envía al nuevo líder un mensaje new-view con el QC más alto que conoce, su highQC⁡i\operatorname{highQC}_i. El líder espera n−fn - f de esos mensajes, elige el QC de mayor vista y construye su propuesta sobre él. Como cada mensaje lleva un solo certificado y el líder reenvía solo el mejor, el cambio de vista mantiene comunicación lineal en el número de réplicas.

En HotStuff el new-view va dirigido al líder siguiente, no a todos. Eso ahorra mensajes, pero deja una pregunta abierta: ¿qué pasa si las réplicas no entran en la vista v+1v + 1 más o menos al mismo tiempo? El paper reconoce que sincronizar vistas es un problema en sí mismo y lo delega al Pacemaker sin fijar una única implementación.

Flujo visual

Ciclo de una ronda en un Pacemaker con certificados de timeout

Secuencia local de una réplica: espera, abandona la ronda o avanza con un certificado.
  1. Entrar en la ronda r
  2. Esperar propuesta y QC
  3. Vence el temporizador local
  4. Firmar y difundir timeout
  5. Avanzar con QC o TC de la ronda r

Timeouts: el reloj que cada réplica lleva por su cuenta

Un temporizador local solo responde a una pregunta: ¿cuánto estoy dispuesto a esperar al líder de esta vista? Si el valor es demasiado corto, las réplicas abandonan líderes correctos que simplemente están lentos. Si es demasiado largo, un líder caído paraliza el sistema durante todo ese tiempo.

Antes de GST ningún valor fijo es correcto, porque la red no tiene cota. La solución habitual es hacer crecer el temporizador cuando las vistas fallan seguidas, por ejemplo duplicándolo, y reducirlo cuando vuelve el progreso. Con un crecimiento así, después de GST el temporizador termina superando el tiempo real que necesita una vista completa, aunque nadie conozca Δ\Delta. Ese razonamiento es la versión operativa del modelo de sincronía parcial. La política concreta de crecimiento es una decisión de implementación; el artículo Por qué no timeouts fijos desarrolla ese punto.

La garantía de HotStuff está formulada exactamente en estos términos.

Teorema

Liveness de HotStuff tras GST

Después de GST existe un intervalo acotado T_f tal que, si todas las réplicas correctas permanecen en la vista v durante T_f y el líder de v es correcto, se alcanza una decisión.
Bosquejo de Demostración: Tras GST los mensajes llegan a tiempo; el líder correcto reúne n - f mensajes new-view, propone sobre el highQC más alto y las réplicas correctas pueden votar porque ese QC satisface su regla de bloqueo. Las fases se completan dentro de T_f. El trabajo del Pacemaker es producir esa ventana común.

Observa que el teorema no dice cómo conseguir la ventana común. Esa es precisamente la tarea del Pacemaker.

Certificados de timeout en DiemBFT

DiemBFT, el descendiente de HotStuff diseñado para producción, hace explícita la sincronización. Su Pacemaker avanza de ronda por dos caminos: al ver un QC de la ronda actual o al ver un certificado de timeout (TC) de esa ronda. Las réplicas que llegan tarde no necesitan recorrer los temporizadores de las rondas intermedias; les basta un certificado verificable para saltar.

Cuando vence el temporizador local, la réplica deja de votar en esa ronda, firma un mensaje de timeout que incluye la ronda y su QC más alto, y lo difunde a todas las réplicas. Con 2f+12f + 1 mensajes de timeout para la misma ronda se forma el TC. La aritmética es la de siempre: cualquier conjunto de 2f+12f + 1 firmas entre 3f+13f + 1 réplicas contiene al menos f+1f + 1 réplicas correctas, de modo que el TC no puede fabricarlo un grupo bizantino por sí solo.

Que la réplica deje de votar al emitir el timeout importa para safety. Si una ronda acaba con un TC, ninguna réplica correcta del TC votará después en esa ronda, así que nadie puede usar sus votos tardíos para completar un QC que contradiga lo que el TC reporta. El líder de la ronda siguiente incluye el TC en su propuesta cuando no tiene un QC de la ronda anterior, y las réplicas aceptan esa propuesta solo si extiende un QC al menos tan alto como el mayor highQC⁡\operatorname{highQC} reportado en el TC.

Figura 1

Alineación de vistas con un certificado de timeout

Fuentes:

[1][2]
Alineación de vistas con un certificado de timeout
Cómo leer esta figura

El diagrama de carril muestra dos réplicas que agotan el tiempo de la vista 9 y una tercera rezagada en la vista 8. Los timeouts de la vista 9 forman un certificado de 2f + 1 firmas (TC de la vista 9). Al recibirlo, las tres réplicas entran en la vista 10, incluida la rezagada, que se pone al día al verificar el certificado. Es un esquema simplificado del mecanismo de DiemBFT.

Visual original de TrautsLab. Esquema simplificado: réplicas en vistas desalineadas, un certificado formado por 2f + 1 timeouts y la entrada común en la vista siguiente.

Qué compra el TC y cuánto cuesta

El TC resuelve dos problemas a la vez. Primero, sincroniza: una prueba transferible permite que cualquier réplica, incluso una que no vio los mensajes originales, entre en la ronda correcta. Segundo, transporta información de safety: los highQC⁡\operatorname{highQC} incluidos le dicen al siguiente líder sobre qué debe construir y le dan a cada réplica una forma de comprobarlo.

El precio es la comunicación. Difundir timeouts a todas las réplicas, cada uno con su certificado, cuesta un número de mensajes cuadrático en el peor caso. Jolteon asume ese coste a propósito: mantiene el camino normal lineal, como HotStuff, y usa un cambio de vista cuadrático con TCs para confirmar con una cadena de dos QCs en lugar de tres. La idea es que los cambios de vista son raros en buen clima, así que pagar más en ellos para ahorrar una fase en cada bloque es buen negocio. La línea de DiemBFT v4 adopta ese mismo intercambio.

Matriz de decisión

Dos formas de entrar en la vista siguiente

new-view al siguiente líder (HotStuff)

Cada réplica envía su highQC solo al líder de v + 1.

Ideal para
mantener lineal también el cambio de vista, con commit de tres cadenas
Ojo con
la sincronización de vistas queda delegada a la implementación del Pacemaker
Recomendado

Timeouts difundidos y TC (DiemBFT, Jolteon)

2f + 1 timeouts de la misma ronda forman un certificado verificable.

Ideal para
sincronizar rondas explícitamente y confirmar con dos cadenas
Ojo con
comunicación cuadrática cuando hay cambio de vista
La comparación no es mejor contra peor: cada diseño pone el coste en un lugar distinto.

Hay un matiz que conviene no perder. El TC no hace que el sistema avance por sí solo; solo saca a las réplicas de una ronda sin futuro y las junta en la siguiente. El progreso real sigue necesitando un líder correcto y una red que, después de GST, entregue mensajes a tiempo. Por eso la reputación de líderes de DiemBFT, que intenta evitar dar turno a réplicas que no han estado participando, complementa al Pacemaker en lugar de reemplazarlo.

Pacemaker Mechanics

Checklist mental del Pacemaker

5 de 5 revisados

Lo que deberías poder justificar después de leer este artículo.
Referencias

Bibliografía académica

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

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

    Separación entre núcleo de safety y Pacemaker, mensajes new-view y liveness tras GST.

  2. [2]

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

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

    Pacemaker con mensajes de timeout difundidos, certificados de timeout y reputación de líderes.

  3. [3]

    R. Gelashvili et al., "Jolteon and Ditto: Network-Adaptive Efficient Consensus with Asynchronous Fallback," arXiv:2106.10362, 2021.

    PaperID: JOLTEON-DITTO-2021Abrir fuente (abre en otra pestaña)

    Commit de dos cadenas con cambio de vista cuadrático basado en certificados de timeout.

  4. [4]

    C. Dwork, N. Lynch, and L. Stockmeyer, "Consensus in the Presence of Partial Synchrony," JACM, 1988.

    Modelo de sincronía parcial y GST que justifica temporizadores crecientes para liveness.

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

Siguiente lectura

Para ver cómo el Pacemaker encaja con las propiedades formales del protocolo, continúa con Safety, liveness y responsiveness en HotStuff. Si te interesa el diseño de producción que adoptó los certificados de timeout, sigue con DiemBFT, Jolteon y Ditto.

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.