Autor: Kernel Ventures Turbo Guo

Editor (es): Kernel Ventures Rose, Kernel Ventures Mandy, Kernel Ventures Joshua

TLDR: el coprocesador ZK es una solución para que las dApps utilicen recursos informáticos fuera de la cadena. Este artículo explora las soluciones existentes, diversas aplicaciones y el desarrollo futuro de los coprocesadores. Los principales temas tratados son los siguientes:

  1. zkVM de RISC Zero es una solución de coprocesador ZK que permite contratos en cadena que llaman a zkVM fuera de cadena para ejecutar código Rust específico y devolver los resultados a la cadena, al tiempo que proporciona zkp para la verificación en cadena de la exactitud del cálculo.

  2. Existen diferentes soluciones para los coprocesadores ZK. Además de zkVM, los usuarios también pueden escribir circuitos ZK personalizados para sus programas o utilizar marcos prefabricados para escribir circuitos, lo que permite que los contratos utilicen recursos informáticos fuera de la cadena.

  3. El coprocesador ZK puede desempeñar un papel en DeFi, como descargar cálculos de AMM fuera de la cadena para capturar valores similares a MEV o permitir una lógica compleja y computacionalmente intensiva para AMM. El coprocesador ZK también puede facilitar los cálculos de tasas de interés en tiempo real para los protocolos de préstamos, haciendo transparentes los cálculos de márgenes, entre otras cosas. zkAMM tiene dos enfoques de implementación, uno usando zkVM y el otro usando zkOracle.

  4. El coprocesador ZK también tiene otros casos de uso potenciales, como que las billeteras lo utilicen para realizar una verificación de identidad fuera de la cadena. Puede permitir cálculos más complejos para juegos en cadena y reducir el gas necesario para la gobernanza de DAO, entre otras aplicaciones.

  5. El panorama para los coprocesadores ZK aún es incierto, pero en comparación con los usuarios que escriben sus propios circuitos, usar una solución para la interfaz de recursos fuera de la cadena es más fácil de usar. Sin embargo, la cuestión de qué proveedores de servicios informáticos están integrados detrás de esa solución de "interfaz", ya sean proveedores de nube tradicionales o redes descentralizadas de intercambio de recursos, es otro tema importante de discusión.

1. Propósito y aplicación de los coprocesadores ZK

Fuente: Kernel Ventures

El núcleo del coprocesador ZK es trasladar la computación dentro de la cadena fuera de la cadena, utilizando pruebas ZK para garantizar la confiabilidad de la computación fuera de la cadena, lo que permite que los contratos inteligentes manejen fácilmente una gran cantidad de computación mientras se verifica la confiabilidad de la computación. Esto es similar a la idea de zkRollups, pero los Rollups utilizan recursos informáticos fuera de la cadena en la capa de protocolo de la cadena, mientras que las dApps utilizan los coprocesadores ZK para utilizar recursos fuera de la cadena.

Utilizando RISC Zero como ejemplo para explicar una solución de coprocesadores ZK, RISC Zero ha desarrollado la arquitectura del coprocesador Bonsai ZK, cuyo núcleo es el zkVM de RISC Zero. Los desarrolladores pueden generar zkp en zkVM para que "un determinado código Rust se ejecute correctamente". Con zkVM, el proceso específico de implementación de un coprocesador ZK es:

  1. Los desarrolladores envían una solicitud al contrato de retransmisión de Bonsai, es decir, para ejecutar el programa requerido por el desarrollador en zkVM.

  2. El contrato de retransmisión envía la solicitud al grupo de solicitudes fuera de la cadena.

  3. Bonsai ejecuta la solicitud en zkVM fuera de la cadena, realiza cálculos a gran escala y luego genera un recibo.

  4. Bonsai publica estas pruebas, también conocidas como "recibos", en la cadena a través del contrato de retransmisión.

Fuente: RISC Cero

En Bonsai, el programa probado se llama Programa Invitado y el recibo se utiliza para demostrar que el programa invitado se ha ejecutado correctamente. El recibo incluye un diario y un sello. En concreto, el diario lleva la salida pública de la aplicación zkVM, mientras que el sello se utiliza para demostrar la validez del recibo, es decir, para demostrar que el programa invitado se ha ejecutado correctamente. El sello en sí es un zkSTARK generado por el probador. La verificación del recibo garantiza que el diario se construya utilizando el circuito correcto, etc.

Bonsai simplifica el proceso para que los desarrolladores compilen código Rust en código de bytes zkVM, carguen programas, los ejecuten en la VM y reciban comentarios de prueba, lo que permite a los desarrolladores centrarse más en el diseño lógico. Permite que no solo la lógica del contrato parcial sino toda la lógica del contrato se ejecute fuera de la cadena. RISC Zero también utiliza continuaciones, dividiendo la generación de una prueba grande en partes más pequeñas, lo que permite la generación de pruebas para programas grandes sin consumir memoria excesiva. Además de RISC Zero, existen otros proyectos como IronMill, =nil; Foundation y Marlin que brindan soluciones generales similares.

