En esta publicación, analizaremos los conceptos recientemente populares de zkCoprocessor y zkOracle y compararemos sus diferencias.
Cuando se acuña un término, su verdadero significado no está definido por sí mismo. Hemos visto esto muy a menudo en el caso de blockchain.
Vemos un fenómeno similar en el término zkCoprocessor. Todos usan el término, pero no necesariamente se refieren a las mismas cosas.
Entonces queríamos expresar lo que el proyecto mismo piensa sobre zkCoprocessor, lo que la comunidad entiende sobre zkCoprocessor, y lo que zkCoprocessor realmente significa y hace desde nuestra perspectiva.
Definición 1 de Axiom: zkCoprocessor demuestra datos históricos en la cadena.
El concepto del zkCoprocessor fue popularizado por Axiom, que originalmente lo concibió como un zkAttestor. A partir de la idea de Axiom, zkCoprocessor representa el componente que “prueba datos históricos en la cadena y utiliza esos datos de forma fiable en un contrato inteligente”.
Tenga en cuenta que el equipo Brevis dijo que este tipo de zkCoprocessors son esencialmente una capa API/DSL encima del circuito zk subyacente. Por lo tanto, esto no es programable.
Definición 2 de RISC Zero: el coprocesador zk descarga la computación de la cadena al exterior de la cadena.
RISC Zero también se refiere a menudo a sí mismo como un zkCoprocessor. Desde su perspectiva, ven zkCoprocessor como un concepto más amplio, 'una herramienta para utilizar ZKPs para descargar cálculos de la cadena a fuera de la cadena'.
Definición de Peteris (igual que 1): zkCoprocessor puede acceder al estado histórico en cadena.
Peteris de Aera Financecreeese zkCoprocessor actúa de manera muy similar a un oráculo de estado, con la principal función siendo el acceso a datos históricos. Al mismo tiempo, él y Rishabh de BananaHQcree que la descripción de la definición 2 se parece más a un zkVM que a una subclase de zkCoprocessor.
Definición de Messari, Modular Media y Kobi (lo mismo que 2): zkCoprocessor descarga la computación de la cadena a la cadena.
Messari también ha dado su propia definición de zkCoprocessor. Sami, un investigador en Messari,creeque zkCoprocessor permite a los desarrolladores de contratos inteligentes descargar fácilmente la lógica compleja fuera de la cadena sin nuevas suposiciones de confianza. También Modular Mediada el mismo concepto. Kobi de Geometríacompara rollup con un coprocesador, Brevis agregó que zkCoprocessorintercambia el costo de mantener un almacenamiento de estado permanente contra un rendimiento hiper-reforzado, Taiko ideó el diseño de Booster Rollupque exploró aún más la idea de Coprocesador de Rollup. Estas son la misma definición que RISC Zero.
Para resumir, concluimos que hay dos tipos de zkCoprocessor en la práctica, y son los siguientes:
Hyper Oracle nos proporciona una explicación de Oracle en Definición de zkOracle para Ethereum.
Oracle prácticamente resume la "infra" en cualquier espacio de blockchain, como una definición mejor que coprocesador.
Si la entrada al infra/oráculo es datos fuera de la cadena y la salida es en la cadena, entonces es un oráculo de entrada (por ejemplo, Chainlink Price Feed). Por el contrario, es un oráculo de salida (por ejemplo, The Graph). Si el oráculo de salida va primero, entonces el oráculo de entrada, entonces es un oráculo de E/S (por ejemplo, Gelato Network).
En resumen, el oráculo es muy similar al concepto de coprocesador, pero al mismo tiempo tiene las características de acceso a datos y computación.
Tomando Hyper Oracle como ejemplo, ¿cuál es la relación entre un zkOracle y ¿un zkCoprocessor?
El zkOracle discutido en Definición de zkOracle para Ethereum en realidad tiene las capacidades de ambos zkCoprocesadores.
Por ejemplo, un zkOracle como Hyper Oracle:
Cuando comparamos directamente los dos tipos de zkCoprocessor con zkOracle, podemos ver que zkOracle tiene todas las características de zkCoprocessor al mismo tiempo:
En comparación directa, zkOracle es una solución más integral que puede proporcionar a los desarrolladores una pila de tecnología más completa.
Los dos zkCoprocessors se expanden en sus respectivas verticales, por ejemplo, el zkCoprocessor de Acceso a Datos desbloquea escenarios de cadena cruzada, y el zkCoprocessor de Cálculo zkVM representa un zk rollup basado en zkVM.
¿Cuál elegir al construir?
En un orden paso a paso, podemos tomar algunas decisiones sobre la construcción de una aplicación.
Primero, una implementación pura de Solidity de contratos inteligentes sigue siendo una muy buena elección. Si bien los contratos inteligentes puros no ofrecen algunas de las mejores características novedosas, aún son suficientesen ciertos escenarios. Además, la disponibilidad actual de Arbitrum Stylus ha desbloqueado muchas nuevas aplicaciones con contratos inteligentes puros.
En muchos casos, los desarrolladores pueden querer usar Data Access zkCoprocessor o zkOracle para contratos inteligentes para acceder a fuentes de datos más ricas.
En este escenario, si Data Access zkCoprocessor se utiliza solo, el cálculo todavía se maneja en el contrato inteligente. El papel del zkCoprocessor es reducir la complejidad de obtener datos de la manera tradicional, pero no hacer que el contrato inteligente sea más computacionalmente poderoso.
En este escenario, vemos muchos proyectos pequeños relacionados con datos, en lugar de DApps completamente desarrolladas en el sentido tradicional:
A menudo, algunos algoritmos complejos no se pueden calcular directamente en la cadena, para juegos, la lógica computacional es muy compleja, como etherquake y GameOfLife que cuesta $2k para ejecutar un paso. O algoritmos complejos relacionados con ML. O algoritmos complejos relacionados con ML que son imposibles de ejecutar en la cadena. Por lo tanto, necesitamos zkVM zkCoprocessor o zkOracle para ejecutar la computación en el offchain, y luego enviarla a la cadena como ZKP.
En este ejemplo, podemos ver parte de su potencial computacional ilimitado:
Finalmente, hablamos sobre aplicaciones que solo se pueden construir con zkOracle. Tomando la aplicación DeFi como ejemplo, un DeFi completo es muy complejo. La próxima generación de aplicaciones DeFi, o DeFi 3.0 Aplicaciones descentralizadas, requerirá:
Ya hemos discutido cómo zkOracle comparte las capacidades de ambos zkCoprocessors, al tiempo que cumple con los dos primeros requisitos funcionales. ¿Cómo cumple zkOracle con la característica autónoma y cómo no lo hace zkCoprocessor?
Entonces, ¿qué implica la ausencia de autonomía en el zkCoprocessor: el
Por lo tanto, zkOracle es una opción perfecta y suficiente para una aplicación completa como DeFi.
Vale la pena señalar que los Hooks también pueden manejar parte de la funcionalidad faltante de zkCoprocessor, pero ÚNICAMENTE en escenarios como DeFi, y no de manera universal.
En esta publicación, analizaremos los conceptos recientemente populares de zkCoprocessor y zkOracle y compararemos sus diferencias.
Cuando se acuña un término, su verdadero significado no está definido por sí mismo. Hemos visto esto muy a menudo en el caso de blockchain.
Vemos un fenómeno similar en el término zkCoprocessor. Todos usan el término, pero no necesariamente se refieren a las mismas cosas.
Entonces queríamos expresar lo que el proyecto mismo piensa sobre zkCoprocessor, lo que la comunidad entiende sobre zkCoprocessor, y lo que zkCoprocessor realmente significa y hace desde nuestra perspectiva.
Definición 1 de Axiom: zkCoprocessor demuestra datos históricos en la cadena.
El concepto del zkCoprocessor fue popularizado por Axiom, que originalmente lo concibió como un zkAttestor. A partir de la idea de Axiom, zkCoprocessor representa el componente que “prueba datos históricos en la cadena y utiliza esos datos de forma fiable en un contrato inteligente”.
Tenga en cuenta que el equipo Brevis dijo que este tipo de zkCoprocessors son esencialmente una capa API/DSL encima del circuito zk subyacente. Por lo tanto, esto no es programable.
Definición 2 de RISC Zero: el coprocesador zk descarga la computación de la cadena al exterior de la cadena.
RISC Zero también se refiere a menudo a sí mismo como un zkCoprocessor. Desde su perspectiva, ven zkCoprocessor como un concepto más amplio, 'una herramienta para utilizar ZKPs para descargar cálculos de la cadena a fuera de la cadena'.
Definición de Peteris (igual que 1): zkCoprocessor puede acceder al estado histórico en cadena.
Peteris de Aera Financecreeese zkCoprocessor actúa de manera muy similar a un oráculo de estado, con la principal función siendo el acceso a datos históricos. Al mismo tiempo, él y Rishabh de BananaHQcree que la descripción de la definición 2 se parece más a un zkVM que a una subclase de zkCoprocessor.
Definición de Messari, Modular Media y Kobi (lo mismo que 2): zkCoprocessor descarga la computación de la cadena a la cadena.
Messari también ha dado su propia definición de zkCoprocessor. Sami, un investigador en Messari,creeque zkCoprocessor permite a los desarrolladores de contratos inteligentes descargar fácilmente la lógica compleja fuera de la cadena sin nuevas suposiciones de confianza. También Modular Mediada el mismo concepto. Kobi de Geometríacompara rollup con un coprocesador, Brevis agregó que zkCoprocessorintercambia el costo de mantener un almacenamiento de estado permanente contra un rendimiento hiper-reforzado, Taiko ideó el diseño de Booster Rollupque exploró aún más la idea de Coprocesador de Rollup. Estas son la misma definición que RISC Zero.
Para resumir, concluimos que hay dos tipos de zkCoprocessor en la práctica, y son los siguientes:
Hyper Oracle nos proporciona una explicación de Oracle en Definición de zkOracle para Ethereum.
Oracle prácticamente resume la "infra" en cualquier espacio de blockchain, como una definición mejor que coprocesador.
Si la entrada al infra/oráculo es datos fuera de la cadena y la salida es en la cadena, entonces es un oráculo de entrada (por ejemplo, Chainlink Price Feed). Por el contrario, es un oráculo de salida (por ejemplo, The Graph). Si el oráculo de salida va primero, entonces el oráculo de entrada, entonces es un oráculo de E/S (por ejemplo, Gelato Network).
En resumen, el oráculo es muy similar al concepto de coprocesador, pero al mismo tiempo tiene las características de acceso a datos y computación.
Tomando Hyper Oracle como ejemplo, ¿cuál es la relación entre un zkOracle y ¿un zkCoprocessor?
El zkOracle discutido en Definición de zkOracle para Ethereum en realidad tiene las capacidades de ambos zkCoprocesadores.
Por ejemplo, un zkOracle como Hyper Oracle:
Cuando comparamos directamente los dos tipos de zkCoprocessor con zkOracle, podemos ver que zkOracle tiene todas las características de zkCoprocessor al mismo tiempo:
En comparación directa, zkOracle es una solución más integral que puede proporcionar a los desarrolladores una pila de tecnología más completa.
Los dos zkCoprocessors se expanden en sus respectivas verticales, por ejemplo, el zkCoprocessor de Acceso a Datos desbloquea escenarios de cadena cruzada, y el zkCoprocessor de Cálculo zkVM representa un zk rollup basado en zkVM.
¿Cuál elegir al construir?
En un orden paso a paso, podemos tomar algunas decisiones sobre la construcción de una aplicación.
Primero, una implementación pura de Solidity de contratos inteligentes sigue siendo una muy buena elección. Si bien los contratos inteligentes puros no ofrecen algunas de las mejores características novedosas, aún son suficientesen ciertos escenarios. Además, la disponibilidad actual de Arbitrum Stylus ha desbloqueado muchas nuevas aplicaciones con contratos inteligentes puros.
En muchos casos, los desarrolladores pueden querer usar Data Access zkCoprocessor o zkOracle para contratos inteligentes para acceder a fuentes de datos más ricas.
En este escenario, si Data Access zkCoprocessor se utiliza solo, el cálculo todavía se maneja en el contrato inteligente. El papel del zkCoprocessor es reducir la complejidad de obtener datos de la manera tradicional, pero no hacer que el contrato inteligente sea más computacionalmente poderoso.
En este escenario, vemos muchos proyectos pequeños relacionados con datos, en lugar de DApps completamente desarrolladas en el sentido tradicional:
A menudo, algunos algoritmos complejos no se pueden calcular directamente en la cadena, para juegos, la lógica computacional es muy compleja, como etherquake y GameOfLife que cuesta $2k para ejecutar un paso. O algoritmos complejos relacionados con ML. O algoritmos complejos relacionados con ML que son imposibles de ejecutar en la cadena. Por lo tanto, necesitamos zkVM zkCoprocessor o zkOracle para ejecutar la computación en el offchain, y luego enviarla a la cadena como ZKP.
En este ejemplo, podemos ver parte de su potencial computacional ilimitado:
Finalmente, hablamos sobre aplicaciones que solo se pueden construir con zkOracle. Tomando la aplicación DeFi como ejemplo, un DeFi completo es muy complejo. La próxima generación de aplicaciones DeFi, o DeFi 3.0 Aplicaciones descentralizadas, requerirá:
Ya hemos discutido cómo zkOracle comparte las capacidades de ambos zkCoprocessors, al tiempo que cumple con los dos primeros requisitos funcionales. ¿Cómo cumple zkOracle con la característica autónoma y cómo no lo hace zkCoprocessor?
Entonces, ¿qué implica la ausencia de autonomía en el zkCoprocessor: el
Por lo tanto, zkOracle es una opción perfecta y suficiente para una aplicación completa como DeFi.
Vale la pena señalar que los Hooks también pueden manejar parte de la funcionalidad faltante de zkCoprocessor, pero ÚNICAMENTE en escenarios como DeFi, y no de manera universal.