HotStuff: de cero a estado del arte

Artículo 41 de 47

87%

completado al llegar aquí

Sistemas distribuidosNota de investigación15 min de lectura

Leaks de inactividad (Inactivity Leaks): Recuperar el consenso tras catástrofes

Por qué la finalidad se detiene si más de un tercio del stake no vota, cómo el inactivity leak de Ethereum la recupera y cuándo finaliza dos ramas en conflicto.

Ruta HotStuff: 0/47

En 1 Minuto

Comprende qué ocurre cuando más de un tercio del stake deja de votar: por qué un protocolo de quórums de dos tercios se detiene sin perder safety, cómo el inactivity leak de Ethereum drena el stake de los ausentes para recuperar finalidad y qué riesgos de safety documentan Pavloff et al.

Prerrequisitos
  • Quórums en acción (quorums-en-accion-mayorias-honestas)
  • Safety, liveness y responsiveness en HotStuff (hotstuff-safety-liveness-responsiveness)
Cuándo Detenerte

Detente cuando puedas explicar con aritmética por qué reducir el stake de los ausentes devuelve la supermayoría a los presentes y por qué, en una partición prolongada, eso permite finalizar dos ramas en conflicto.

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 del inactivity leak

  1. Más de un tercio ausente

    Sin supermayoría disponible

  2. Activación

    Cuatro épocas sin finalizar

  3. Drenaje de stake

    Penalización creciente

  4. Nueva supermayoría

    Finalidad recuperada

De la pérdida de quórum a la recuperación de finalidad, y el riesgo que aparece en el camino.
Explicación Didáctica

Decodificador Didáctico de Conceptos BFT

Inactivity leak (fuga de inactividad)

En palabras simples: Un parlamento cuyo reglamento exige dos tercios de los votos ponderados. Si una tormenta deja fuera a muchos diputados durante semanas, el reglamento empieza a reducir el peso de cada ausente hasta que los presentes vuelven a sumar dos tercios.

Detalle técnico: Mecanismo de Ethereum PoS que drena el stake de los validadores inactivos cuando la finalidad lleva varias épocas detenida, para que los activos recuperen la supermayoría.

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

En Safety, liveness y responsiveness vimos que un protocolo BFT con n=3f+1n = 3f + 1 réplicas avanza solo si reúne certificados de n−fn - f votos. Si más de ff réplicas se apagan, ningún certificado puede formarse.

La pregunta de este artículo es incómoda: ¿qué debería hacer un sistema cuando la falla ya no es "hasta ff" sino un apagón o una partición que deja fuera a más de un tercio del stake? HotStuff responde "esperar". Ethereum responde reduciendo, época tras época, el stake de quienes no votan. Ese mecanismo es el inactivity leak, se activó por primera vez en Ethereum en mayo de 2023, y tiene un precio que Pavloff, Amoussou-Guenou y Tucci-Piergiovanni midieron con cuidado.

Por qué la finalidad se detiene con más de un tercio ausente

Empecemos por la familia BFT clásica. En HotStuff, un QC es un conjunto de n−fn - f votos firmados sobre la misma propuesta y la misma vista; safety no depende de la red, y el progreso depende de que, después de GST, un líder correcto reúna esos votos. Si f+1f + 1 réplicas no votan, llegan como máximo n−f−1n - f - 1 votos, uno menos de lo necesario. El pacemaker puede rotar líderes indefinidamente: ninguno certifica. La red queda detenida y, a la vez, intacta.

Ethereum hereda la misma aritmética en su capa de finalidad. Casper FFG define un enlace de supermayoría como un par de checkpoints (a,b)(a, b) respaldado por votos de al menos dos tercios de los validadores, ponderados por depósito; un checkpoint se justifica con un enlace desde otro justificado y se finaliza cuando su hijo directo también queda justificado. Gasper, el protocolo de la beacon chain, combina ese gadget con la regla de bifurcación LMD GHOST y mantiene la condición de dos tercios del stake para justificar.

En la descripción de Pavloff et al., el tiempo se divide en slots de 12 segundos y épocas de 32 slots; cada validador emite una atestación por época, con un voto de checkpoint. Un checkpoint queda justificado cuando validadores con más de dos tercios del stake emiten el mismo voto, y la finalización requiere dos checkpoints justificados consecutivos.

De ahí sale el problema. Buterin y Griffith lo llaman catastrophic crash: si más de un tercio de los validadores deja de participar, sea por una partición de red, una falla de máquinas o por malicia, ya no pueden crearse enlaces de supermayoría y ningún checkpoint futuro se finaliza. Hasta aquí, Ethereum se comporta como HotStuff. La diferencia es lo que hace a continuación.

