BFT frontier: notas de campo
Artículo 6 de 9
67%
completado al llegar aquí
Sistemas distribuidosNota de investigación11 min de lectura
Gobernanza On-Chain y Votos BFT: Actualizar parámetros por consenso
Cómo cambiar parámetros de un protocolo con transacciones ordenadas por el propio consenso BFT: activación determinista, código en el estado y límites reales.
Comprende la gobernanza on-chain desde la replicación de máquina de estados: por qué una propuesta, sus votos y su ejecución son comandos que el consenso BFT ordena como cualquier otra transacción, qué garantiza eso sobre el momento de activación y qué problemas deja abiertos.
- Consenso BFT desde cero (bft-consensus-from-zero)
- QC, highQC y three-chain (hotstuff-qc-highqc-three-chain)
Detente cuando puedas explicar por qué un cambio de parámetro aprobado on-chain se aplica en la misma posición del log en todas las réplicas correctas, y por qué el umbral de la votación de gobernanza no es el quórum 2f + 1 del consenso.
Glosario de Notación Matemática y Criptográfica
Número de vista o ronda actual. Cada vista tiene un único líder designado.
view = 42Ruta mental de la gobernanza on-chain
Propuesta
Transacción de gobernanza
Votación
Regla de la aplicación
Espera
Ventana de aviso opcional
Ejecución
Activación determinista
Decodificador Didáctico de Conceptos BFT
En palabras simples: Un reglamento que se modifica con mociones registradas en el mismo libro de actas que todo lo demás. Nadie discute cuándo entró en vigor el cambio: entró en la línea del acta donde se ejecutó.
Detalle técnico: Esquema en el que las reglas o parámetros de un sistema se modifican mediante transacciones que el propio consenso ordena y la máquina de estados ejecuta.
Cambiar una regla de un protocolo distribuido tiene dos problemas que suelen confundirse. Uno es social: quién tiene derecho a proponer y aprobar el cambio. El otro es técnico: cómo lograr que todas las réplicas apliquen el cambio en el mismo punto de la historia, sin que unas sigan con la regla vieja mientras otras ya usan la nueva.
Este artículo trata sobre todo el segundo. La idea central es que la gobernanza on-chain no necesita un protocolo de acuerdo propio: reutiliza el que ya existe. Si la propuesta, los votos y la ejecución son transacciones, el consenso BFT los ordena igual que a un pago, y la replicación de máquina de estados hace el resto. [1] [2]
Gobernanza como replicación de máquina de estados
PBFT se presenta como un algoritmo de replicación de máquina de estados: cada réplica mantiene una copia del servicio, y el protocolo garantiza que las réplicas correctas ejecuten las mismas operaciones en el mismo orden. [2] El paper exige que el servicio sea determinista, de modo que el mismo estado inicial y la misma secuencia de operaciones produzcan el mismo resultado en todas las réplicas correctas. [2]
HotStuff se formula en el mismo marco: las réplicas acuerdan una secuencia creciente de comandos, y un bloque confirmado mediante la cadena de QCs ya no puede ser revertido por una réplica correcta. [1] Para la gobernanza, eso significa algo muy concreto. Si la transacción que ejecuta un cambio de parámetro está en un bloque confirmado, todas las réplicas correctas la ejecutarán en la misma posición del log y, a partir de ahí, aplicarán el nuevo valor.
Fíjate en lo que no hace falta. No hace falta que las réplicas coordinen un reloj, ni que acuerden por separado "a qué hora entra el cambio". La posición del log es el reloj. Un diseño que active cambios por hora de pared reintroduce justamente el problema que el consenso resolvió: dos réplicas podrían procesar el mismo bloque con reglas distintas.
El ciclo de vida de una propuesta
Los sistemas reales varían mucho en los detalles, y esta sección describe un ciclo genérico como contexto general, no el diseño de ninguna cadena concreta.
- Propuesta. Un participante envía una transacción que describe el cambio. La máquina de estados la valida y le asigna un identificador.
- Votación. Los participantes con derecho a voto envían transacciones de voto durante un periodo medido en bloques. El conteo es una función determinista del estado.
- Aprobación. Al cerrar el periodo, la máquina de estados evalúa la regla de aprobación. El resultado es el mismo en todas las réplicas correctas porque todas ejecutaron los mismos votos en el mismo orden.
- Espera opcional. Muchos diseños separan aprobación y ejecución para dar margen a los operadores.
- Ejecución. Una transacción, o una regla de la máquina de estados, aplica el nuevo valor en un bloque determinado.
El siguiente fragmento es ilustrativo y no corresponde al formato de ningún sistema real; sirve para ver que una propuesta no es más que datos dentro de una transacción.
{
"proposal_id": 402,
"target_parameter": "consensus.base_timeout",
"new_value": "1000ms",
"voting_period_blocks": 50000
}Flujo visual
Ciclo de una propuesta on-chain
Dos umbrales que no hay que confundir
El error más común al hablar de "votos BFT" es mezclar dos umbrales. El quórum de réplicas sobre es un mecanismo del protocolo de consenso: decide qué bloque se confirma y garantiza, por intersección, que no se confirmen dos bloques en conflicto. [2] [1]
La regla de aprobación de una propuesta de gobernanza es otra cosa: un predicado que la aplicación evalúa sobre los votos registrados. Puede exigir mayoría simple, dos tercios del stake, un mínimo de participación o cualquier otra combinación. Ese umbral lo define la aplicación, no la teoría BFT, y no hereda automáticamente la propiedad de intersección. Un 66,7 % de votos a favor en una propuesta no tiene relación necesaria con el que certifica los bloques.
Lo que sí hereda la gobernanza del consenso es la integridad del conteo. Como los votos son transacciones ordenadas y ejecutadas de forma determinista, todas las réplicas correctas calculan el mismo resultado, y ningún voto confirmado puede desaparecer de la historia. [1] La gobernanza es tan segura como el log que la contiene, ni más ni menos: si más de réplicas fueran bizantinas, el consenso dejaría de garantizar safety y con él cualquier resultado de votación.
Cambiar el código, no solo los parámetros: el caso Polkadot
Ajustar un parámetro numérico es el caso fácil. Más ambicioso es cambiar la lógica misma de la máquina de estados. La especificación del protocolo Polkadot separa el host, que implementa red, consenso y almacenamiento, del runtime, la lógica de transición de estado compilada a Wasm. [3] El código del runtime se guarda en el propio estado bajo la clave :code, y el host ejecuta el runtime que encuentra en el estado. [3]
La consecuencia es elegante: reemplazar la lógica del runtime es una escritura en el estado, ordenada y confirmada por el consenso como cualquier otra. Las réplicas no necesitan instalar un binario nuevo en una fecha coordinada para ese tipo de cambio, porque todas leen el código nuevo en la misma posición de la historia. El mecanismo de decisión que autoriza esa escritura queda fuera de la especificación del host y depende de la lógica del runtime.
La misma especificación aplica la idea al conjunto de validadores: los cambios de authority set de GRANDPA se anuncian en la cadena y se aplican en puntos derivados de ella. [3] Cambiar quién vota es la forma más delicada de gobernanza, porque modifica los quórums que protegen el log, y merece un tratamiento propio como reconfiguración por épocas.
Activación determinista de un cambio confirmado
Lo que la gobernanza on-chain no resuelve
Es tentador decir que la gobernanza on-chain elimina los hard forks. Es más preciso decir que elimina la descoordinación técnica para los cambios que el sistema sabe ejecutar por sí mismo. Si un cambio exige modificar el software que no vive en el estado, como el host en el caso de Polkadot, los operadores siguen teniendo que actualizar. [3] Y si una parte de la comunidad rechaza el resultado de una votación, puede ejecutar software distinto; eso es un problema social que ningún quórum resuelve.
Hay además una trampa de diseño específica de los protocolos BFT. Algunos parámetros afectan al propio consenso: timeouts, tamaño de bloque, conjunto de validadores. Cambiar un timeout del pacemaker de forma determinista es seguro para safety, porque safety no depende de los timeouts, pero un valor mal elegido puede afectar liveness. [1] Cambiar el conjunto de validadores, en cambio, toca la premisa de la intersección de quórums y requiere el cuidado de una reconfiguración.
Qué aporta la gobernanza ordenada por consenso
Coordinar cambios de reglas fuera del sistema obliga a fijar fechas de actualización y deja abierta la posibilidad de réplicas con reglas distintas.
Si propuesta, votos y ejecución son transacciones, el consenso fija un único punto de activación y un conteo idéntico en todas las réplicas correctas.
Checklist mental de gobernanza on-chain
5 de 5 revisados
Bibliografía académica
- [1]
M. Yin, D. Malkhi, M. K. Reiter, G. G. Gueta, and I. Abraham, "HotStuff: BFT Consensus in the Lens of Blockchain," PODC, 2019.
Replicación de máquina de estados con commit por cadena de QCs y safety independiente de los timeouts.
- [2]
M. Castro and B. Liskov, "Practical Byzantine Fault Tolerance," OSDI, 1999.
Replicación determinista: las réplicas correctas ejecutan las mismas operaciones en el mismo orden con quórums de 2f + 1.
- [3]
Parity Technologies, "Polkadot Protocol Specification," 2025.
Separación host/runtime, runtime Wasm almacenado en el estado bajo :code y cambios de authority set anunciados en la cadena.
Siguiente lectura
Para repasar por qué un bloque confirmado no se revierte, vuelve a QC, highQC y three-chain. Si te interesa por qué ajustar timeouts afecta liveness pero no safety, continúa con por qué no usar timeouts fijos.
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
HotStuff: de cero a estado del arte
Ruta progresiva para entender consenso BFT moderno: quórums, sincronía parcial, locks, taxonomía one/two/three-chain, QC/highQC, multipipeline, view-change, responsiveness, AggQC, Fast-HotStuff, sync y frontera DAG-BFT.
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.
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.
BFT y Agentes de IA: Coordinar decisiones de modelos LLM sin punto de falla
Qué significa tratar a un agente LLM que falla o miente como réplica bizantina: votos, quórums, verificación y lo que afirman dos preprints de 2025.
BFT en Computación en el Borde (Edge/IoT): Consenso con conectividad intermitente
Qué cuesta el consenso bizantino en dispositivos IoT y qué propone EBRC: comité elegido por reputación y VRF, votación en dos fases y una evaluación limitada.
Consenso BFT desde cero: réplicas, quórums y fallas bizantinas
Primer paso de la serie HotStuff: qué problema resuelve BFT, por qué aparece n >= 3f + 1 y cómo separar safety de liveness sin drama matemático.
Uno, dos y tres chains: la taxonomía de commit antes de HotStuff
Guía para entender commits de una, dos y tres cadenas, y cómo esa taxonomía prepara QC, highQC, multipipeline y Fast-HotStuff.