Las pruebas de conocimiento cero (ZKP) se han convertido en uno de los primitivos criptográficos más transformadores en los sistemas de blockchain modernos. A diferencia de los artículos de alto nivel que diluyen la esencia técnica, este texto desglosa los mecanismos reales, las matemáticas reales y las restricciones reales detrás de los sistemas de privacidad basados en ZK utilizados en altcoins como Zcash, Aleo y Firo, sin abstracciones ni propaganda de marketing.
1. Qué es realmente una Prueba de Conocimiento Cero (matemáticamente)
Una ZKP es un protocolo interactivo o no interactivo que permite a un probador P convencer a un verificador V de que una afirmación es verdadera sin revelar ninguna información excepto la veracidad de la afirmación.
Formalmente, una ZKP debe cumplir:
- Completitud: Si la afirmación es verdadera, un verificador honesto acepta.
- Solidez: Un probador malicioso no puede convencer al verificador de una afirmación falsa.
- Conocimiento cero: El verificador no aprende nada excepto la validez.
El conocimiento cero se define usando un simulador S:
Si S puede generar una transcripción indistinguible sin conocer el testigo, el protocolo tiene conocimiento cero.
Para su uso en blockchain, la afirmación usualmente se ve así:
"Conozco un secreto (testigo) que hace hash a este valor público."
o
"Soy dueño de monedas pertenecientes a compromisos sin revelar cuáles."
2. Esquemas de Compromiso — La base de las monedas de privacidad ZK
La mayoría de las monedas de privacidad usan compromisos para ocultar valores de transacción y propiedad.
Un compromiso se define como:
C = Commit(valor, aleatoriedad)
Propiedades:
- Ocultamiento: el valor no puede extraerse de C.
- Vinculación: el probador no puede cambiar el valor más tarde.
Esquemas comunes:
- Compromisos de Pedersen:
C = v·G + r·H en grupos de curvas elípticas (usado en Firo Lelantus / MimbleWimble). - Compromisos basados en SHA-256: usados en algunos circuitos zk-SNARK por eficiencia.
Los compromisos de Pedersen permiten:
- Homomorfismo aditivo: C1 + C2 = Commit(v1 + v2, r1 + r2).
→ Así es como las transacciones confidenciales preservan la oferta total.
3. zk-SNARKs y zk-STARKs — Por qué las monedas de privacidad usan uno u otro
3.1 zk-SNARKs (Argumento No Interactivo Succinto de Conocimiento)
Usados en:
- Zcash (Sapling)
- Horizen
- Firo Lelantus Spark
Propiedades:
- Pruebas muy pequeñas (~192 bytes en Sapling).
- Verificación muy rápida (~10 ms).
- Requieren una configuración confiable (problema de “residuos tóxicos”).
- Usan emparejamientos de curvas elípticas (principalmente BLS12-381).
Detalle técnico a menudo omitido:
Zcash originalmente usaba BN254 (Jubjub), pero cambió a BLS12-381 debido a debilidades en la seguridad de subgrupos y preocupaciones sobre márgenes de seguridad de 128 bits.
3.2 zk-STARKs (Argumentos Transparentes Escalables de Conocimiento)
Usados en:
- Aleo
- StarkNet (no es una moneda pero relevante)
Propiedades:
- Sin configuración confiable.
- Seguridad post-cuántica (basada en funciones hash, no emparejamientos).
- Pruebas grandes (~100–500 KB).
- Verificación rápida y escalable.
Dato poco conocido:
Las primeras pruebas de testnet de Aleo eran tan grandes que el ancho de banda de la red se volvió un cuello de botella; las optimizaciones redujeron el tamaño de la prueba en ~80% antes de la mainnet.
4. Dónde aparece el conocimiento cero dentro de una transacción de privacidad
Una altcoin centrada en privacidad típicamente usa ZKP para uno o más de los siguientes:
4.1 Ocultar al remitente
Mecanismos:
- Firmas en anillo (Monero — no ZK, pero relacionado).
- Pruebas de membresía de conocimiento cero (Zcash, Lelantus).
Ejemplo (simplificado):
El probador muestra que conoce una clave secreta para un elemento en un conjunto de compromisos sin revelar cuál.
4.2 Ocultar al receptor
Usando direcciones ocultas o direcciones diversificadas.
Zcash usa direcciones de pago y claves de visualización entrantes para permitir transparencia selectiva.
4.3 Ocultar el monto
Compromisos de Pedersen + una ZKP que:
- asegura que la suma de los compromisos sea correcta,
- los montos sean no negativos (pruebas de rango),
- no se introduce inflación.
Pruebas de rango antiguas (Transacciones Confidenciales, propuestas de Bitcoin):
~2–3 KB por salida.
Bulletproofs:
~700 bytes por salida (Monero usa estas).
zk-SNARKs:
Zcash oculta los montos con pruebas tan pequeñas como 192 bytes en total.
5. Un ejemplo concreto de transacción: Zcash Sapling
Una transacción protegida de Zcash Sapling prueba:
- Que el gastador posee una nota (moneda oculta).
- Que la nota no ha sido gastada previamente (ZKP de nullifier).
- Que el valor total de salida es igual al valor total de entrada (ZKP de balance).
- Que las notas de salida son compromisos correctamente formados.
¿Qué se prueba realmente?
El probador construye un circuito que cubre:
- Hashes (BLAKE2s) de compromisos de notas
- Hashes de Pedersen
- Autenticación de camino en árbol Merkle
- Cálculo de nullifier
- Ecuaciones de conservación de valor
La complejidad total del circuito es de ~2 millones de restricciones.
La generación de la prueba usa Groth16, requiriendo:
- Cálculos FFT
- Multiplicaciones multiescalar
- Emparejamientos EC
En un portátil, generar una prueba tarda ~1–2 segundos (optimizado con curvas Pallas/Vesta en Orchard).
Dato raramente mencionado:
El circuito Sapling usa descomposiciones de bits para restricciones de rango, aumentando mucho el conteo de restricciones; Orchard reemplazó esto con la aritmetización PLONKish de Halo 2, reduciendo drásticamente la complejidad.
6. Lelantus Spark (Firo) — Un sistema ZK subestimado
El sistema “Spark” de Firo es uno de los más avanzados técnicamente, pero menos conocido públicamente.
Innovaciones clave:
- Totalmente ZK (sin firmas en anillo).
- Usa Pruebas de Uno de Muchos:
El probador demuestra que posee una nota entre N, con tamaño de prueba logarítmico en N. - Sin configuración confiable.
- Los montos se ocultan mediante compromisos de Pedersen.
- Las direcciones Spark son no vinculables incluso para nodos que realizan análisis de la cadena.
Spark también incluye:
- Reemisión de direcciones:
Los propietarios pueden actualizar direcciones manteniendo el control, reduciendo la fuga de metadatos. - Vinculación universal:
Previene la inflación maliciosa usando múltiples vinculaciones criptográficas al mismo compromiso.
Dato poco conocido:
El diseño de Spark reduce la superficie de ataque causada por “pruebas de gasto parcial”, que previamente hacían que algunos protocolos de privacidad fueran vinculables bajo ciertas heurísticas.
7. Aleo — Ejecución ZK, no solo transacciones ZK
Aleo no es solo una moneda privada, es una blockchain L1 con contratos inteligentes completamente privados.
Cómo funciona:
- Los programas se escriben en Leo, un DSL similar a Rust que compila a R1CS.
- La ejecución ocurre off-chain.
- Se genera una prueba zk-STARK que representa toda la traza de ejecución.
- Mineros/validadores verifican la prueba y actualizan el estado.
Esto es efectivamente:
Una máquina virtual global, verificable y encriptada.
Dato poco conocido:
Aleo usa un sistema híbrido de pruebas:
- STARKs para transparencia
- Recursión SNARK (estilo Kimchi/Halo) para reducción del tamaño de la prueba
Este enfoque híbrido es raro y técnicamente complejo.
8. Por qué es difícil implementar ZKPs a escala de altcoins
8.1 Costo de prueba
Generar una prueba zk-SNARK requiere:
- Millones de restricciones aritméticas
- FFTs sobre campos finitos grandes
- Multiplicaciones EC multiescalar
Incluso con optimizaciones:
- La generación de la prueba puede estar limitada por la CPU.
- El uso de memoria es alto (varios cientos de MB en sistemas antiguos).
8.2 Problemas de configuración confiable
Las monedas que usan Groth16 necesitan una configuración confiable.
Si los residuos tóxicos no se destruyen, un atacante puede:
→ crear monedas falsas ilimitadas
sin ser detectado.
Zcash usó de hecho una ceremonia multipartita; los residuos tóxicos finales fueron (supuestamente) destruidos con extracción de entropía física y OPSEC rigurosa…
Pero un solo participante deshonesto habría sido suficiente para comprometer el sistema.
8.3 Los errores en el circuito pueden destruir una moneda
Si el circuito de un sistema de privacidad tiene un error no detectado que permite inflación, los nodos no pueden detectar monedas falsas.
Esto sucedió en los primeros días de Zcash (arreglado antes de explotación).
Un sutil error en restricciones aritméticas puede arruinar todo un ecosistema.
9. El futuro de las monedas ZK
Tendencias técnicas probables:
- Pruebas recursivas que permiten verificación agrupada de transacciones.
- Sistemas híbridos STARK–SNARK, como en Aleo, para reducir el tamaño de la prueba.
- Aceleración por hardware mediante GPUs y ASICs para generación de pruebas.
- Privacidad programable, permitiendo divulgación selectiva.
- Circuitos ZK optimizados para móviles (los actuales son demasiado pesados).
Algunos experimentos de investigación:
- Mempools cifrados ZK
- Motores de emparejamiento P2P basados en ZK
- DEXs basados en ZK sin revelar libros de órdenes
Ya se están prototipando en proyectos como Penumbra y Mina.
10. Ataques del mundo real y debilidades en monedas de privacidad basadas en ZK
Aunque los sistemas ZK buscan garantizar privacidad y corrección, la historia demuestra que la complejidad criptográfica a menudo crea nuevas superficies de ataque.
A continuación se presentan los problemas más importantes, reales, documentados y a menudo poco discutidos.
10.1 Vulnerabilidad de falsificación en Zcash (2018)
Se descubrió una vulnerabilidad grave en el circuito Sapling de Zcash:
- Un parámetro dentro del circuito zk-SNARK estaba incorrectamente restringido.
- Esto permitió a un atacante crear monedas protegidas falsas.
- Estas monedas serían indetectables porque todos los valores protegidos están ocultos.
Hechos clave:
- Descubierto por el criptógrafo Ariel Gabizon.
- Corregido en Sapling antes de la explotación pública.
- Zcash nunca reveló cuántas (si alguna) monedas falsificadas se crearon en el pool Sprout, porque es matemáticamente imposible de verificar.
Este incidente es el ejemplo real más fuerte de:
Fallos en sistemas ZK = inflación catastrófica e indetectable.
También motivó cambios de protocolo hacia:
- Circuitos más recientes (Sapling, Orchard)
- Sistemas de restricciones más modulares
- Mayor revisión por pares antes del despliegue
10.2 Ataque académico a MimbleWimble (2019)
MimbleWimble (usado por Grin/Beam) no utiliza zk-SNARKs, sino compromisos Pedersen + cut-through + sin direcciones.
Un investigador (Ivan Bogatyy) demostró:
- Monitorizando la red en tiempo real con ~200 nodos,
- Podía vincular el 96% de las transacciones de Grin a remitentes y receptores.
Esto no fue un fallo en la matemática ZK en sí, sino un fallo en:
- El modelo de agregación de transacciones
- La ausencia de entradas “cebo”
- Exposición de metadatos a nivel de red
Lección importante:
La privacidad no solo está en las pruebas: filtraciones en la topología de la red pueden desanonimizar incluso la matemática ZK perfecta.
10.3 Filtraciones de tiempo en implementaciones del probador
Algunas implementaciones de ZKP (especialmente circuitos SNARK antiguos) filtran patrones de tiempo:
Ejemplo:
- Al probar una transacción con muchas entradas, CPUs o GPUs producen cambios de tiempo detectables.
- Un observador con acceso a nivel de nodo puede estimar el número de notas gastadas, reduciendo los conjuntos de privacidad.
Esto se observó parcialmente en clientes Zcash tempranos antes de la optimización.
Razón:
Los probadores SNARK a menudo usan FFTs y multiplicaciones multiescalar donde la estructura dependiente de la entrada afecta el tiempo de ejecución.
10.4 Riesgos multi-curva en sistemas híbridos
Proyectos como Aleo usan:
- STARKs → luego se comprimen con recursión SNARK (Kimchi/Halo/compromisos polinomiales KZG).
Riesgo poco discutido:
Si alguna curva o esquema de compromiso polinomial en la pila de recursión falla,
todo el sistema se vuelve vulnerable.
Esta “fragilidad multi-curva” casi nunca se menciona en materiales de marketing.
11. Diseño de un circuito ZK para una moneda de privacidad (Esquema general)
Aquí hay un desglose técnico real de cómo los desarrolladores construyen un protocolo de privacidad ZK.
Paso 1: Seleccionar modelo aritmético
- R1CS (Zcash Sapling)
- PLONKish (Halo 2, Orchard)
- AIR/FRI (STARKs)
Cada uno tiene compensaciones:
- R1CS → fácil de razonar, restricciones pesadas.
- PLONK → flexible, soporta puertas personalizadas.
- STARK → sin configuración confiable, pero pruebas más grandes.
Paso 2: Elegir campo finito
Ejemplos:
- Campo escalar BLS12-381 (255 bits) para SNARKs.
- Campo Goldilocks (amigable de 64 bits) para STARKs (usado en Polygon Miden, RISC Zero).
La selección del campo afecta directamente:
- Tamaño del circuito
- Aceleración por hardware
- Velocidad de prueba
Paso 3: Construir compromisos criptográficos
Una altcoin típica usará:
- Compromisos Pedersen para valores
- Compromisos basados en SHA para caminos de Merkle
- Hash Poseidon/Rescue dentro de circuitos (amigable para FFT)
Detalle poco conocido:
Zcash dejó de usar SHA-256 dentro de circuitos porque es extremadamente costoso en conteo de restricciones — más de 25,000 restricciones por hash.
Poseidon reduce esto a ~150 restricciones.
Paso 4: Implementar prueba de propiedad (autorización de gasto)
Normalmente implica:
- Verificación de derivaciones de claves
- Verificar conocimiento de la clave privada
- Prevenir ataques de repetición
Zcash usa RedJubjub, un esquema de firma amigable con SNARK (estilo EdDSA pero optimizado para SNARKs).
Paso 5: Implementar lógica de nullifier
Nullifier = etiqueta única determinista para una nota gastada.
El circuito ZK debe garantizar:
- Cada nota genera exactamente un nullifier.
- El nullifier no puede revelar la identidad de la nota.
- El nullifier no debe permitir crear gastos múltiples.
Esta parte es extremadamente propensa a errores — y fue la causa del mayor fallo de Zcash.
Paso 6: Construir ecuación de balance
Probar:
inputs_commitments_sum = outputs_commitments_sum
Más pruebas de rango:
- Valores ≥ 0
- Valores < 2⁶⁴
En sistemas modernos, las restricciones de rango usan:
- Argumentos de búsqueda PLONK
- Bulletproofs dentro de circuitos
- Puertas personalizadas
Paso 7: Agregación final y generación de prueba
Ejemplo SNARK:
- Compilar circuito → polinomio QAP
- Realizar FFT para evaluaciones de polinomios
- Ejecutar multiplicaciones multiescalar
- Salida de prueba
- Nodos verificadores/on-chain verifican en milisegundos
Ejemplo STARK:
- Construir traza de ejecución
- Aplicar compromisos FRI
- Salida de prueba grande pero transparente
- Verificación mediante operaciones de hash
12. Aceleración de hardware ZK (Un cambio de juego)
La mayoría de los usuarios desconocen que la generación de pruebas ZKP se está convirtiendo lentamente en una carrera armamentista de hardware:
Pruebas con GPU
- Las operaciones FFT y MSM se adaptan extremadamente bien a las GPUs.
- En la testnet de Aleo, más del 50% del rendimiento de pruebas se realizó con GPUs de consumo (serie RTX).
Pruebas con ASIC
Varias empresas (Ingonyama, Cysic) están diseñando ASICs orientados a ZKP para:
- Unidades MSM
- Evaluaciones polinomiales
- Cálculos de rutas de Merkle
Detalle estadísticamente relevante:
- Un probador ASIC especializado puede generar pruebas SNARK 20–50× más rápido que una CPU.
Esto significa que el futuro de las monedas de privacidad podría depender en gran medida de ecosistemas de hardware especializados, similar a la minería de Bitcoin.
13. El problema de la auditoría transparente en monedas ZK
Las monedas de privacidad enfrentan una paradoja:
- Los usuarios quieren privacidad.
- Los desarrolladores necesitan asegurar que no haya inflación ni vulnerabilidades ocultas.
- ZK lo oculta todo.
Varias técnicas intentan resolver esto:
13.1 Claves de visualización (Zcash, Aztec)
Permiten a los auditores inspeccionar cuentas específicas sin revelar otras.
13.2 Auditorías de suministro
- Zcash puede auditar el suministro del pool transparente.
- El suministro del pool protegido no puede auditarse directamente.
- Los desarrolladores confían en la corrección del circuito para garantizar que no haya inflación.
Por eso, los errores en protocolos ZK son amenazas existenciales.
14. Hechos criptográficos poco comunes pero importantes
14.1 Los primeros artículos sobre ZKP usaban protocolos interactivos
Los SNARKs modernos son no interactivos (mediante la heurística Fiat–Shamir).
Pero los primeros ZKP requerían muchas rondas de comunicación.
14.2 Fiat–Shamir no es demostrablemente seguro
Si la función hash utilizada en Fiat–Shamir se rompe o es maleable,
la solidez puede colapsar.
Esto afecta a todas las monedas de privacidad basadas en SNARK.
14.3 Los STARKs se basan únicamente en funciones hash
Significa:
- Se cree que son seguros frente a computación cuántica.
- Su seguridad depende únicamente de la resistencia a colisiones del hash (por ejemplo, Rescue, Poseidon).
14.4 Las pruebas recursivas reducen la carga de la blockchain
Halo 2 (usado en Zcash Orchard) permite:
- Pruebas que verifican otras pruebas
- Recursión infinita
- Sin configuración confiable
Esto elimina muchas limitaciones previas de los sistemas SNARK.
15. Tabla comparativa: Sistemas ZK en principales altcoins de privacidad
| Proyecto | Tipo ZK | Configuración confiable | Tamaño de prueba | Tiempo de prueba | Notas |
|---|---|---|---|---|---|
| Zcash Orchard | Halo 2 (PLONKish) | Ninguna | ~1.4 KB | ~3–5 seg | Ecosistema más maduro |
| Firo Spark | One-of-Many + Pedersen | Ninguna | ~5–25 KB | Rápido | Privacidad del remitente muy fuerte |
| Aleo | STARK + recursión SNARK | Ninguna | ~100–200 KB | Pesado | Contratos inteligentes ZK |
| Mina | SNARK recursivo | Configuración confiable | ~22 KB | Moderado | Blockchain siempre de 22 KB |
| Aztec (pre-v2) | zk-SNARK | Configuración confiable | <500 B | Moderado | Privacidad híbrida de rollup |
| Monero | Sin ZK | N/A | ~2 KB por tx | N/A | Firmas en anillo + Bulletproofs |
Monero se incluye solo para comparación — no utiliza pruebas de conocimiento cero, lo que sorprende a muchos principiantes.
16. Las verdaderas compensaciones de usar ZKP en monedas de privacidad
Ventajas
- Privacidad máxima con garantías matemáticas.
- Capacidad de ocultar simultáneamente remitente, receptor y monto.
- Las pruebas son verificables por cualquiera.
Desventajas
- Alto costo computacional.
- Riesgos derivados de errores en los circuitos (inflación).
- Transacciones más grandes (excepto Groth16).
- Más difícil de integrar en wallets ligeros.
- Criptografía más compleja → menos expertos la entienden → auditorías más lentas.
Un problema raramente mencionado:
Los sistemas ZK aumentan las filtraciones de determinismo del wallet:
los patrones de prueba pueden revelar el hardware del wallet, tipo de CPU/GPU o incluso el sistema operativo, ofreciendo metadatos a agencias de vigilancia de la cadena.
17. Hacia dónde evolucionará la privacidad basada en ZK en los próximos 5 años
Direcciones más probables:
17.1 Capas de privacidad universales
En lugar de construir la privacidad directamente en L1:
- Redes como Aztec, Penumbra y RAILGUN buscan proveer privacidad para cadenas existentes.
- Esto evita la fragmentación entre altcoins.
17.2 Coprocesadores ZK
Dispositivos externos que manejan todos los cálculos SNARK/STARK para wallets o nodos.
17.3 Privacidad adaptable (selección por el usuario)
Los usuarios pueden divulgar selectivamente:
- Montos
- Remitente
- Receptor
- Campos de memo
Solo cuando sea legal o comercialmente requerido.
17.4 Ecosistemas de contratos inteligentes totalmente privados
Aleo, Aztec 3 y Penumbra están liderando activamente esta dirección.
17.5 Estándares de tokens compatibles con SNARK
Por ejemplo, ZK-ERC20 con:
- Saldo cifrado
- Pruebas de transferencia ZK
- Compatibilidad con herramientas de Ethereum
Esto probablemente será la primera adopción ZK verdaderamente masiva.
18. Reflexiones finales
Las pruebas de conocimiento cero redefinen fundamentalmente lo que “privacidad” significa en los ecosistemas blockchain.
No son magia, y vienen con riesgos de ingeniería, complejidad criptográfica y riesgos operativos.
Pero permiten algo que ningún otro sistema puede lograr:
privacidad matemáticamente demostrable combinada con corrección matemáticamente demostrable.
Para altcoins enfocadas en la privacidad, los ZKP son tanto el escudo definitivo como la mayor responsabilidad si se implementan mal.
Comprender los mecanismos criptográficos exactos—compromisos, circuitos, aritmetización, sistemas de prueba—es crítico para evaluar monedas de privacidad más allá de la narrativa de marketing.