Una aclaración de diseño: la cadena de Ethereum no se congela por completo. Pavloff et al. subrayan que la parte no finalizada sigue creciendo aunque la finalización se detenga, una propiedad que llaman availability. Lo que se detiene es la finalidad, no la producción de bloques.

Invariante

Intersección de supermayorías y safety responsable

Dos conjuntos de validadores con al menos dos tercios del stake cada uno comparten al menos un tercio del stake. Por eso, si dos checkpoints de la misma época quedan justificados, los validadores de la intersección violaron una condición de slashing.
Bosquejo de Demostración: Gasper lo usa para probar que, salvo que la cadena sea (1/3)-slashable, cada vista ve a lo sumo un checkpoint justificado por época. El argumento supone que ambas supermayorías se miden sobre el mismo conjunto y el mismo stake, que es justo lo que el leak modifica.

El mecanismo: puntaje de inactividad y drenaje de stake

La idea aparece ya en el paper de Casper FFG como defensa contra caídas catastróficas: un "leak" que drena lentamente el depósito de todo validador que no vota, hasta que los que sí votan vuelven a ser supermayoría. Los autores dejaban la fórmula exacta fuera del alcance del paper, como una cuestión de incentivos económicos, y sugerían que una tasa creciente con la duración del estancamiento podía resolver antes la crisis. Pavloff et al. notan además que la descripción de Gasper no menciona el mecanismo, y aportan la primera descripción formal.

Según esa formalización, el leak empieza cuando la cadena pasa cuatro épocas consecutivas sin finalizar. Un validador cuenta como inactivo en una época si no envía atestación o si su voto de checkpoint apunta a un objetivo que no pertenece a la cadena que se evalúa. Durante el leak desaparecen las recompensas de atestación y aparecen penalizaciones de inactividad.

Cada validador ii lleva un puntaje de inactividad IiI_i. En cada época de leak sube 4 si el validador estuvo inactivo y baja 1 (sin pasar de cero) si estuvo activo. La penalización por época es proporcional al puntaje y al stake:

si(t)=si(t−1)−Ii(t−1) si(t−1)226s_i(t) = s_i(t-1) - \frac{I_i(t-1)\, s_i(t-1)}{2^{26}}

El término importante es IiI_i: como crece con cada época de ausencia, la pérdida se acelera. Modelando el stake como función continua, los autores obtienen que un validador siempre inactivo, con I(t)=4tI(t) = 4t, conserva s(t)=s0 e−t2/225s(t) = s_0\, e^{-t^2/2^{25}}. Un validador siempre activo no pierde nada. Un validador semiactivo, activo una época sí y otra no, decae más lento, como s0 e−3t2/228s_0\, e^{-3t^2/2^{28}}.

Hay un segundo efecto discreto: los validadores cuyo stake cae a 16,75 ETH o menos son expulsados. Partiendo de 32 ETH, un validador siempre inactivo llega a ese límite en la época 4685 del leak, y uno semiactivo en la 7652; como referencia, los autores indican que 5000 épocas son unas tres semanas.

Aritmética del retorno a dos tercios

El efecto buscado no es castigar por castigar. Al drenar el stake de los ausentes se encoge el denominador contra el que se miden los dos tercios. Los activos no ganan votos nuevos: pasan a representar una fracción mayor de un total más pequeño.

Un ejemplo hipotético con números redondos lo muestra. Supongamos un stake total de 100100 unidades, de las cuales 6060 siguen votando y 4040 quedan aisladas. Los activos tienen 0,60{,}6 del total, por debajo de 2/32/3. Llamemos ss al stake restante de los inactivos. Los activos recuperan la supermayoría cuando

6060+s≥23⟺s≤30.\frac{60}{60 + s} \ge \frac{2}{3} \quad \Longleftrightarrow \quad s \le 30.

Basta con que los inactivos pierdan una cuarta parte de su stake. Pavloff et al. hacen la misma cuenta con su curva de penalización: si p0p_0 es la fracción del stake que sigue activa en una rama, la fracción activa en la época tt del leak es

p0p0+(1−p0) e−t2/225\frac{p_0}{p_0 + (1 - p_0)\, e^{-t^2/2^{25}}}

y el umbral de dos tercios se alcanza en

