
Autor: Kernel Ventures Turbo Guo
Revisores: Kernel Ventures Mandy, Kernel Ventures Joshua
TLDR:
El coprocesador ZK es una solución que permite a las dApps utilizar recursos informáticos fuera de la cadena. Este artículo analiza principalmente la implementación del coprocesador, diversas aplicaciones y direcciones de desarrollo futuras.
zkVM de RISC Zero es una solución de coprocesador ZK que permite que los contratos dentro de la cadena llamen a zkVM fuera de la cadena para ejecutar código Rust específico y devolver los resultados a la cadena, al tiempo que proporciona zkp para que el contrato verifique si el cálculo es correcto.
Los coprocesadores ZK tienen diferentes métodos de implementación, además de zkVM, los usuarios también pueden escribir circuitos ZK personalizados para sus propios programas o utilizar marcos prefabricados para escribir circuitos, lo que permite que los contratos utilicen recursos informáticos fuera de la cadena.
El coprocesador ZK puede desempeñar un papel en DeFi, como colocar los cálculos de AMM fuera de la cadena, permitir que el protocolo capture valores similares a MEV o permitir que AMM implemente una lógica operativa compleja y computacionalmente intensiva. El coprocesador ZK también puede permitir que los protocolos de préstamos calculen las tasas de interés en tiempo real, haciendo transparentes los cálculos de márgenes, etc. Hay dos implementaciones de zkAMM, una usa zkVM y la otra usa zkOracle.
Existen otros usos potenciales del coprocesador ZK. Por ejemplo, las billeteras pueden usar el coprocesador ZK para realizar la verificación de identidad fuera de la cadena. El coprocesador también puede permitir que los juegos en cadena realicen cálculos más complejos y reduzcan el gas necesario para la gobernanza de DAO. esperar.
El patrón del coprocesador ZK está indeciso, pero en comparación con los usuarios que escriben sus propios circuitos, es más amigable usar un proyecto como una interfaz para llamar a recursos fuera de la cadena, pero qué proveedores de servicios informáticos (proveedores de nube tradicionales, proveedores de nube tradicionales, etc.) están conectados detrás del proyecto de "interfaz"? El intercambio descentralizado de recursos) es otro tema que vale la pena discutir.
1. El significado y la aplicación del coprocesador ZK.

Fuente de la imagen: Kernel Ventures
El núcleo del coprocesador ZK es mover los cálculos dentro de la cadena fuera de la cadena y utilizar ZK para demostrar la confiabilidad del proceso de cálculo fuera de la cadena, lo que permite que los contratos inteligentes manejen fácilmente grandes cantidades de cálculos y, al mismo tiempo, permite que los contratos verifiquen la confiabilidad. de cálculos. Esto es similar a la idea de zkRollup, pero Rollup es una capa de protocolo en cadena que utiliza recursos informáticos fuera de la cadena, mientras que el coprocesador ZK es una dApp que utiliza recursos fuera de la cadena.
Aquí se utiliza RISC Zero para explicar la implementación de un coprocesador ZK, pero existen muchas implementaciones de coprocesadores ZK, que se presentarán más adelante. RISC Zero desarrolló la arquitectura del coprocesador Bonsai ZK, cuyo núcleo es zkVM de RISC Zero. Los desarrolladores pueden generar zkp en zkVM en el caso de que "una determinada parte del código Rust se ejecute correctamente". Con zkVM, el proceso específico para implementar el coprocesador ZK es:
El desarrollador inicia una solicitud al contrato de retransmisión de Bonsai, es decir, el programa solicitado por el desarrollador se ejecuta en zkVM.
El contrato de retransmisión envía la solicitud al grupo de solicitudes fuera de la cadena.
Bonsai ejecuta la solicitud en zkVM fuera de la cadena, realiza operaciones a gran escala fuera de la cadena y luego genera un recibo.
Bonsai envía estas pruebas, también llamadas "recibos", a la cadena a través de un contrato de retransmisión.