2. Aplicación de coprocesadores ZK en DeFi

2.1 AMM - Bonsai como coprocesador

zkUniswap es un AMM que aprovecha los recursos informáticos fuera de la cadena. Su característica principal es descargar parte del cálculo del intercambio fuera de la cadena, utilizando Bonsai. Los usuarios inician una solicitud de intercambio en cadena. El contrato de retransmisión de Bonsai obtiene la solicitud, inicia el cálculo fuera de la cadena y, una vez completado, devuelve el resultado del cálculo y la prueba a la función de devolución de llamada del EVM. Si la prueba se verifica con éxito, se ejecuta el intercambio.

Sin embargo, el intercambio no se completa de una vez. Los procesos de solicitud y ejecución se encuentran en transacciones diferentes, lo que conlleva ciertos riesgos. Es decir, entre el envío de la solicitud y la finalización del intercambio, el estado del pool puede cambiar. Como la verificación se basa en el estado del grupo en el momento del envío de la solicitud, si una solicitud aún está pendiente y el estado del grupo cambia, la verificación no será válida. Esta es una consideración importante en el diseño y la seguridad de dichos sistemas.

Para solucionar este problema, los desarrolladores han diseñado un bloqueo de grupo. Cuando un usuario inicia una solicitud, todas las operaciones que no sean la liquidación del intercambio se bloquean temporalmente hasta que la computación fuera de la cadena active con éxito el intercambio en la cadena o el intercambio expire (el límite de tiempo estará preestablecido). Con un límite de tiempo establecido, incluso si hay problemas con el relé o zkp, el grupo no se bloqueará indefinidamente. El límite de tiempo específico puede ser de unos pocos minutos.

zkUniswap tiene un diseño único para capturar MEV, ya que los desarrolladores pretenden que el protocolo se beneficie de MEV. En teoría, los zkAMM también tienen MEV, ya que la primera persona que presente un intercambio puede bloquearlo y adelantarse a otros, lo que lleva a guerras de gas, y los constructores aún pueden priorizar la secuencia de transacciones. Sin embargo, zkUniswap se queda con las ganancias del MEV utilizando un método conocido como subasta holandesa gradual de tasa variable (VRGDA). Este enfoque permite a zkUniswap extraer el valor MEV para el protocolo.

El concepto de zkUniswap es bastante interesante. Implica bajar el precio de los activos bloqueados en una subasta y, si los activos bloqueados se venden rápidamente, el protocolo reconoce una alta demanda y aumenta el precio automáticamente. Si la venta de activos bloqueados se ralentiza, el protocolo baja el precio. Este enfoque innovador podría convertirse potencialmente en una nueva fuente de ingresos. Esencialmente, el protocolo introduce un mecanismo único para priorizar las transacciones, y la competencia por los precios beneficia al proyecto directamente a través de este mecanismo.

2.2 AMM - zkOracle como coprocesador

Además de usar zkVM, algunos han propuesto usar zkOracle para utilizar recursos informáticos fuera de la cadena; vale la pena señalar que zkOracle es un oráculo de E/S (entrada y salida) que maneja tanto la entrada como la salida. Generalmente, hay dos tipos de oráculos, uno es el oráculo de entrada y el otro es el oráculo de salida. El oráculo de entrada procesa (calcula) datos fuera de la cadena y los coloca en la cadena, mientras que el oráculo de salida procesa (calcula) datos dentro de la cadena y los proporciona fuera de la cadena. El oráculo de E/S (zkOracle) primero realiza la salida y luego la entrada, lo que permite que la cadena utilice recursos informáticos fuera de la cadena.

Por un lado, zkOracle utiliza datos en cadena como fuente de datos y, por otro lado, utiliza ZK para garantizar que los cálculos de los nodos de Oracle sean honestos, logrando así la función de un coprocesador. Por lo tanto, el cálculo central de AMM se puede colocar dentro de zkOracle, lo que permite la funcionalidad AMM tradicional y al mismo tiempo permite operaciones más complejas y computacionalmente intensivas utilizando zkOracle.

Fuente: github pocoswwww/zkAMM

2.3 Cálculo de la tasa de interés, cálculo del margen y otras aplicaciones