t=min⁡(225[log⁡(2(1−p0))−log⁡p0],  4685).t = \min\left( \sqrt{2^{25}\left[\log\big(2(1-p_0)\big) - \log p_0\right]},\; 4685 \right).

El mínimo con 46854685 refleja la expulsión: en su simulación, con p0≤0,5p_0 \le 0{,}5 la fracción activa salta a 1 cuando los inactivos son expulsados, mientras que con p0=0,6p_0 = 0{,}6 los dos tercios se recuperan antes de esa expulsión. Cuantos más validadores activos tiene una rama, antes vuelve a finalizar.

Fíjate en lo que cambió. La supermayoría recuperada no se cruza necesariamente con una supermayoría medida sobre el stake original, porque ambas se calculan contra denominadores distintos. El invariante del bloque anterior presupone un conjunto y un stake fijos. El leak altera el stake sin que nadie haya votado esa alteración, y con eso suspende la premisa de la prueba.

Figura 1

El inactivity leak devuelve los dos tercios a los activos

Fuentes:

[1]
El inactivity leak devuelve los dos tercios a los activos
Cómo leer esta figura

Curva cualitativa de la fracción de stake activo frente a las épocas sin finalidad. Empieza en 0,6, por debajo de la línea de dos tercios, y sube a medida que el stake inactivo se reduce; cruza los dos tercios en el punto donde la finalidad se reanuda, cuando el stake inactivo restante es como mucho 30 de 100.

Visual original de TrautsLab. Ejemplo hipotético del texto: 60 unidades de stake votan y 40 están aisladas; a medida que el leak reduce el stake inactivo s, la fracción activa sube y la finalidad vuelve cuando s es como mucho 30.

El precio: dos ramas finalizadas tras una partición

Mientras los ausentes estén realmente apagados, el cambio de denominador es inofensivo. El problema aparece cuando la "caída" es una partición y ambos lados siguen activos. Casper FFG ya lo advertía: si los validadores se dividen en VAV_A, que vota en la cadena A, y VBV_B, que vota en la B, en la cadena A se drena el depósito de VBV_B y viceversa, hasta que cada subconjunto tiene supermayoría en su cadena y se finalizan dos checkpoints en conflicto sin que nadie viole una condición de slashing. La recomendación del paper era que cada validador favoreciera el checkpoint finalizado que vio primero, y dejaba la recuperación como problema abierto.

Pavloff et al. cuantifican este caso con validadores solo honestos separados en dos particiones. La configuración más rápida para finalizar ambas ramas es el reparto parejo, p0=0,5p_0 = 0{,}5, y aun así ninguna rama puede finalizar antes de la expulsión en la época 4685. Contando una época más para finalizar el checkpoint justificado, ambas ramas finalizan 4686 épocas después del inicio del leak, unas tres semanas. Su conclusión: cualquier partición más larga que eso produce finalización en conflicto y pérdida de safety.

Contrasta con HotStuff. Allí, dos QCs en conflicto en la misma vista exigen que alguna réplica correcta vote dos veces, lo que sus reglas de votación impiden. Con el leak no hace falta ningún doble voto: cada lado forma su supermayoría sobre un denominador distinto.

Impacto de Negocio & Finanzas

Qué compra y qué cuesta el inactivity leak

Problema Comercial / Operacional

Un apagón o una partición que deja fuera a más de un tercio del stake detiene la finalidad de cualquier protocolo con quórums de dos tercios.

Solución del Paper (Insight Técnico)

Drenar el stake de los ausentes devuelve la finalidad sin intervención manual, pero lo hace cambiando el total contra el que se cuentan los votos.

Impacto para el Producto / Negocio: Finalidad recuperable tras fallas catastróficas, a cambio de que una partición de unas tres semanas o más pueda dejar dos ramas finalizadas e irreconciliables.
Activación4 épocasconsecutivas sin finalizar
Expulsión<= 16,75 ETHinactivo: época 4685 del leak
Solo honestos4686 épocashasta finalizar dos ramas
Bizantinos cerca de 1/3~500 épocasunos dos días, con slashing

Cómo los validadores bizantinos aceleran el riesgo

El análisis se vuelve más serio cuando se añade un adversario con menos de un tercio del stake inicial, β0<1/3\beta_0 < 1/3, capaz de coordinarse entre particiones. Los autores estudian cuatro estrategias.

