Privacidad Programable en Blockchain: Cómputo Off‑Chain con Verificación On‑Chain
Las blockchains públicas proporcionan transparencia e integridad a costa de la privacidad: cada transacción y estado de contrato está expuesto a todos los participantes. Esta apertura crea problemas como los ataques de MEV (Valor Extraíble por Mineros), el copy-trading y la filtración de lógica de negocio sensible. La privacidad programable busca resolver estos problemas permitiendo cómputos sobre datos privados sin revelar los datos en sí. Dos paradigmas criptográficos emergentes están haciendo esto posible: las Máquinas Virtuales de Cifrado Totalmente Homomórfico (FHE-VM) y los Coprocesadores de Conocimiento Cero (ZK). Estos enfoques permiten el cómputo off-chain o cifrado con verificación on-chain, preservando la confidencialidad mientras se mantiene la corrección sin confianza (trustless). En este informe, profundizamos en las arquitecturas de FHE-VM y coprocesadores ZK, comparamos sus ventajas y desventajas, y exploramos casos de uso en finanzas, identidad, salud, mercados de datos y aprendizaje automático descentralizado.
Máquina Virtual de Cifrado Totalmente Homomórfico (FHE-VM)
El Cifrado Totalmente Homomórfico (FHE) permite realizar cómputos arbitrarios sobre datos cifrados sin necesidad de descifrarlos. Una Máquina Virtual FHE integra esta capacidad en los contratos inteligentes de la blockchain, permitiendo estado y lógica de contrato cifrados. En una blockchain habilitada para FHE (a menudo llamada fhEVM para diseños compatibles con EVM), todas las entradas, el almacenamiento del contrato y las salidas permanecen cifrados durante toda la ejecución. Esto significa que los validadores pueden procesar transacciones y actualizar el estado sin conocer ningún valor sensible, logrando una ejecución on-chain con confidencialidad de los datos.
Arquitectura y Diseño de FHE-VM
Una FHE-VM típica extiende un tiempo de ejecución de contrato inteligente estándar (como la Máquina Virtual de Ethereum) con soporte nativo para tipos de datos y operaciones cifradas. Por ejemplo, la FHEVM de Zama introduce enteros cifrados (euint8
, euint32
, etc.), booleanos cifrados (ebool
) e incluso arreglos cifrados como tipos de primera clase. Los lenguajes de contratos inteligentes como Solidity se aumentan mediante bibliotecas o nuevos opcodes para que los desarrolladores puedan realizar operaciones aritméticas (add
, mul
, etc.), lógicas y comparaciones directamente sobre textos cifrados. Por debajo, estas operaciones invocan primitivas FHE (por ejemplo, usando la biblioteca TFHE) para manipular bits cifrados y producir resultados cifrados.
El almacenamiento de estado cifrado es compatible para que las variables del contrato permanezcan cifradas en el estado de la blockchain. El flujo de ejecución es típicamente:
- Cifrado del Lado del Cliente: Los usuarios cifran sus entradas localmente usando la clave pública FHE antes de enviar las transacciones. La clave de cifrado es pública (para cifrar y evaluar), mientras que la clave de descifrado permanece secreta. En algunos diseños, cada usuario gestiona su propia clave; en otros, se utiliza una única clave FHE global (discutido a continuación).
- Cómputo Homomórfico On-Chain: Los mineros/validadores ejecutan el contrato con opcodes cifrados. Realizan las mismas operaciones homomórficas deterministas sobre los textos cifrados, por lo que se puede alcanzar un consenso sobre el nuevo estado cifrado. Crucialmente, los validadores nunca ven datos en texto plano; solo ven texto cifrado "sin sentido" pero aún pueden procesarlo de manera consistente.
- Descifrado (Opcional): Si un resultado necesita ser revelado o utilizado off-chain, una parte autorizada con la clave privada puede descifrar el texto cifrado de salida. De lo contrario, los resultados permanecen cifrados y pueden ser utilizados como entradas para transacciones posteriores (permitiendo cómputos consecutivos sobre un estado cifrado persistente).
Una consideración de diseño importante es la gestión de claves. Un enfoque es el de claves por usuario, donde cada usuario posee su clave secreta y solo ellos pueden descifrar las salidas relevantes para ellos. Esto maximiza la privacidad (nadie más puede descifrar tus datos), pero las operaciones homomórficas no pueden mezclar datos cifrados bajo diferentes claves sin complejos protocolos de claves múltiples. Otro enfoque, utilizado por la FHEVM de Zama, es una clave FHE global: una única clave pública cifra todos los datos del contrato y un conjunto distribuido de validadores posee partes de la clave de descifrado de umbral. Las claves públicas de cifrado y evaluación se publican on-chain, para que cualquiera pueda cifrar datos para la red; la clave privada se divide entre los validadores que pueden descifrar colectivamente si es necesario bajo un esquema de umbral. Para evitar que la colusión de validadores comprometa la privacidad, Zama emplea un protocolo FHE de umbral (basado en su investigación Noah’s Ark) con "inundación de ruido" para hacer seguras las descifraciones parciales. Solo si un quórum suficiente de validadores coopera se puede recuperar un texto plano, por ejemplo, para atender una solicitud de lectura. Sin embargo, en operación normal, ningún nodo individual ve texto plano; los datos permanecen cifrados on-chain en todo momento.
El control de acceso es otro componente crucial. Las implementaciones de FHE-VM incluyen controles detallados para gestionar quién (si es que alguien) puede activar descifrados o acceder a ciertos campos cifrados. Por ejemplo, la fhEVM de Cypher admite Listas de Control de Acceso en textos cifrados, permitiendo a los desarrolladores especificar qué direcciones o contratos pueden interactuar o recifrar ciertos datos. Algunos frameworks admiten el recifrado: la capacidad de transferir un valor cifrado de la clave de un usuario a la de otro sin exponer el texto plano. Esto es útil para cosas como mercados de datos, donde un propietario de datos puede cifrar un conjunto de datos con su clave y, tras la compra, recifrarlo a la clave del comprador, todo on-chain, sin descifrarlo públicamente.
Garantizando la Corrección y la Privacidad
Uno podría preguntarse: si todos los datos están cifrados, ¿cómo hacemos cumplir la corrección de la lógica del contrato? ¿Cómo puede la cadena prevenir operaciones inválidas si no puede "ver" los valores? El FHE por sí solo no proporciona una prueba de corrección: los validadores pueden realizar los pasos homomórficos, pero no pueden saber inherentemente si la entrada cifrada de un usuario fue válida o si se debe tomar una bifurcación condicional, etc., sin descifrar. Las pruebas de conocimiento cero (ZKPs) pueden complementar el FHE para resolver esta brecha. En una FHE-VM, típicamente los usuarios deben proporcionar una prueba ZK que certifique ciertas condiciones del texto plano cuando sea necesario. El diseño de Zama, por ejemplo, utiliza una Prueba ZK de Conocimiento de Texto Plano (ZKPoK) para acompañar cada entrada cifrada. Esto prueba que el usuario conoce el texto plano correspondiente a su texto cifrado y que cumple con los criterios esperados, sin revelar el texto plano en sí. Dichos "textos cifrados certificados" evitan que un usuario malicioso envíe un cifrado mal formado o un valor fuera de rango. De manera similar, para operaciones que requieren una decisión (por ejemplo, asegurar que el saldo de la cuenta ≥ monto del retiro), el usuario puede proporcionar una prueba ZK de que esta condición se cumple en los textos planos antes de que se ejecute la operación cifrada. De esta manera, la cadena no descifra ni ve los valores, pero gana confianza en que las transacciones cifradas siguen las reglas.
Otro enfoque en los rollups FHE es realizar una validación off-chain con ZKPs. Fhenix (un rollup L2 que usa FHE) opta por un modelo optimista donde un componente de red separado llamado Red de Servicio de Umbral puede descifrar o verificar resultados cifrados, y cualquier cómputo incorrecto puede ser desafiado con una prueba de fraude. En general, combinar FHE + ZK o pruebas de fraude asegura que la ejecución cifrada permanezca sin confianza. Los validadores descifran colectivamente solo cuando están autorizados, o verifican pruebas de que cada transición de estado cifrada fue válida sin necesidad de ver el texto plano.
Consideraciones de rendimiento: Las operaciones FHE son computacionalmente pesadas, muchos órdenes de magnitud más lentas que la aritmética normal. Por ejemplo, una simple suma de 64 bits en Ethereum cuesta ~3 gas, mientras que una suma en un entero cifrado de 64 bits (euint64) bajo la FHEVM de Zama cuesta aproximadamente 188,000 gas. Incluso una suma de 8 bits puede costar ~94k gas. Esta enorme sobrecarga significa que una implementación directa en los nodos existentes sería imprácticamente lenta y costosa. Los proyectos de FHE-VM abordan esto con bibliotecas criptográficas optimizadas (como la biblioteca TFHE-rs de Zama para el bootstrapping de compuertas binarias) y modificaciones personalizadas de EVM para el rendimiento. Por ejemplo, el cliente Geth modificado de Cypher agrega nuevos opcodes y optimiza la ejecución de instrucciones homomórficas en C++/ensamblador para minimizar la sobrecarga. Sin embargo, lograr un rendimiento utilizable requiere aceleración. El trabajo en curso incluye el uso de GPUs, FPGAs e incluso chips fotónicos especializados para acelerar los cómputos FHE. Zama informa que su rendimiento FHE mejoró 100 veces desde 2024 y apunta a miles de TPS con aceleración por GPU/FPGA. Servidores coprocesadores FHE dedicados (como el LightLocker Node de Optalysys) pueden conectarse a los nodos validadores para descargar operaciones cifradas al hardware, soportando >100 transferencias ERC-20 cifradas por segundo por nodo. A medida que el hardware y los algoritmos mejoren, la brecha entre el FHE y el cómputo en texto plano se reducirá, permitiendo que los contratos privados se acerquen a velocidades más prácticas.
Compatibilidad: Un objetivo clave de los diseños de FHE-VM es mantener la compatibilidad con los flujos de trabajo de desarrollo existentes. Las implementaciones de fhEVM de Cypher y Zama permiten a los desarrolladores escribir contratos en Solidity con cambios mínimos, utilizando una biblioteca para declarar tipos y operaciones cifradas. El resto de la cadena de herramientas de Ethereum (Remix, Hardhat, etc.) todavía se puede utilizar, ya que las modificaciones subyacentes se encuentran principalmente a nivel de cliente/nodo. Esto reduce la barrera de entrada: los desarrolladores no necesitan ser expertos en criptografía para escribir un contrato inteligente confidencial. Por ejemplo, una simple suma de dos números se puede escribir como euint32 c = a + b;
y la FHEVM se encargará de los detalles específicos del cifrado tras bambalinas. Los contratos pueden incluso interoperar con contratos normales; por ejemplo, un contrato cifrado podría generar un resultado descifrado para un contrato estándar si se desea, permitiendo una mezcla de partes privadas y públicas en un ecosistema.
Proyectos FHE-VM Actuales: Varios proyectos son pioneros en este espacio. Zama (una startup de FHE con sede en París) desarrolló el concepto central de FHEVM y las bibliotecas (TFHE-rs y una biblioteca fhevm-solidity
). No tienen la intención de lanzar su propia cadena, sino de proporcionar infraestructura a otros. Inco es una blockchain L1 (construida sobre Cosmos SDK con Evmos) que integró la FHEVM de Zama para crear una cadena confidencial modular. Sus redes de prueba (llamadas Gentry y Paillier) muestran transferencias ERC-20 cifradas y otras primitivas DeFi privadas. Fhenix es un rollup optimista de Capa 2 de Ethereum que utiliza FHE para la privacidad. Se decidieron por un enfoque optimista (prueba de fraude) en lugar de un ZK-rollup debido al alto costo de hacer FHE y ZK juntos para cada bloque. Fhenix utiliza la misma biblioteca TFHE-rs (con algunas modificaciones) e introduce una Red de Servicio de Umbral para manejar los descifrados de manera descentralizada. También hay equipos independientes como Fhenix (ahora renombrado) y startups que exploran híbridos de MPC + FHE. Además, Cypher (de Z1 Labs) está construyendo una red de Capa 3 centrada en IA y privacidad, utilizando una fhEVM con características como almacenes secretos y soporte para aprendizaje federado. El ecosistema es incipiente pero está creciendo rápidamente, impulsado por una financiación significativa; por ejemplo, Zama se convirtió en un "unicornio" con más de $130M recaudados para 2025 para avanzar en la tecnología FHE.
En resumen, una FHE-VM permite contratos inteligentes que preservan la privacidad al ejecutar toda la lógica sobre datos cifrados on-chain. Este paradigma garantiza la máxima confidencialidad —nada sensible se expone nunca en las transacciones o el estado— mientras aprovecha el consenso de la blockchain existente para la integridad. El costo es una mayor carga computacional para los validadores y complejidad en la gestión de claves y la integración de pruebas. A continuación, exploramos un paradigma alternativo que descarga el cómputo completamente off-chain y solo utiliza la cadena para la verificación: el coprocesador de conocimiento cero.
Coprocesadores de Conocimiento Cero (Coprocesadores ZK)
Un coprocesador ZK es un nuevo patrón de arquitectura de blockchain donde los cómputos costosos se realizan off-chain, y una prueba de conocimiento cero sucinta de su corrección se verifica on-chain. Esto permite que los contratos inteligentes aprovechen una potencia computacional y datos mucho mayores de lo que permitiría la ejecución on-chain, sin sacrificar la falta de confianza (trustlessness). El término coprocesador se utiliza por analogía con los coprocesadores de hardware (como un coprocesador matemático o una GPU) que manejan tareas especializadas para una CPU. Aquí, la "CPU" de la blockchain (la VM nativa como la EVM) delega ciertas tareas a un sistema de prueba de conocimiento cero que actúa como un coprocesador criptográfico. El coprocesador ZK devuelve un resultado y una prueba de que el resultado se calculó correctamente, que el contrato on-chain puede verificar y luego usar.
Arquitectura y Flujo de Trabajo
En una configuración típica, un desarrollador de dApp identifica partes de la lógica de su aplicación que son demasiado costosas o complejas para la ejecución on-chain (por ejemplo, grandes cómputos sobre datos históricos, algoritmos pesados, inferencia de modelos de ML, etc.). Implementan esas partes como un programa off-chain (en un lenguaje de alto nivel o un DSL de circuito) que puede producir una prueba de conocimiento cero de su ejecución. El componente on-chain es un contrato inteligente verificador que comprueba las pruebas y pone los resultados a disposición del resto del sistema. El flujo se puede resumir en:
- Solicitud – El contrato on-chain desencadena una solicitud para que se realice un cierto cómputo off-chain. Esto podría ser iniciado por una transacción de usuario o por un contrato que llama a la interfaz del coprocesador ZK. Por ejemplo, un contrato DeFi podría llamar a “proveInterestRate(currentState)” o un usuario llama a “queryHistoricalData(query)”.
- Ejecución y Prueba Off-Chain – Un servicio off-chain (que podría ser una red descentralizada de probadores o un servicio de confianza, dependiendo del diseño) recoge la solicitud. Reúne los datos necesarios (estado on-chain, entradas off-chain, etc.) y ejecuta el cómputo en una Máquina Virtual ZK (ZKVM) o circuito especial. Durante la ejecución, se genera una traza de prueba. Al final, el servicio produce una prueba sucinta (por ejemplo, un SNARK o STARK) que atestigua que “Calcular la función F sobre la entrada X produce la salida Y” y opcionalmente atestigua la integridad de los datos (más sobre esto a continuación).
- Verificación On-Chain – La prueba y el resultado se devuelven a la blockchain (a menudo a través de una función de devolución de llamada o callback). El contrato verificador comprueba la validez de la prueba utilizando una verificación criptográfica eficiente (comprobaciones de emparejamiento, etc.). Si es válida, el contrato puede ahora confiar en la salida Y como correcta. El resultado puede almacenarse en el estado, emitirse como un evento o introducirse en la lógica posterior del contrato. Si la prueba es inválida o no se proporciona en un cierto tiempo, la solicitud puede considerarse fallida (y potencialmente se activa alguna lógica de respaldo o de tiempo de espera).
Figura 1: Arquitectura de un Coprocesador ZK (ejemplo de Bonsai de RISC Zero). Off-chain, un programa se ejecuta en una ZKVM con entradas de la llamada al contrato inteligente. Se devuelve una prueba de ejecución on-chain a través de un contrato relay, que invoca una devolución de llamada (callback) con los resultados verificados.
Críticamente, el costo de gas on-chain para la verificación es constante (o crece muy lentamente) independientemente de cuán complejo fue el cómputo off-chain. Verificar una prueba sucinta podría costar del orden de unos cientos de miles de gas (una fracción de un bloque de Ethereum), pero esa prueba podría representar millones de pasos computacionales realizados off-chain. Como bromeó un desarrollador, “¿Quieres probar una firma digital? ~15.”. Esta escalabilidad es una gran ventaja: las dApps pueden ofrecer funcionalidades complejas (análisis de big data, modelos financieros elaborados, etc.) sin congestionar la blockchain.
Los componentes principales de un sistema de coprocesador ZK son:
-
Entorno de Generación de Pruebas: Puede ser una ZKVM de propósito general (capaz de ejecutar programas arbitrarios) o circuitos personalizados adaptados a cómputos específicos. Los enfoques varían:
- Algunos proyectos utilizan circuitos hechos a mano para cada consulta o función soportada (maximizando la eficiencia para esa función).
- Otros proporcionan un Lenguaje Específico de Dominio (DSL) o un DSL Embebido que los desarrolladores usan para escribir su lógica off-chain, que luego se compila en circuitos (equilibrando la facilidad de uso y el rendimiento).
- El enfoque más flexible es una zkVM: una máquina virtual (a menudo basada en arquitecturas RISC) donde los programas se pueden escribir en lenguajes estándar (Rust, C, etc.) y probarse automáticamente. Esto sacrifica el rendimiento (simular una CPU en un circuito agrega sobrecarga) por la máxima experiencia del desarrollador.
-
Acceso e Integridad de los Datos: Un desafío único es alimentar el cómputo off-chain con los datos correctos, especialmente si esos datos residen en la blockchain (bloques pasados, estados de contratos, etc.). Una solución ingenua es que el probador lea de un nodo de archivo y confíe en él, pero eso introduce suposiciones de confianza. En cambio, los coprocesadores ZK suelen probar que cualquier dato on-chain utilizado fue auténtico al vincularlo a pruebas de Merkle o compromisos de estado. Por ejemplo, el programa de consulta podría tomar un número de bloque y una prueba de Merkle de una ranura de almacenamiento o transacción, y el circuito verificará esa prueba contra un hash de encabezado de bloque conocido. Existen tres patrones:
- Datos en Línea: Poner los datos necesarios on-chain (como entrada al verificador) para que puedan ser verificados directamente. Esto es muy costoso para grandes volúmenes de datos y socava todo el propósito.
- Confiar en un Oráculo: Hacer que un servicio de oráculo alimente los datos a la prueba y los certifique. Esto es más simple pero reintroduce la confianza en un tercero.
- Probar la Inclusión de Datos vía ZK: Incorporar pruebas de inclusión de datos en el historial de la cadena dentro del propio circuito de conocimiento cero. Esto aprovecha el hecho de que cada encabezado de bloque de Ethereum se compromete con todo el estado anterior (a través de la raíz de estado) y el historial de transacciones. Al verificar las pruebas de Merkle Patricia de los datos dentro del circuito, la prueba de salida asegura al contrato que “este cómputo utilizó datos genuinos de la blockchain del bloque N” sin necesidad de confianza adicional.
El tercer enfoque es el más trustless y es utilizado por coprocesadores ZK avanzados como Axiom y Xpansion (aumenta el costo de la prueba, pero es preferible por seguridad). Por ejemplo, el sistema de Axiom modela la estructura de bloques de Ethereum, el trie de estado y el trie de transacciones dentro de sus circuitos, por lo que puede probar afirmaciones como “la cuenta
X
tenía un saldoY
en el bloqueN
” o “una transacción con ciertas propiedades ocurrió en el bloque N”. Aprovecha el hecho de que, dado un hash de bloque reciente de confianza, se puede probar recursivamente la inclusión de datos históricos sin confiar en ninguna parte externa. -
Contrato Verificador: Este contrato on-chain contiene la clave de verificación y la lógica para aceptar o rechazar pruebas. Para SNARKs como Groth16 o PLONK, el verificador podría hacer algunos emparejamientos de curvas elípticas; para STARKs, podría hacer algunos cómputos de hash. Las optimizaciones de rendimiento como la agregación y la recursión pueden minimizar la carga on-chain. Por ejemplo, Bonsai de RISC Zero utiliza un envoltorio de STARK a SNARK: ejecuta una VM basada en STARK off-chain por velocidad, pero luego genera una pequeña prueba SNARK que atestigua la validez del STARK. Esto reduce el tamaño de la prueba de cientos de kilobytes a unos pocos cientos de bytes, haciendo que la verificación on-chain sea factible y barata. El verificador de Solidity entonces solo comprueba el SNARK (que es una operación de tiempo constante).
En términos de despliegue, los coprocesadores ZK pueden funcionar como redes similares a la capa 2 o como servicios puramente off-chain. Algunos, como Axiom, comenzaron como un servicio especializado para Ethereum (con el respaldo de Paradigm) donde los desarrolladores envían consultas a la red de probadores de Axiom y obtienen pruebas on-chain. El eslogan de Axiom era proporcionar a los contratos de Ethereum “acceso sin confianza a todos los datos on-chain y cómputo expresivo arbitrario sobre ellos”. Actúa efectivamente como un oráculo de consultas donde las respuestas son verificadas por ZKPs en lugar de confianza. Otros, como Bonsai de RISC Zero, ofrecen una plataforma más abierta: cualquier desarrollador puede subir un programa (compilado a una ZKVM compatible con RISC-V) y usar el servicio de pruebas de Bonsai a través de un contrato relay. El patrón de relay, como se ilustra en la Figura 1, implica un contrato que media las solicitudes y respuestas: el contrato de la dApp llama al relay para solicitar una prueba, el servicio off-chain escucha esto (por ejemplo, a través de un evento o una llamada directa), calcula la prueba, y luego el relay invoca una función de devolución de llamada en el contrato de la dApp con el resultado y la prueba. Este modelo asíncrono es necesario porque la prueba puede tardar desde segundos hasta minutos dependiendo de la complejidad. Introduce una latencia (y una suposición de liveness de que el probador responderá), mientras que los cómputos de FHE-VM ocurren sincrónicamente dentro de un bloque. Diseñar la aplicación para manejar este flujo de trabajo asíncrono (posiblemente similar a las respuestas de un Oráculo) es parte del uso de un coprocesador ZK.
Proyectos Notables de Coprocesadores ZK
-
Axiom: Axiom es un coprocesador ZK diseñado para Ethereum, enfocado originalmente en probar consultas de datos on-chain históricos. Utiliza el framework de pruebas Halo2 (un SNARK tipo Plonk) para crear pruebas que incorporan las estructuras criptográficas de Ethereum. En el sistema de Axiom, un desarrollador puede consultar cosas como “¿cuál era el estado del contrato X en el bloque N?” o realizar un cómputo sobre todas las transacciones en un rango. Por debajo, los circuitos de Axiom tuvieron que implementar la lógica de estado/trie de Ethereum, incluso realizando operaciones de curva elíptica y verificación de SNARK dentro del circuito para soportar la recursión. Trail of Bits, en una auditoría, señaló la complejidad de los circuitos Halo2 de Axiom que modelan bloques y estados completos. Después de la auditoría, Axiom generalizó su tecnología en una OpenVM, permitiendo que código Rust arbitrario sea probado con la misma infraestructura basada en Halo2. (Esto refleja la tendencia de pasar de circuitos específicos de dominio a un enfoque de ZKVM más general). El equipo de Axiom demostró consultas ZK que Ethereum nativamente no puede hacer, permitiendo un acceso sin estado a cualquier dato histórico con integridad criptográfica. También han enfatizado la seguridad, detectando y corrigiendo errores de circuitos sub-restringidos y asegurando la solidez. Aunque el producto inicial de Axiom fue cerrado durante su pivote, su enfoque sigue siendo un hito en los coprocesadores ZK.
-
RISC Zero Bonsai: RISC Zero es una ZKVM basada en la arquitectura RISC-V. Su zkVM puede ejecutar programas arbitrarios (escritos en Rust, C++ y otros lenguajes compilados a RISC-V) y producir una prueba STARK de la ejecución. Bonsai es el servicio en la nube de RISC Zero que proporciona esta prueba bajo demanda, actuando como un coprocesador para contratos inteligentes. Para usarlo, un desarrollador escribe un programa (digamos una función que realiza matemáticas complejas o verifica una respuesta de API off-chain), lo sube al servicio Bonsai y despliega un contrato verificador correspondiente. Cuando el contrato necesita ese cómputo, llama al relay de Bonsai que desencadena la generación de la prueba y devuelve el resultado a través de una devolución de llamada. Una aplicación de ejemplo demostrada fue el cómputo de gobernanza off-chain: RISC Zero mostró una DAO usando Bonsai para contar votos y calcular métricas de votación complejas off-chain, y luego publicar una prueba para que el contrato Gobernador on-chain pudiera confiar en el resultado con un costo de gas mínimo. La tecnología de RISC Zero enfatiza que los desarrolladores pueden usar paradigmas de programación familiares —por ejemplo, escribir una función en Rust para calcular algo— y el trabajo pesado de la creación de circuitos es manejado por la zkVM. Sin embargo, las pruebas pueden ser grandes, por lo que, como se señaló anteriormente, implementaron una compresión SNARK para la verificación on-chain. En agosto de 2023, verificaron con éxito pruebas de RISC Zero en la red de prueba Sepolia de Ethereum, con un costo del orden de 300k de gas por prueba. Esto abre la puerta para que las dApps de Ethereum usen Bonsai hoy como una solución de escalado y privacidad. (Bonsai todavía está en alfa, no listo para producción, y utiliza una configuración SNARK temporal sin una ceremonia).
-
Otros: Existen numerosos otros actores e iniciativas de investigación. Expansion/Xpansion (como se menciona en un blog) utiliza un enfoque de DSL embebido, donde los desarrolladores pueden escribir consultas sobre datos on-chain con un lenguaje especializado, y este se encarga internamente de la generación de pruebas. Cairo de StarkWare y zkEVM de Polygon son VMs de ZK-rollup más generales, pero su tecnología podría ser reutilizada para un uso similar a un coprocesador al verificar pruebas dentro de contratos L1. También vemos proyectos en el dominio de ZKML (ZK Machine Learning), que actúan efectivamente como coprocesadores para verificar la inferencia de modelos de ML o los resultados de entrenamiento on-chain. Por ejemplo, una configuración de zkML puede probar que “una inferencia de red neuronal sobre entradas privadas produjo la clasificación X” sin revelar las entradas ni realizar el cómputo on-chain. Estos son casos especiales del concepto de coprocesador aplicado a la IA.
Suposiciones de confianza: Los coprocesadores ZK se basan en la solidez de las pruebas criptográficas. Si el sistema de prueba es seguro (y cualquier configuración de confianza se realiza honestamente), entonces una prueba aceptada garantiza que el cómputo fue correcto. No se necesita confianza adicional en el probador; incluso un probador malicioso no puede convencer al verificador de una afirmación falsa. Sin embargo, existe una suposición de liveness: alguien debe realizar realmente el cómputo off-chain y producir la prueba. En la práctica, esto podría ser una red descentralizada (con incentivos o tarifas para hacer el trabajo) o un único operador de servicio. Si nadie proporciona la prueba, la solicitud on-chain podría quedar sin resolver. Otro aspecto sutil de confianza es la disponibilidad de datos para entradas off-chain que no están en la blockchain. Si el cómputo depende de algunos datos privados o externos, el verificador no puede saber si esos datos se proporcionaron honestamente a menos que se utilicen medidas adicionales (como compromisos de datos o firmas de oráculos). Pero para cómputos de datos puramente on-chain, los mecanismos descritos aseguran una falta de confianza equivalente a la de la propia cadena (Axiom argumentó que sus pruebas ofrecen "seguridad criptográficamente equivalente a Ethereum" para consultas históricas).
Privacidad: Las pruebas de conocimiento cero también soportan inherentemente la privacidad: el probador puede mantener las entradas ocultas mientras prueba afirmaciones sobre ellas. En un contexto de coprocesador, esto significa que una prueba puede permitir que un contrato utilice un resultado que se derivó de datos privados. Por ejemplo, una prueba podría mostrar “la puntuación de crédito del usuario > 700, por lo tanto, aprobar el préstamo” sin revelar la puntuación de crédito real o los datos brutos. El caso de uso de Axiom se centraba más en datos públicamente conocidos (historial de la blockchain), por lo que la privacidad no era el foco allí. Pero la zkVM de RISC Zero podría usarse para probar afirmaciones sobre datos secretos proporcionados por un usuario: los datos permanecen off-chain y solo el resultado necesario va on-chain. Vale la pena señalar que, a diferencia del FHE, una prueba ZK no suele proporcionar confidencialidad continua del estado; es una prueba única. Si un flujo de trabajo necesita mantener un estado secreto a través de transacciones, se podría construir haciendo que el contrato almacene un compromiso con el estado y cada prueba muestre una transición de estado válida del compromiso antiguo al nuevo, con los secretos ocultos. Así es esencialmente como funcionan los zk-rollups para transacciones privadas (como Aztec o Zcash). Por lo tanto, los coprocesadores ZK pueden facilitar máquinas de estado totalmente privadas, pero la implementación no es trivial; a menudo se utilizan para cómputos únicos donde la entrada o la salida (o ambas) pueden ser privadas según sea necesario.
Experiencia del desarrollador: Usar un coprocesador ZK generalmente requiere aprender nuevas herramientas. Escribir circuitos personalizados (opción (1) anterior) es bastante complejo y generalmente solo se hace para propósitos específicos. Opciones de nivel superior como los DSLs o las zkVMs facilitan la vida pero aún agregan sobrecarga: el desarrollador debe escribir y desplegar código off-chain y gestionar la interacción. A diferencia de la FHE-VM, donde el cifrado se maneja principalmente tras bambalinas y el desarrollador escribe código de contrato inteligente normal, aquí el desarrollador necesita particionar su lógica y posiblemente escribir en un lenguaje diferente (Rust, etc.) para la parte off-chain. Sin embargo, iniciativas como los DSLs Noir, Leo, Circom o el enfoque de RISC Zero están mejorando rápidamente la accesibilidad. Por ejemplo, RISC Zero proporciona plantillas e integración con Foundry de tal manera que un desarrollador puede simular su código off-chain localmente (para la corrección) y luego conectarlo sin problemas a las pruebas de Solidity a través de la devolución de llamada de Bonsai. Con el tiempo, podemos esperar frameworks de desarrollo que abstraigan si una pieza de lógica se ejecuta a través de una prueba ZK o on-chain; el compilador o las herramientas podrían decidir en función del costo.
FHE-VM vs Coprocesador ZK: Comparación
Tanto las FHE-VMs como los coprocesadores ZK permiten una forma de “cómputo sobre datos privados con garantía on-chain”, pero difieren fundamentalmente en su arquitectura. La siguiente tabla resume las diferencias clave:
Aspecto | FHE-VM (Ejecución Cifrada On-Chain) | Coprocesador ZK (Prueba Off-Chain) |
---|---|---|
Dónde ocurre el cómputo | Directamente on-chain (todos los nodos ejecutan operaciones homomórficas sobre textos cifrados). | Off-chain (un probador o red ejecuta el programa; solo se verifica una prueba on-chain). |
Confidencialidad de los datos | Cifrado completo: los datos permanecen cifrados en todo momento on-chain; los validadores nunca ven texto plano. Solo los poseedores de las claves de descifrado pueden descifrar las salidas. | Conocimiento cero: las entradas privadas del probador nunca se revelan on-chain; la prueba no revela secretos más allá de lo que está en las salidas públicas. Sin embargo, cualquier dato utilizado en el cómputo que deba afectar el estado on-chain debe codificarse en la salida o en un compromiso. Los secretos permanecen off-chain por defecto. |
Modelo de confianza | Confianza en la ejecución por consenso y la criptografía: si la mayoría de los validadores sigue el protocolo, la ejecución cifrada es determinista y correcta. No se necesita confianza externa para la corrección del cómputo (todos los nodos lo recalculan). Se debe confiar en la seguridad del esquema FHE (generalmente basado en la dureza de los problemas de retículos) para la privacidad. En algunos diseños, también se confía en que no ocurra una colusión de suficientes validadores para hacer un mal uso de las claves de umbral. | Confianza en la seguridad del sistema de prueba (solidez de SNARK/STARK). Si la prueba se verifica, el resultado es correcto con certeza criptográfica. Los probadores off-chain no pueden engañar a las matemáticas. Hay una suposición de liveness sobre los probadores para que realmente hagan el trabajo. Si se utiliza una configuración de confianza (por ejemplo, SRS de SNARK), se debe confiar en que se generó honestamente o usar sistemas transparentes/sin configuración. |
Costo on-chain y escalabilidad | Alto costo por transacción: Las operaciones homomórficas son extremadamente costosas computacionalmente, y cada nodo debe realizarlas. Los costos de gas son altos (por ejemplo, más de 100k de gas por una sola suma de 8 bits). Los contratos complejos están limitados por lo que cada validador puede calcular en un bloque. El rendimiento es mucho menor que el de los contratos inteligentes normales a menos que se emplee hardware especializado. La escalabilidad se mejora con criptografía más rápida y aceleración por hardware, pero fundamentalmente cada operación aumenta la carga de trabajo de la cadena. | Bajo costo de verificación: Verificar una prueba sucinta es eficiente y de tamaño constante, por lo que el gas on-chain es modesto (cientos de miles de gas para cualquier tamaño de cómputo). Esto desacopla la complejidad de los límites de recursos on-chain: los grandes cómputos no tienen un costo on-chain adicional. Por lo tanto, escala en términos de carga on-chain. Off-chain, el tiempo de prueba puede ser significativo (minutos o más para tareas enormes) y podría requerir máquinas potentes, pero esto no ralentiza directamente la blockchain. El rendimiento general puede ser alto siempre que las pruebas se puedan generar a tiempo (potenciales redes de probadores en paralelo). |
Latencia | Los resultados están disponibles inmediatamente en la misma transacción/bloque, ya que el cómputo ocurre durante la ejecución. Sin viajes de ida y vuelta adicionales: operación síncrona. Sin embargo, un mayor tiempo de procesamiento de bloques podría aumentar la latencia de la blockchain si las operaciones FHE son lentas. | Inherente asíncrono. Típicamente requiere una transacción para solicitar y una transacción posterior (o devolución de llamada) para proporcionar la prueba/resultado. Esto introduce un retraso (posiblemente de segundos a horas dependiendo de la complejidad de la prueba y el hardware de prueba). No es adecuado para la finalidad instantánea de una sola transacción, más bien un modelo de trabajo asíncrono. |
Garantías de privacidad | Fuerte: Todo (entradas, salidas, estado intermedio) puede permanecer cifrado on-chain. Puedes tener un estado cifrado de larga duración que múltiples transacciones actualizan sin revelarlo nunca. Solo las acciones de descifrado autorizadas (si las hay) revelan las salidas, y estas pueden controlarse mediante claves/ACLs. Sin embargo, consideraciones de canal lateral como el uso de gas o los registros de eventos deben gestionarse para que no filtren patrones (los diseños de fhEVM se esfuerzan por una ejecución ajena a los datos con gas constante para las operaciones para evitar fugas). | Selectiva: La prueba revela lo que sea que esté en las salidas públicas o sea necesario para verificar (por ejemplo, un compromiso con el estado inicial). Los diseñadores pueden asegurarse de que solo se revele el resultado previsto, y todas las demás entradas permanezcan ocultas con conocimiento cero. Pero a diferencia del FHE, la blockchain típicamente no almacena el estado oculto; la privacidad se logra manteniendo los datos completamente off-chain. Si se necesita un estado privado persistente, el contrato puede almacenar un compromiso criptográfico con él (de modo que las actualizaciones de estado aún revelan un nuevo compromiso cada vez). La privacidad está limitada por lo que eliges probar; tienes flexibilidad para probar, por ejemplo, que se cumplió un umbral sin revelar valores exactos. |
Aplicación de la integridad | Por diseño, todos los validadores recalculan el siguiente estado homomórficamente, por lo que si un actor malicioso proporciona un resultado de texto cifrado incorrecto, otros detectarán una discrepancia: el consenso falla a menos que todos obtengan el mismo resultado. Por lo tanto, la integridad se aplica mediante la ejecución redundante (como en una blockchain normal, solo que con datos cifrados). A menudo se utilizan pruebas ZK adicionales para hacer cumplir las reglas de negocio (por ejemplo, que un usuario no pudo violar una restricción) porque los validadores no pueden verificar directamente las condiciones del texto plano. | La integridad es aplicada por el contrato verificador que comprueba la prueba ZK. Mientras la prueba se verifique, se garantiza que el resultado es consistente con alguna ejecución válida del programa off-chain. No se necesita una suposición de mayoría honesta para la corrección; incluso un solo verificador honesto (el propio código del contrato) es suficiente. El contrato on-chain simplemente rechazará cualquier prueba falsa o faltante (similar a como rechazaría una firma inválida). Una consideración: si el probador aborta o se retrasa, el contrato puede necesitar una lógica de respaldo (o los usuarios pueden necesitar intentarlo de nuevo más tarde), pero no aceptará resultados incorrectos. |
Experiencia del desarrollador | Pros: Se pueden usar en gran medida lenguajes de contratos inteligentes familiares (Solidity, etc.) con extensiones. La confidencialidad es manejada por la plataforma; los desarrolladores se preocupan principalmente por qué cifrar y quién tiene las claves. La composición de contratos cifrados y normales es posible, manteniendo la componibilidad de DeFi (solo con variables cifradas). Contras: Deben entender las limitaciones de FHE, por ejemplo, no hay saltos condicionales directos sobre datos secretos sin un manejo especial, profundidad de circuito limitada (aunque el bootstrapping en TFHE permite una longitud de cómputo arbitraria a expensas del tiempo). Depurar la lógica cifrada puede ser complicado ya que no se pueden introspeccionar fácilmente los valores en tiempo de ejecución sin la clave. Además, la gestión de claves y los permisos agregan complejidad al diseño del contrato. | Pros: Potencialmente se puede usar cualquier lenguaje de programación para la parte off-chain (especialmente con una zkVM). Aprovechar código/bibliotecas existentes en el programa off-chain (con advertencias sobre la compatibilidad con ZK). No se necesita criptografía personalizada por parte del desarrollador si se usa una ZKVM general: escriben código normal y obtienen una prueba. Además, el cómputo pesado puede usar bibliotecas (por ejemplo, código de aprendizaje automático) que nunca se ejecutarían on-chain. Contras: Los desarrolladores deben orquestar la infraestructura off-chain o usar un servicio de prueba. Manejar flujos de trabajo asíncronos e integrarlos con la lógica on-chain requiere más trabajo de diseño (por ejemplo, almacenar un estado pendiente, esperar una devolución de llamada). Escribir circuitos eficientes o código zkVM puede requerir aprender nuevas restricciones (por ejemplo, sin punto flotante, usar punto fijo o primitivas especiales; evitar ramificaciones pesadas que disparan el tiempo de prueba; optimizar para el recuento de restricciones). También existe la carga de lidiar con fallos de prueba, tiempos de espera, etc., que no son preocupaciones en Solidity regular. El ecosistema de herramientas está creciendo, pero es un nuevo paradigma para muchos. |
Ambos enfoques están siendo mejorados activamente, e incluso vemos convergencia: como se señaló, las ZKPs se utilizan dentro de las FHE-VMs para ciertas verificaciones, y a la inversa, algunos investigadores proponen usar FHE para mantener privadas las entradas del probador en ZK (para que un probador en la nube no vea tus datos secretos). Es concebible que los sistemas futuros los combinen, por ejemplo, realizando FHE off-chain y luego probando la corrección de eso en la cadena, o usando FHE on-chain pero probando con ZK a los clientes ligeros que las operaciones cifradas se realizaron correctamente. Cada técnica tiene sus fortalezas: la FHE-VM ofrece privacidad continua e interacción en tiempo real a costa de un cómputo pesado, mientras que los coprocesadores ZK ofrecen escalabilidad y flexibilidad a costa de latencia y complejidad.
Casos de Uso e Implicaciones
La llegada de la privacidad programable desbloquea una gran cantidad de nuevas aplicaciones de blockchain en todas las industrias. A continuación, exploramos cómo las FHE-VMs y los coprocesadores ZK (o híbridos) pueden potenciar diversos dominios al permitir contratos inteligentes que preservan la privacidad y una economía de datos segura.
DeFi Confidencial y Finanzas
En las finanzas descentralizadas, la privacidad puede mitigar el front-running, proteger las estrategias de trading y satisfacer el cumplimiento normativo sin sacrificar la transparencia donde sea necesario. El DeFi Confidencial podría permitir a los usuarios interactuar con protocolos sin revelar sus posiciones al mundo.
-
Transacciones Privadas y Saldos Ocultos: Usando FHE, se pueden implementar transferencias de tokens confidenciales (saldos y transacciones ERC-20 cifrados) o pools protegidos en una L1 de blockchain. Ningún observador puede ver cuánto de un token tienes o transferiste, eliminando el riesgo de ataques dirigidos basados en las tenencias. Las pruebas ZK pueden asegurar que los saldos se mantengan sincronizados y que no ocurra un doble gasto (similar a Zcash pero en plataformas de contratos inteligentes). Un ejemplo es un AMM (Creador de Mercado Automatizado) confidencial donde las reservas del pool y las operaciones están cifradas on-chain. Los arbitrajistas o front-runners no pueden explotar el pool porque no pueden observar el deslizamiento de precios hasta después de que la operación se haya liquidado, reduciendo el MEV. Solo después de un cierto retraso o a través de un mecanismo de acceso controlado se podrían revelar algunos datos para auditoría.
-
Subastas y Trading Resistentes al MEV: Los mineros y los bots explotan la transparencia de las transacciones para hacer front-running en las operaciones. Con el cifrado, se podría tener un mempool cifrado o subastas por lotes donde las órdenes se envían en texto cifrado. Solo después de que la subasta se liquida, las operaciones se descifran. Este concepto, a veces llamado Flujo Justo de Órdenes, se puede lograr con descifrado de umbral (múltiples validadores descifran colectivamente el lote) o probando los resultados de la subasta a través de ZK sin revelar las ofertas individuales. Por ejemplo, un coprocesador ZK podría tomar un lote de ofertas selladas off-chain, calcular el precio de liquidación de la subasta y generar solo ese precio y los ganadores con pruebas. Esto preserva la equidad y la privacidad de las ofertas perdedoras.
-
Préstamos y Derivados Confidenciales: En los préstamos DeFi, los usuarios podrían no querer revelar el tamaño de sus préstamos o colateral (puede afectar el sentimiento del mercado o invitar a la explotación). Una FHE-VM puede mantener un libro de préstamos cifrado donde los detalles de cada préstamo están cifrados. La lógica del contrato inteligente aún puede hacer cumplir reglas como las condiciones de liquidación operando sobre factores de salud cifrados. Si el ratio de colateral de un préstamo cae por debajo del umbral, el contrato (con la ayuda de pruebas ZK) puede marcarlo para liquidación sin exponer nunca los valores exactos; podría simplemente producir una bandera de sí/no en texto plano. De manera similar, las posiciones secretas de derivados u opciones podrían gestionarse on-chain, revelando solo métricas de riesgo agregadas. Esto podría prevenir el copy trading y proteger estrategias propietarias, fomentando una mayor participación institucional.
-
Privacidad Conforme a la Normativa: No todos los contextos financieros desean un anonimato total; a veces se necesita una divulgación selectiva para la regulación. Con estas herramientas, podemos lograr una privacidad regulada: por ejemplo, las operaciones son privadas para el público, pero un exchange regulado puede descifrar o recibir pruebas sobre ciertas propiedades. Se podría probar a través de ZK que “esta operación no involucró una dirección en la lista negra y ambas partes están verificadas por KYC” sin revelar las identidades a la cadena. Este equilibrio podría satisfacer las reglas Anti-Lavado de Dinero (AML) mientras se mantienen confidenciales las identidades y posiciones de los usuarios para todos los demás. El FHE podría permitir que un contrato de oficial de cumplimiento on-chain escanee transacciones cifradas en busca de señales de riesgo (con una clave de descifrado accesible solo bajo orden judicial, por ejemplo).
Identidad Digital y Datos Personales
Los sistemas de identidad pueden beneficiarse significativamente de la tecnología de privacidad on-chain. Actualmente, poner credenciales o atributos personales en un registro público es impráctico debido a las leyes de privacidad y la renuencia de los usuarios. Con FHE y ZK, la identidad auto-soberana puede realizarse de una manera que preserve la privacidad:
-
Credenciales de Conocimiento Cero: Usando pruebas ZK (ya comunes en algunos proyectos de identidad), un usuario puede probar afirmaciones como “Soy mayor de 18 años”, “Tengo una licencia de conducir válida” o