Fuente de la imagen: RISC Cero
El programa certificado en Bonsai se llama Programa Invitado y el recibo se utiliza para demostrar que el programa invitado se ejecutó correctamente. Las credenciales incluyen un diario y un sello. Específicamente, el Diario lleva la salida pública de la aplicación zkVM y el sello se utiliza para probar la validez del certificado, es decir, para demostrar que el programa invitado se ejecuta correctamente. El sello en sí también es un zkSTARK generado por el certificador. . La verificación de las credenciales garantiza que el diario se construyó con los circuitos correctos, etc.
Bonsai simplifica el proceso para los desarrolladores, desde la compilación del código Rust hasta el código de bytes zkVM, la carga del programa, la ejecución en VM y la retroalimentación de prueba, lo que permite a los desarrolladores centrarse más en el diseño lógico del programa. Y no sólo parte de la lógica del contrato, sino toda la lógica del contrato se puede ejecutar fuera de la cadena. RISC Zero también utiliza continuaciones, que dividen una gran generación de pruebas en muchas partes y luego prueban cada parte de forma independiente. Esto permite generar pruebas para programas grandes sin ocupar demasiada memoria. Además de RISC Zero, varios proyectos como IronMill, =nil Foundation y Marlin también ofrecen soluciones generales similares.
2. Aplicación del coprocesador ZK en DeFi
2.1 AMM - Bonsai como coprocesador
zkUniswap es un AMM que utiliza recursos informáticos fuera de la cadena. Su núcleo es poner parte de los cálculos de intercambio fuera de la cadena y utiliza Bonsai. El usuario inicia una solicitud de intercambio en la cadena. El contrato de retransmisión de Bonsai obtiene la solicitud e inicia el cálculo fuera de la cadena. Una vez que Bonsai completa el cálculo, devuelve el resultado del cálculo y la prueba a la función de devolución de llamada en el EVM. Si la prueba se verifica exitosamente, se ejecutará el intercambio.
Sin embargo, el intercambio no se completa al mismo tiempo. Los procesos de solicitud y ejecución se realizan en transacciones diferentes. Esto conlleva ciertos riesgos, es decir, el estado del grupo puede cambiar después de que se envía la solicitud y antes de que se complete el intercambio. Porque la validación se basa en el estado del grupo cuando se envía la solicitud. Si el estado del grupo cambia mientras una solicitud aún está en espera, la verificación fallará.
Para resolver este problema, los desarrolladores diseñaron un bloqueo de grupo. Cuando un usuario inicia una solicitud, todas las operaciones, excepto el intercambio de liquidación, se bloquean hasta que el intercambio fuera de la cadena activa con éxito el intercambio dentro de la cadena o el intercambio se agota (este tiempo estará preestablecido). Si hay un límite de tiempo, incluso si hay un problema con el relé o zkp, el grupo no se bloqueará para siempre. El límite de tiempo específico puede ser de unos minutos.
zkUniswap tiene un diseño especial para MEV, es decir, los desarrolladores quieren que el protocolo capture el valor MEV. En teoría, los zkAMM también tienen MEV, porque la primera persona que envía una transacción puede bloquearla, por lo que todos seguirán compitiendo por el gas y los constructores también pueden clasificar las transacciones solicitadas. Pero zkUniswap se comerá los ingresos del MEV, utilizando la subasta holandesa con gradiente de tipos de interés variable (VRGDA).
zkUniswap saca el candado y lo subasta a un precio reducido. Si el candado se vende rápidamente, el protocolo sabrá que la demanda es actualmente alta y luego aumentará automáticamente el precio si la velocidad de venta del candado disminuye. el protocolo bajará el precio. Esto se convertirá en una nueva fuente de ingresos. De manera equivalente, el acuerdo proporciona algo nuevo para determinar el orden de las transacciones, y el dinero del precio competitivo se entrega directamente a la parte del proyecto a través de lo nuevo. Esto es muy imaginativo.
2.2 AMM - zkOracle como coprocesador
Además de usar zkVM, algunas personas han propuesto usar zkOracle para implementar la utilización de recursos informáticos fuera de la cadena, y zkOracle es un oráculo que tiene en cuenta 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 clasifica (calcula) los datos fuera de la cadena y los coloca en la cadena, y el oráculo de salida clasifica (calcula) los datos fuera de la cadena. datos dentro de la cadena) y luego proporcionados fuera de la cadena. El oráculo de E/S (entrada y salida) (zkOracle) realiza primero 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, por otro lado, utiliza ZK para garantizar que los cálculos del nodo de Oracle no sean fraudulentos y puedan realizar la función de coprocesador. Por lo tanto, los cálculos centrales de AMM se pueden colocar en zkOracle. Al mismo tiempo que se realizan las funciones tradicionales de AMM, zkOracle también se puede utilizar para implementar operaciones más complejas y que consumen recursos computacionales.