Activos en ambas ramas, con slashing. Si los bizantinos atestan en las dos ramas a la vez, cuentan como activos en ambas y aceleran la recuperación de dos tercios en cada una. Es una falta sancionable, pero solo cuando la prueba de atestaciones conflictivas se incluye en un bloque, y antes de GST eso puede no ocurrir. Con p0=0,5p_0 = 0{,}5, la finalización en conflicto baja de 4685 épocas con β0=0\beta_0 = 0 a 3107 con β0=0,2\beta_0 = 0{,}2 y a unas 500 con β0=0,33\beta_0 = 0{,}33, unos dos días. El slashing llega tarde: las dos ramas finalizadas ya son irreconciliables con el protocolo actual.

Semiactivos, sin slashing. Alternando actividad entre ramas, los bizantinos nunca firman dos atestaciones conflictivas en la misma época, pierden stake más despacio que los honestos inactivos y, en el momento oportuno, permanecen activos dos épocas seguidas en cada rama. Con β0=0,33\beta_0 = 0{,}33, eso produce finalización en conflicto en unas 556 épocas sin ninguna acción sancionable.

Superar el umbral de un tercio. La misma estrategia semiactiva, pero sin finalizar, persigue otro objetivo: que la proporción de stake bizantino supere 1/31/3 en cada rama mientras los honestos de la otra partición se desangran. Con p0=0,5p_0 = 0{,}5, esto es posible en ambas ramas a la vez si β0≥0,2421\beta_0 \ge 0{,}2421.

Probabilistic bouncing. Por último, revisan un ataque conocido para retrasar la finalidad durante periodos síncronos y muestran que, con el leak, puede llevar el stake bizantino por encima de un tercio de forma probabilística si β0\beta_0 está suficientemente cerca de 1/31/3.

Los autores son explícitos sobre el alcance: las condiciones para que estos ataques persistan hasta amenazar safety son poco probables en la práctica, sobre todo por las escalas de tiempo, aunque los bizantinos pueden hacer perder stake a otros validadores mucho antes.

Inactivity leak

Checklist mental de inactivity leaks

5 de 5 revisados

Preguntas para verificar que entendiste el mecanismo y su costo.

Esperar o reponderar: qué significa "finalizado"

La comparación honesta no es "Ethereum se cura y HotStuff no". Es una elección sobre qué propiedad conservar cuando el modelo de fallas se rompe. HotStuff mantiene safety sin suposiciones de red y acepta que, con más de ff réplicas ausentes, el progreso se detenga. Recuperar servicio exige que las réplicas vuelvan o una reconfiguración explícita del conjunto, como la que se discute en reorganización dinámica de validadores.

Ethereum elige lo contrario para su finalidad. Pavloff et al. lo leen a través del teorema CAP: el leak restaura liveness durante particiones y, por eso mismo, pone en riesgo safety. Para quien diseña sistemas, la consecuencia práctica es leer con cuidado qué garantiza "finalizado". En un BFT con conjunto fijo, significa respaldado por un quórum que se cruza con cualquier otro. Con leak, significa respaldado por dos tercios del stake vigente en esa rama, y ese stake puede haberlo redefinido el propio apagón.

Siguiente lectura

Para repasar por qué la intersección de quórums es el corazón de safety, vuelve a Quórums en acción. Si quieres ver cómo un protocolo de conjunto fijo recupera liveness después de GST sin tocar los pesos, continúa con el pacemaker y el cambio de vista de HotStuff.

Referencias

Bibliografía académica

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

    U. Pavloff, Y. Amoussou-Guenou, and S. Tucci-Piergiovanni, "Byzantine Attacks Exploiting Penalties in Ethereum PoS," arXiv:2404.16363, 2024.

    PaperID: PAVLOFF-INACTIVITY-2024Abrir fuente (abre en otra pestaña)

    Análisis del inactivity leak de Ethereum y de cómo validadores bizantinos pueden explotarlo contra safety.

  2. [2]

    V. Buterin and V. Griffith, "Casper the Friendly Finality Gadget," arXiv:1710.09437, 2017.

    Gadget de finalidad sobre checkpoints: votos de enlace, dos condiciones de slashing, accountable safety y plausible liveness.

  3. [3]

    V. Buterin, D. Hernandez, T. Kamphefner, K. Pham, Z. Qiao, D. Ryan, J. Sin, Y. Wang, and Y. X. Zhang, "Combining GHOST and Casper," arXiv:2003.03052, 2020.

    Gasper: Casper FFG combinado con la regla de bifurcación LMD GHOST en la beacon chain de Ethereum.

  4. [4]

    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.

Fuentes primarias, papers seminales y especificaciones técnicas citadas en esta investigació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.