Dejando de lado el método de implementación, con la adición de coprocesadores ZK se pueden lograr muchas funcionalidades. Por ejemplo, los protocolos de préstamo pueden ajustar las tasas de interés según parámetros en tiempo real en lugar de condiciones predefinidas. Por ejemplo, aumentar la tasa de interés para atraer oferta cuando la demanda de préstamos es fuerte y bajar la tasa de interés cuando la demanda disminuye. Esto requiere que el protocolo de préstamo obtenga una gran cantidad de datos en cadena en tiempo real, preprocese los datos y calcule los parámetros fuera de la cadena (a menos que el costo en cadena sea extremadamente bajo).

Los cálculos complejos, como la determinación de saldos de márgenes, ganancias/pérdidas no realizadas, etc., también pueden utilizar coprocesadores para su ejecución. La ventaja de utilizar coprocesadores es que hace que estas aplicaciones sean más transparentes y verificables. La lógica del motor de margen ya no es una caja negra secreta. Aunque los cálculos se realizan fuera de la cadena, los usuarios pueden confiar plenamente en la exactitud de su ejecución. Este enfoque también es aplicable a los cálculos de opciones.

3. Otras aplicaciones de los coprocesadores ZK

3.1 Monedero: uso de Bonsai como coprocesador

Bonfire Wallet utiliza zkVM para descargar el cálculo de la verificación de identidad fuera de la cadena. El objetivo de esta billetera es permitir a los usuarios crear billeteras desechables utilizando información biométrica (huellas digitales) o hardware cifrado yubikey. Específicamente, Bonfire Wallet utiliza WebAuthn, un estándar de autenticación web común, para permitir a los usuarios completar la verificación de identidad web directamente con dispositivos sin contraseña. Entonces, en Bonfire Wallet, los usuarios generan una clave pública con WebAuthn (no en cadena, sino para WebAuthn) y luego la usan para crear una billetera. Cada billetera Burner tiene un contrato en cadena, que contiene la clave pública de WebAuthn. El contrato debe verificar la firma WebAuthn del usuario. Pero este cálculo es grande, por lo que Bonsai se utiliza para descargar este cálculo fuera de la cadena, a través de un programa invitado zkVM para verificar la firma fuera de la cadena y producir zkp para la verificación dentro de la cadena.

Fuente: Cartera de hoguera

3.2 Recuperación de datos en cadena: circuitos ZK escritos por usuarios

Axiom es una aplicación que no utiliza zkVM pero utiliza una solución de coprocesador diferente. Primero introduzcamos lo que pretende hacer Axiom. Aprovecha los coprocesadores ZK para permitir que los contratos accedan a información histórica en cadena. En realidad, permitir que los contratos lean datos históricos es todo un desafío, porque los contratos inteligentes generalmente obtienen datos en cadena en tiempo real, lo que puede resultar muy costoso. Es difícil para los contratos acceder a datos valiosos en cadena, como saldos históricos de cuentas o registros de transacciones.

Fuente: demostración de Axiom

Los nodos de Axiom acceden a los datos requeridos en la cadena y realizan el cálculo especificado fuera de la cadena, luego generan una prueba de conocimiento cero para el cálculo, lo que demuestra que el resultado se calcula correctamente en función de datos válidos en la cadena. Esta prueba se verifica en cadena, lo que garantiza que el contrato pueda confiar en este resultado.

Para generar zkp para cálculo fuera de cadena, es necesario compilar programas en circuitos ZK. Anteriormente también mencionamos el uso de zkVM para esto, pero Axiom sugirió que hay muchas soluciones para esto y que es necesario equilibrar el rendimiento, la flexibilidad y la experiencia de desarrollo:

  1. Circuitos personalizados: si los desarrolladores personalizan los circuitos para sus programas, el rendimiento definitivamente será el mejor, pero lleva tiempo desarrollarlos;

  2. eDSL/DSL: los desarrolladores todavía escriben sus circuitos, pero existen algunos marcos opcionales para ayudar a los desarrolladores a resolver problemas relacionados con zk, equilibrando así el rendimiento y la experiencia de desarrollo.

  3. zkVM: los desarrolladores ejecutan ZK directamente en una máquina virtual existente, lo cual es muy conveniente, pero Axiom cree que es ineficiente.

Por lo tanto, Axiom eligió la segunda opción y proporciona a los usuarios un conjunto de módulos ZK optimizados, permitiéndoles diseñar sus propios circuitos.

Proyectos similares a Axiom incluyen Herodotus, que pretende ser un middleware para mensajería entre cadenas. Dado que el procesamiento de información se realiza fuera de la cadena, es razonable permitir que diferentes cadenas obtengan los datos procesados. Otro proyecto, Space and Time, utiliza una arquitectura similar para implementar la indexación de datos.

3.3 Juegos en cadena, gobernanza DAO y otras aplicaciones