Fuente de la imagen: github pocoswwww/zkAMM
2.3 Cálculo de la tasa de interés crediticia, cálculo del margen y otras aplicaciones
Independientemente de la implementación, con el coprocesador ZK se pueden realizar muchas funciones. Por ejemplo, el contrato de préstamo ya no puede preestablecer parámetros, sino ajustar la tasa de interés en función de las condiciones del préstamo en tiempo real. Por ejemplo, aumentar las tasas de interés para atraer oferta cuando la demanda de dinero prestado es alta y luego bajar las tasas de interés cuando la demanda es baja. Esto requiere que el protocolo de préstamo obtenga datos en la cadena en tiempo real y realice una gran cantidad de cálculos para obtener los parámetros apropiados, lo que requiere cálculos fuera de la cadena (a menos que el costo en la cadena sea extremadamente bajo).
Las operaciones complejas, como el cálculo de saldos de márgenes, pérdidas y ganancias no realizadas, importes de liquidación, etc., también se pueden transferir al coprocesador para su ejecución. La ventaja de utilizar un coprocesador es que hace que estas aplicaciones sean más transparentes y verificables, y la lógica del motor de margen ya no es una caja negra secreta. Aunque el cálculo se realiza fuera de la cadena, los usuarios pueden confiar plenamente en la exactitud de su ejecución. Además, este enfoque también se aplica a los cálculos de opciones.
3. Otras aplicaciones del coprocesador ZK
3.1 Monedero usando Bonsai como coprocesador
Bonfire Wallet utiliza zkVM para mover los cálculos de verificación de identidad fuera de la cadena. El objetivo de esta billetera es permitir a los usuarios crear billeteras desechables con información biométrica (huellas digitales) o hardware criptográfico yubikey.
Específicamente, Bonfire Wallet utiliza WebAuthn, un estándar común de autenticación de páginas web, que permite a los usuarios usar directamente sus dispositivos para completar la autenticación en páginas web sin contraseñas. Entonces, en la billetera Bonfire, el usuario genera una clave pública a través de WebAuthn (no en la cadena, para WebAuthn) y luego la usa para crear una billetera.
Cada billetera Burner tiene un contrato en la cadena, que contiene la clave pública de WebAuthn. El contrato debe verificar la firma de WebAuthn. Pero la cantidad de cálculo es muy grande, por lo que Bonsai se usa para poner el cálculo fuera de la cadena, verificar la firma fuera de la cadena a través de un programa invitado zkVM y producir zkp para la verificación dentro de la cadena.

Fuente de la imagen: Bonfire Wallet
3.2 Recuperación de datos en cadena: los usuarios escriben circuitos ZK por sí mismos
Axiom es una aplicación que no utiliza zkVM pero utiliza otra solución de coprocesador. Primero introduzcamos lo que Axiom quiere hacer. Espera utilizar el coprocesador ZK para permitir que los contratos accedan a la información histórica de la cadena. De hecho, es difícil para los contratos leer datos históricos, porque los contratos inteligentes generalmente obtienen datos en cadena en tiempo real y es muy costoso para los contratos obtener datos valiosos en cadena, como saldos de cuentas anteriores o. registros de transacciones.

