HotStuff: de cero a estado del arte
Artículo 46 de 47
98%
completado al llegar aquí
Sistemas distribuidosNota de investigación11 min de lectura
Privacidad y Zero-Knowledge (ZKP): Transacciones confidenciales sobre BFT
Qué garantiza un zk-SNARK, por qué una prueba Groth16 ocupa tres elementos de grupo y cómo un consenso BFT puede ordenar transacciones validadas por pruebas.
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.
Replicación de Máquina de Estados (SMR) con manzanas y peras
Un inventario de manzanas y peras muestra por qué réplicas deterministas que aplican el mismo log ordenado llegan siempre al mismo estado en SMR.
Blockchain11 min de lectura→El ataque del doble gasto: Cómo los estafadores digitales copian el dinero como si fuera un PDF
Por qué un saldo digital se puede gastar dos veces si las réplicas no acuerdan un único orden de transacciones, y cómo los quórums 2f+1 lo impiden.
Blockchain13 min de lectura→
Comprende cómo encajan una prueba de conocimiento cero sucinta y un consenso BFT: el consenso ordena transacciones y las réplicas comprueban su validez verificando una prueba corta, sin ver los datos privados que la justifican. Incluye el caso de Groth16 y la advertencia sobre su setup de confianza.
- Replicación de máquinas de estado (smr-manzanas-y-peras)
- El ataque del doble gasto (el-ataque-del-doble-gasto)
Detente cuando puedas explicar qué verifica una réplica al recibir una transacción con prueba, qué sigue resolviendo el consenso (el orden) y qué riesgo introduce un setup de confianza comprometido.
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 Transacciones Confidenciales sobre BFT
1. Prueba en el cliente
Prover
2. Verificación en cada réplica
Verifier determinista
3. Orden por consenso
QC sobre el bloque
4. Supuestos explícitos
Setup y circuito
Decodificador Didáctico de Conceptos BFT
En palabras simples: Demostrarle a un guardia que tienes la edad requerida con un sello que él puede comprobar, sin enseñarle tu documento, tu nombre ni tu dirección.
Detalle técnico: Un prover convence a un verifier de que una afirmación es verdadera; la propiedad de conocimiento cero garantiza que la prueba no revela nada sobre el testigo usado para construirla.
En palabras simples: Un recibo de una línea que certifica un cálculo de mil páginas: comprobar el recibo cuesta mucho menos que rehacer el cálculo.
Detalle técnico: Un SNARK produce pruebas pequeñas con verificación barata en comparación con el tamaño del cómputo que certifican.
Un consenso BFT clásico asume algo que rara vez se dice en voz alta: todas las réplicas ven las transacciones. Ejecutan los mismos comandos en el mismo orden y por eso llegan al mismo estado. Esa transparencia es justo lo que muchas aplicaciones no pueden aceptar, porque el contenido de una transacción (montos, contrapartes, saldos) puede ser información sensible.
Si simplemente ciframos la transacción, aparece el problema contrario: las réplicas ya no pueden saber si es válida. Este artículo explica la salida que ofrecen las pruebas de conocimiento cero sucintas, usando Groth16 como caso concreto, y separa con cuidado lo que la prueba resuelve de lo que sigue siendo trabajo del consenso.
El problema: replicar sin ver
En replicación de máquinas de estado, el servicio replicado se refleja en réplicas deterministas, y el protocolo BFT asegura que las réplicas correctas acuerden el orden de ejecución de los comandos de los clientes. [2] PBFT ya fijaba ese patrón: las réplicas ejecutan las peticiones en el orden acordado y el cliente acepta un resultado cuando recibe respuestas coincidentes. [3]
El determinismo es la palanca. Si cada réplica correcta aplica la misma función de transición al mismo estado con el mismo comando, todas llegan al mismo resultado. Pero esa función, en una aplicación financiera, incluye comprobaciones como "el remitente tiene saldo" o "estos fondos no se gastaron antes", y todas leen datos que queremos ocultar.
La idea central es cambiar qué ejecuta la réplica. En lugar de recalcular la transacción sobre datos en claro, la réplica verifica una prueba de que alguien hizo ese cálculo correctamente. Si la verificación también es determinista, el argumento de SMR se conserva: todas las réplicas correctas aceptan o rechazan la misma transacción.
Qué garantiza un zk-SNARK
Un argumento no interactivo permite a un prover convencer a un verifier de que una afirmación es verdadera con un único mensaje. Cuando la prueba es corta y su verificación es barata se habla de SNARG, y de SNARK cuando además es un argumento de conocimiento: quien produce una prueba aceptable debe "conocer" un testigo. [1]
Para nuestro caso importan tres propiedades, descritas aquí de forma general. Completitud: una afirmación verdadera con un testigo válido produce una prueba que el verificador acepta. Solidez de conocimiento: sin un testigo válido no se puede producir una prueba aceptable, salvo con probabilidad despreciable. Conocimiento cero: la prueba no revela nada sobre el testigo más allá de que la afirmación es verdadera. El SNARK de Groth16 es de conocimiento cero y no revela nada sobre el testigo que usa el prover. [1]
La afirmación que se prueba no es "esta transacción es buena" en abstracto. Groth16 construye un SNARK para la satisfacibilidad de circuitos aritméticos, un lenguaje NP-completo. [1] En la práctica, alguien escribe un circuito que codifica las reglas de una transacción válida; las entradas públicas son lo que todas las réplicas ven, y el testigo son los datos privados del cliente. La prueba certifica "existe un testigo que, junto con estas entradas públicas, satisface el circuito".
Groth16: tres elementos de grupo y una ecuación
El aporte de Groth16 es llevar el tamaño al mínimo práctico en la familia de SNARKs sobre emparejamientos. Usa emparejamientos asimétricos, la prueba consta de solo 3 elementos de grupo y la verificación consiste en comprobar una única ecuación de producto de emparejamientos con 3 emparejamientos en total. [1]
El mismo trabajo demuestra una cota inferior: los SNARGs en los que prover y verifier usan operaciones genéricas de grupos bilineales asimétricos no pueden constar de un único elemento de grupo. Queda abierto si se puede descartar también una prueba de dos elementos, lo que demostraría que la construcción de tres es óptima. [1]
Para un consenso, ese tamaño constante es lo que vuelve viable la idea. La prueba no crece con la complejidad del circuito, así que puede viajar dentro de la transacción y cada réplica puede verificarla antes de votar. El trabajo pesado queda del lado del cliente, que construye la prueba una vez; las réplicas solo verifican.
Contribución principal de Groth16
Ordenar con BFT, validar con una prueba
Juntemos las piezas en un flujo sin atribuirlo a ningún sistema concreto. El cliente construye su transacción, produce la prueba con sus datos privados y envía al sistema solo las entradas públicas y . El líder la incluye en una propuesta. Cada réplica, antes de votar, ejecuta la verificación como parte de su predicado de validez del bloque. Si una prueba no verifica, la transacción es inválida para todas las réplicas correctas por igual.
El consenso sigue haciendo exactamente el mismo trabajo que antes: decidir una secuencia única. En HotStuff, un bloque avanza cuando reúne un QC de votos en una vista , y la regla de commit garantiza que dos bloques en conflicto no se confirmen. [2] La prueba de conocimiento cero no toca esa lógica; solo cambia cómo cada réplica decide si una transacción es aplicable.
Aquí aparece la trampa clásica. Una prueba certifica que una transacción es válida respecto de ciertas entradas públicas, pero dos transacciones válidas cada una por separado pueden ser incompatibles entre sí, como dos gastos de los mismos fondos. Eso no lo resuelve la prueba; lo resuelve el orden. El circuito tiene que exponer como entrada pública algo que permita a las réplicas detectar el conflicto, por ejemplo un identificador único de los fondos gastados, y la máquina de estados rechaza la segunda transacción porque la primera ya se aplicó en el orden acordado. Es el mismo problema que se analiza en El ataque del doble gasto, resuelto con datos ocultos.
También conviene ser honesto sobre lo que la privacidad no cubre. El líder sigue eligiendo qué transacciones propone, y los metadatos visibles (cuándo llega una transacción, desde dónde) no quedan ocultos por la prueba. La privacidad que se obtiene es sobre el contenido de la transacción, no sobre su existencia.
El setup de confianza y otros límites
Groth16 es un SNARK con preprocesamiento. [1] Antes de producir pruebas, una fase de setup genera una cadena de referencia común para el circuito concreto, y esa generación usa aleatoriedad secreta. Como advertencia general sobre este tipo de esquemas: quien conserve esa aleatoriedad podría construir pruebas aceptables sin tener un testigo válido. En un sistema de transacciones eso equivale a poder fabricar transacciones "válidas" que ninguna regla real respalda, y la prueba no deja rastro de ello.
La consecuencia para un diseño BFT es que el modelo de confianza deja de ser solo "a lo sumo réplicas bizantinas". Se añade un supuesto sobre la ceremonia de setup, típicamente que al menos uno de sus participantes destruyó su parte del secreto. Ese supuesto es independiente del umbral de fallas: un comité con réplicas perfectamente honestas aceptaría igualmente una prueba fabricada con el secreto del setup, porque todas ejecutan la misma verificación.
Hay otros dos límites que no dependen del setup. El primero es el circuito: la prueba solo garantiza que se cumplen las reglas que el circuito codifica, y un error en el circuito es un error en la definición de validez que todas las réplicas aplicarán de forma consistente. El segundo es el cambio de reglas: como el setup está ligado al circuito, modificar las reglas de una transacción implica un nuevo setup.
Qué decide un equipo al validar transacciones con pruebas
Replicar un libro contable exige que todas las réplicas comprueben la validez de cada transacción, pero el contenido de las transacciones puede ser información sensible.
Las réplicas verifican una prueba corta de que la transacción cumple el circuito; el consenso BFT sigue decidiendo el orden, que es lo que evita aplicar dos gastos incompatibles.
Checklist mental de ZKP en BFT
5 de 5 revisados
Bibliografía académica
- [1]
J. Groth, "On the Size of Pairing-Based Non-interactive Arguments," EUROCRYPT, LNCS 9666, pp. 305-326, 2016.
zk-SNARK con pruebas de tres elementos de grupo y verificación por emparejamientos.
- [2]
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.
- [3]
M. Castro and B. Liskov, "Practical Byzantine Fault Tolerance," OSDI, 1999.
Base práctica para replicación de estado con fallas bizantinas y comparación con fases cuadráticas.
Siguiente lectura
Para repasar por qué el determinismo de las réplicas sostiene todo el argumento, vuelve a Replicación de máquinas de estado. Si quieres ver cómo el orden por consenso impide aplicar dos gastos incompatibles, sigue con El ataque del doble gasto.
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
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.
Ruta práctica: activos digitales en la operación
Nueve módulos, de menor a mayor dependencia, para decidir cómo usar custodia, wallets, llaves, firmas multifirma y MPC, AML/KYT y stablecoins con Fireblocks, BitGo, Kaleido, Circle y Tether.
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.
Ethereum: mapa de lectura antes de tocar Solidity
Ruta completa para aprender Ethereum desde historia y arquitectura hasta EVM, proof-of-stake, L2, seguridad, DeFi y labs reproducibles.
Antes de Ethereum: Bitcoin, scripts y la máquina mundial
Historia inicial de Ethereum: qué problema vio el whitepaper, por qué los contratos generales importaban y qué cambió frente a Bitcoin.
Frontier, Homestead y The DAO: la red aprendió con golpes
De mainnet inicial a The DAO: primeros forks, tensiones sociales y por qué la historia de Ethereum no es solo técnica.