Además de lo anterior, los juegos en cadena y la gobernanza DAO también pueden utilizar coprocesadores ZK. RISC Zero cree que cualquier cálculo que requiera más de 250.000 gases sería más barato utilizando un coprocesador ZK, pero aún queda por investigar más a fondo cómo se calcula. La gobernanza de DAO también puede utilizar coprocesadores ZK, ya que involucra a varias personas y múltiples contratos, lo que requiere un uso muy intensivo desde el punto de vista computacional. RISC Zero afirma que el uso de Bonsai puede reducir las tarifas del gas en un 50%. Muchos proyectos ZKML, como Modulus Labs y Giza, utilizan la misma solución que los coprocesadores ZK, pero el concepto de coprocesadores ZK es más amplio.

Vale la pena mencionar que existen algunos proyectos auxiliares en el campo de los coprocesadores ZK, como ezkl, que proporciona compiladores para circuitos ZK, kits de herramientas para implementar ZK y herramientas para descargar computación en cadena fuera de la cadena.

4. Perspectivas futuras

Los coprocesadores proporcionan aplicaciones en cadena con recursos computacionales externos similares a la "nube", ofreciendo computación abundante y rentable, mientras que el procesamiento en cadena se centra en cálculos esenciales. En la práctica, zkVM también puede ejecutarse en la nube. Esencialmente, los coprocesadores ZK son un enfoque arquitectónico que traslada la computación dentro de la cadena fuera de la cadena, con una fuente ilimitada de recursos computacionales fuera de la cadena.

Esencialmente, los proveedores de nube tradicionales pueden proporcionar recursos informáticos fuera de la cadena, incluso el intercambio de recursos informáticos descentralizados y dispositivos locales. Cada una de estas tres direcciones tiene sus características. Los proveedores de nube tradicionales pueden proporcionar soluciones informáticas fuera de cadena relativamente maduras, la "robustez" de los futuros recursos informáticos descentralizados puede ser más fuerte y la informática local también tiene un gran potencial. Pero actualmente, muchos proyectos de coprocesadores ZK se encuentran en una etapa de proveedor de servicios de código cerrado porque el ecosistema para estos servicios no se ha formado completamente y la especialización de servicios entre los diferentes proyectos aún no se ha definido. Dos posibles escenarios para el futuro son:

  1. Cada parte del coprocesador ZK tiene una gran cantidad de proyectos que compiten entre sí.

  2. Un solo proyecto con excelente experiencia de servicio puede dominar el mercado.

Desde la perspectiva de un desarrollador, cuando se utilizan coprocesadores ZK, es posible que solo interactúen con un único proyecto de "interfaz". Esto es similar a la razón por la cual Amazon Web Services tiene una participación de mercado sustancial, ya que los desarrolladores tienden a acostumbrarse a un método de implementación específico. Sin embargo, la cuestión de qué proveedores de servicios informáticos (empresas tradicionales de nube, intercambio descentralizado de recursos) están integrados detrás de este proyecto de "interfaz" de recursos computacionales fuera de la cadena es otro tema que vale la pena discutir.

Kernel Ventures es un fondo de capital de riesgo criptográfico impulsado por una comunidad de investigación y desarrollo con más de 70 inversiones en etapas iniciales, que se centra en infraestructura, middleware, dApps, especialmente ZK, Rollup, DEX, Modular Blockchain y verticales que incorporarán a los próximos mil millones de usuarios en criptografía. como abstracción de cuentas, disponibilidad de datos, escalabilidad, etc. Durante los últimos siete años, nos hemos comprometido a apoyar el crecimiento de las comunidades de desarrollo centrales y las asociaciones universitarias de blockchain en todo el mundo.

REFERENCIA:

  1. Una guía de coprocesadores ZK para escalabilidad: https://www.risczero.com/news/a-guide-to-zk-coprocessors-for-scalability

  2. Definición de zkOracle para Ethereum: https://ethresear.ch/t/defining-zkoracle-for-ethereum/15131

  3. zkUniswap: el primer zkAMM de su tipo: https://ethresear.ch/t/zkuniswap-a-first-of-its-kind-zkamm/16839

  4. ¿Qué es un coprocesador ZK?: https://blog.axiom.xyz/what-is-a-zk-coprocessor/

  5. Una breve introducción a los coprocesadores: https://crypto.mirror.xyz/BFqUfBNVZrqYau3Vz9WJ-BACw5FT3W30iUX3mPlKxtA

  6. Últimas aplicaciones creadas en Hyper Oracle (bonificación: cosas que puede crear ahora): https://mirror.xyz/hyperoracleblog.eth/Tik3nBI9mw05Ql_aHKZqm4hNxfxaEQdDAKn7JKcx0xQ

  7. Cartera Bonfire: https://ethglobal.com/showcase/bonfire-wallet-n1dzp