Fuente de la imagen: demostración de Axiom
Los nodos de Axiom acceden a los datos requeridos en la cadena y realizan cálculos específicos fuera de la cadena, luego generan una prueba de conocimiento cero para el cálculo que demuestra que el resultado se calculó 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 el resultado.
Generar zkp para cálculos fuera de la cadena requiere compilar el programa en el circuito ZK. Como se mencionó anteriormente, usar zkVM para hacer esto, y los funcionarios de Axiom señalaron que existen muchas soluciones para este asunto, que deben sopesar el rendimiento, la flexibilidad y la experiencia de desarrollo. .
Circuitos personalizados: los desarrolladores personalizan circuitos para el programa, que definitivamente tendrán el mejor rendimiento, pero llevará tiempo desarrollarlos;
eDSL/DSL: los desarrolladores todavía escriben sus propios circuitos, pero existen algunos marcos opcionales que ayudan a los desarrolladores a resolver problemas relacionados con ZK, que pueden equilibrar el rendimiento y la experiencia de desarrollo.
zkVM: los desarrolladores utilizan directamente máquinas virtuales listas para usar para ejecutar ZK, lo cual es muy conveniente, pero Axiom cree oficialmente que la eficiencia es muy baja.
Por lo tanto, Axiom eligió la segunda opción y el equipo del proyecto también proporcionó a los usuarios un conjunto de módulos ZK optimizados para que pudieran diseñar sus propios circuitos.
Un proyecto similar a Axiom es Herodotus, pero lo que quiere hacer es un middleware para la transmisión de información entre cadenas. Dado que el procesamiento de información se realiza fuera de la cadena, es una idea 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, los coprocesadores ZK se pueden utilizar para juegos en cadena y gobernanza DAO. RISC Zero cree que cualquier cálculo que requiera más de 250.000 gases será más barato utilizando el coprocesador ZK, pero aún está por verse cómo se determina esto. La gobernanza DAO también puede utilizar el coprocesador ZK, porque involucra a varias personas y múltiples contratos, lo que consume recursos informáticos. RISC Zero afirma que las tarifas del gas se pueden reducir en un 50% después de usar Bonsai. ZKML es esencialmente la idea del coprocesador ZK, por lo que Modulus Labs y Giza también son proyectos en este campo, pero el concepto de coprocesador ZK es más amplio.
Además, existen algunos proyectos auxiliares en el campo de los coprocesadores ZK, como ezkl, que proporciona compiladores para crear circuitos ZK, conjuntos de herramientas para la implementación de ZK, herramientas para mover cálculos dentro de la cadena fuera de la cadena, etc.
4. Perspectivas de futuro
El coprocesador permite que las aplicaciones en cadena tengan recursos informáticos externos como una "nube", que proporciona grandes cantidades de cálculos relativamente baratos, mientras que en la cadena solo se procesan los cálculos necesarios. En situaciones reales, zkVM también se puede ejecutar en la nube. El coprocesador ZK es esencialmente una arquitectura, una forma de poner la computación dentro de la cadena fuera de la cadena, y no hay límite sobre quién proporciona los recursos informáticos fuera de la cadena.
Básicamente, los grandes fabricantes tradicionales comparten los recursos informáticos fuera de la cadena, incluso los recursos informáticos descentralizados y los dispositivos locales. Cada una de estas tres direcciones es diferente. Los principales fabricantes tradicionales pueden proporcionar soluciones informáticas fuera de la cadena relativamente maduras. En el futuro, la "robustez" de los recursos informáticos descentralizados puede ser más fuerte y la informática local de los usuarios también tiene una gran imaginación. Sin embargo, muchos proyectos de coprocesador ZK actualmente optan por proporcionar servicios en una etapa de código cerrado, porque las vías ascendentes y descendentes aún no se han formado y los servicios no se pueden refinar y entregar a diferentes proyectos. :
Hay una gran cantidad de proyectos compitiendo por cada aspecto del coprocesador ZK
Un proyecto con buena experiencia de servicio ocupa la mayor parte del mercado.
Desde la perspectiva de un desarrollador, solo pueden usar un proyecto de "interfaz" cuando usan el coprocesador ZK. Es por eso que Amazon Cloud ocupa una gran parte del mercado y los desarrolladores estarán acostumbrados a un método de implementación. Pero como proyecto de "interfaz" para recursos informáticos fuera de la cadena, qué proveedores de servicios informáticos (proveedores tradicionales de nube, intercambio descentralizado de recursos) están conectados detrás de él es otro tema digno de discusión.
Kernel Ventures es un fondo de capital de riesgo criptográfico impulsado por la comunidad de investigación y desarrollo con más de 70 inversiones en etapa inicial centradas en infraestructura, middleware, dApps, especialmente ZK, Rollup, DEX, cadenas de bloques modulares y áreas verticales para miles de millones de usuarios criptográficos en el futuro, como la abstracción de cuentas, la disponibilidad de datos, la escalabilidad, etc. Durante los últimos siete años, nos hemos comprometido a apoyar el crecimiento de las principales comunidades de desarrollo y asociaciones universitarias de blockchain en todo el mundo.
Referencias:
Una guía sobre los coprocesadores ZK para la escalabilidad: https://www.risczero.com/news/a-guide-to-zk-coprocessors-for-scalability
Definición de zkOracle para Ethereum: https://ethresear.ch/t/defining-zkoracle-for-ethereum/15131
zkUniswap: un zkAMM único en su tipo: https://ethresear.ch/t/zkuniswap-a-first-of-its-kind-zkamm/16839
¿Qué es un coprocesador ZK?:https://blog.axiom.xyz/what-is-a-zk-coprocessor/
Una breve introducción a los coprocesadores: https://crypto.mirror.xyz/BFqUfBNVZrqYau3Vz9WJ-BACw5FT3W30iUX3mPlKxtA
Últimas aplicaciones creadas con Hyper Oracle (bonus: cosas que puedes crear ahora): https://mirror.xyz/hyperoracleblog.eth/Tik3nBI9mw05Ql_aHKZqm4hNxfxaEQdDAKn7JKcx0xQ
Monedero Bonfire: https://ethglobal.com/showcase/bonfire-wallet-n1dzp

