Neste post, vamos analisar os conceitos recentemente populares de zkCoprocessor e zkOracle e comparar suas diferenças.
Quando um termo é cunhado, seu verdadeiro significado não é definido por si só. Temos visto isso muito no caso de blockchain.
Vemos um fenômeno semelhante no termo zkCoprocessor. Todo mundo usa o termo, mas eles não necessariamente se referem às mesmas coisas.
Então, queríamos expressar o que o próprio projeto pensa sobre zkCoprocessor, o que a comunidade entende sobre zkCoprocessor e o que zkCoprocessor realmente significa e faz do nosso ponto de vista.
Definição 1 de Axiom: zkCoprocessor prova dados históricos onchain.
O conceito do zkCoprocessor foi popularizado pela Axiom, que originalmente o concebeu como um zkAttestor. A partir da ideia da Axiom, o zkCoprocessor representa o componente que “comprova dados históricos on-chain e os utiliza de forma confiável em um contrato inteligente”.
Observe que a equipe Brevis disse que esse tipo de zkCoprocessors é essencialmente uma camada API/DSL sobre o circuito zk subjacente. Portanto, isso não é programável.
Definição 2 do RISC Zero: o coprocessador zk descarrega a computação da cadeia para fora da cadeia.
RISC Zero também se refere frequentemente a si mesmo como um zkCoprocessor. Do ponto de vista deles, eles veem zkCoprocessor como um conceito mais amplo, "uma ferramenta para usar ZKPs para descarregar a computação da cadeia para fora da cadeia".
Definição de Peteris (o mesmo que 1): zkCoprocessor pode acessar o estado histórico onchain.
Peteris da Aera Finance acreditaque o zkCoprocessor age muito como um oráculo de estado, com a função principal sendo o acesso a dados históricos. Ao mesmo tempo, ele eRishabh do BananaHQacredita que a descrição da definição 2 é mais parecida com um zkVM do que com uma subclasse de zkCoprocessor.
Definição da Messari, da Modular Media e do Kobi (o mesmo que 2): o coprocessador zkCoprocessor transfere a computação da cadeia para fora da cadeia.
Messari também deu sua própria definição de zkCoprocessor. Sami, um pesquisador da Messari,acreditaque o zkCoprocessor permite que os desenvolvedores de contratos inteligentes descarreguem facilmente lógicas complexas fora da cadeia sem novas suposições de confiança. Mídia modular também dá o mesmo conceito. Kobi from Geometrycompara o rollup com um coprocessor, Brevis acrescentou que zkCoprocessornegocia o custo de manter um armazenamento de estado permanente em troca de um desempenho hiper-impulsionado, Taiko veio com o design de Booster Rollupque explorou ainda mais a ideia de Coprocessor Rollup. Essas são a mesma definição que RISC Zero.
Para resumir, concluímos que existem dois tipos de zkCoprocessor na prática, e eles são os seguintes:
Hyper Oracle fornece-nos uma explicação do Oracle emDefinindo zkOracle para Ethereum.
Oracle praticamente resume a "infra" em qualquer espaço de blockchain, como uma definição melhor do que coprocessador.
Se a entrada para a infraestrutura/oráculo são dados off-chain e a saída é on-chain, então é um oráculo de entrada (por exemplo, Chainlink Price Feed). Por outro lado, é um oráculo de saída (por exemplo, The Graph). Se o oráculo de saída vem primeiro, então o oráculo de entrada, então é um oráculo de E/S (por exemplo, Gelato Network).
Em resumo, o oracle é muito semelhante ao conceito de coprocessador, mas ao mesmo tempo tem as características de acesso a dados e computação.
Tomando o Hyper Oracle como exemplo, qual é a relação entre um zkOraclee um zkCoprocessor?
O zkOracle discutido em Definindo zkOracle para Ethereum realmente tem os recursos de ambos os zkCoprocessors.
Por exemplo, um zkOracle como Hyper Oracle:
Quando comparamos diretamente os dois tipos de zkCoprocessor com zkOracle, podemos ver que zkOracle tem todas as características de zkCoprocessor ao mesmo tempo:
Por comparação direta, zkOracle é uma solução mais abrangente que pode fornecer aos desenvolvedores uma pilha de tecnologia mais completa.
Os dois zkCoprocessors expandem em suas respectivas verticais, por exemplo, o zkCoprocessor de Acesso a Dados desbloqueia cenários de intercadeia, e o zkCoprocessor de Computação zkVM representa um zk rollup baseado em zkVM.
Qual escolher ao construir?
Em uma ordem passo a passo, podemos tomar algumas decisões sobre a construção de um aplicativo.
Primeiro, uma implementação pura de contratos inteligentes em Solidity ainda é uma escolha muito boa. Embora os contratos inteligentes puros não forneçam algumas das melhores características inovadoras, eles ainda são suficientesem certos cenários. Além disso, a disponibilidade atual do Arbitrum Stylus desbloqueou muitos novos aplicativos com contratos inteligentes puros.
Em muitos casos, os desenvolvedores podem querer usar o zkCoprocessor de Acesso a Dados ou zkOracle para contratos inteligentes a fim de acessar fontes de dados mais ricas.
Neste cenário, se o zkCoprocessor de Acesso de Dados for usado sozinho, a computação ainda é tratada no contrato inteligente. O papel do zkCoprocessor é reduzir a complexidade de obtenção de dados da maneira tradicional, mas não tornar o contrato inteligente mais poderoso computacionalmente.
Neste cenário, vemos muitos projetos de dados pequenos, em vez de DApps completos no sentido tradicional:
Muitas vezes, alguns algoritmos complexos não podem ser calculados diretamente na cadeia, para jogos, a lógica computacional é muito complexa, como etherquake e GameOfLife que custa $2k para executar um passo. Ou algoritmos complexos relacionados a ML. Ou algoritmos complexos relacionados a ML que são impossíveis de executar na cadeia. Portanto, precisamos de zkVM zkCoprocessor ou zkOracle para executar o cálculo no offchain e depois enviá-lo para a cadeia como ZKP.
Neste exemplo, podemos ver parte do seu potencial computacional ilimitado:
Finalmente, falamos sobre aplicações que só podem ser construídas com zkOracle. Tomando a aplicação DeFi como exemplo, um DeFi completo é muito complexo. A próxima geração de aplicações DeFi, ou DeFi 3.0 DApps, vai exigir:
Já discutimos como o zkOracle compartilha as capacidades de ambos os zkCoprocessors, ao mesmo tempo em que atende aos dois primeiros requisitos funcionais. Como o zkOracle cumpre a função autônoma e como o zkCoprocessor não cumpre?
Então, o que significa a ausência de autônomos no zkCoprocessor: o
Portanto, zkOracle é uma escolha perfeita e suficiente para uma aplicação completa como DeFi.
Vale ressaltar que os Hooks também podem lidar com parte da funcionalidade ausente do zkCoprocessor, mas SOMENTE em cenários como DeFi e não de forma universal.
Neste post, vamos analisar os conceitos recentemente populares de zkCoprocessor e zkOracle e comparar suas diferenças.
Quando um termo é cunhado, seu verdadeiro significado não é definido por si só. Temos visto isso muito no caso de blockchain.
Vemos um fenômeno semelhante no termo zkCoprocessor. Todo mundo usa o termo, mas eles não necessariamente se referem às mesmas coisas.
Então, queríamos expressar o que o próprio projeto pensa sobre zkCoprocessor, o que a comunidade entende sobre zkCoprocessor e o que zkCoprocessor realmente significa e faz do nosso ponto de vista.
Definição 1 de Axiom: zkCoprocessor prova dados históricos onchain.
O conceito do zkCoprocessor foi popularizado pela Axiom, que originalmente o concebeu como um zkAttestor. A partir da ideia da Axiom, o zkCoprocessor representa o componente que “comprova dados históricos on-chain e os utiliza de forma confiável em um contrato inteligente”.
Observe que a equipe Brevis disse que esse tipo de zkCoprocessors é essencialmente uma camada API/DSL sobre o circuito zk subjacente. Portanto, isso não é programável.
Definição 2 do RISC Zero: o coprocessador zk descarrega a computação da cadeia para fora da cadeia.
RISC Zero também se refere frequentemente a si mesmo como um zkCoprocessor. Do ponto de vista deles, eles veem zkCoprocessor como um conceito mais amplo, "uma ferramenta para usar ZKPs para descarregar a computação da cadeia para fora da cadeia".
Definição de Peteris (o mesmo que 1): zkCoprocessor pode acessar o estado histórico onchain.
Peteris da Aera Finance acreditaque o zkCoprocessor age muito como um oráculo de estado, com a função principal sendo o acesso a dados históricos. Ao mesmo tempo, ele eRishabh do BananaHQacredita que a descrição da definição 2 é mais parecida com um zkVM do que com uma subclasse de zkCoprocessor.
Definição da Messari, da Modular Media e do Kobi (o mesmo que 2): o coprocessador zkCoprocessor transfere a computação da cadeia para fora da cadeia.
Messari também deu sua própria definição de zkCoprocessor. Sami, um pesquisador da Messari,acreditaque o zkCoprocessor permite que os desenvolvedores de contratos inteligentes descarreguem facilmente lógicas complexas fora da cadeia sem novas suposições de confiança. Mídia modular também dá o mesmo conceito. Kobi from Geometrycompara o rollup com um coprocessor, Brevis acrescentou que zkCoprocessornegocia o custo de manter um armazenamento de estado permanente em troca de um desempenho hiper-impulsionado, Taiko veio com o design de Booster Rollupque explorou ainda mais a ideia de Coprocessor Rollup. Essas são a mesma definição que RISC Zero.
Para resumir, concluímos que existem dois tipos de zkCoprocessor na prática, e eles são os seguintes:
Hyper Oracle fornece-nos uma explicação do Oracle emDefinindo zkOracle para Ethereum.
Oracle praticamente resume a "infra" em qualquer espaço de blockchain, como uma definição melhor do que coprocessador.
Se a entrada para a infraestrutura/oráculo são dados off-chain e a saída é on-chain, então é um oráculo de entrada (por exemplo, Chainlink Price Feed). Por outro lado, é um oráculo de saída (por exemplo, The Graph). Se o oráculo de saída vem primeiro, então o oráculo de entrada, então é um oráculo de E/S (por exemplo, Gelato Network).
Em resumo, o oracle é muito semelhante ao conceito de coprocessador, mas ao mesmo tempo tem as características de acesso a dados e computação.
Tomando o Hyper Oracle como exemplo, qual é a relação entre um zkOraclee um zkCoprocessor?
O zkOracle discutido em Definindo zkOracle para Ethereum realmente tem os recursos de ambos os zkCoprocessors.
Por exemplo, um zkOracle como Hyper Oracle:
Quando comparamos diretamente os dois tipos de zkCoprocessor com zkOracle, podemos ver que zkOracle tem todas as características de zkCoprocessor ao mesmo tempo:
Por comparação direta, zkOracle é uma solução mais abrangente que pode fornecer aos desenvolvedores uma pilha de tecnologia mais completa.
Os dois zkCoprocessors expandem em suas respectivas verticais, por exemplo, o zkCoprocessor de Acesso a Dados desbloqueia cenários de intercadeia, e o zkCoprocessor de Computação zkVM representa um zk rollup baseado em zkVM.
Qual escolher ao construir?
Em uma ordem passo a passo, podemos tomar algumas decisões sobre a construção de um aplicativo.
Primeiro, uma implementação pura de contratos inteligentes em Solidity ainda é uma escolha muito boa. Embora os contratos inteligentes puros não forneçam algumas das melhores características inovadoras, eles ainda são suficientesem certos cenários. Além disso, a disponibilidade atual do Arbitrum Stylus desbloqueou muitos novos aplicativos com contratos inteligentes puros.
Em muitos casos, os desenvolvedores podem querer usar o zkCoprocessor de Acesso a Dados ou zkOracle para contratos inteligentes a fim de acessar fontes de dados mais ricas.
Neste cenário, se o zkCoprocessor de Acesso de Dados for usado sozinho, a computação ainda é tratada no contrato inteligente. O papel do zkCoprocessor é reduzir a complexidade de obtenção de dados da maneira tradicional, mas não tornar o contrato inteligente mais poderoso computacionalmente.
Neste cenário, vemos muitos projetos de dados pequenos, em vez de DApps completos no sentido tradicional:
Muitas vezes, alguns algoritmos complexos não podem ser calculados diretamente na cadeia, para jogos, a lógica computacional é muito complexa, como etherquake e GameOfLife que custa $2k para executar um passo. Ou algoritmos complexos relacionados a ML. Ou algoritmos complexos relacionados a ML que são impossíveis de executar na cadeia. Portanto, precisamos de zkVM zkCoprocessor ou zkOracle para executar o cálculo no offchain e depois enviá-lo para a cadeia como ZKP.
Neste exemplo, podemos ver parte do seu potencial computacional ilimitado:
Finalmente, falamos sobre aplicações que só podem ser construídas com zkOracle. Tomando a aplicação DeFi como exemplo, um DeFi completo é muito complexo. A próxima geração de aplicações DeFi, ou DeFi 3.0 DApps, vai exigir:
Já discutimos como o zkOracle compartilha as capacidades de ambos os zkCoprocessors, ao mesmo tempo em que atende aos dois primeiros requisitos funcionais. Como o zkOracle cumpre a função autônoma e como o zkCoprocessor não cumpre?
Então, o que significa a ausência de autônomos no zkCoprocessor: o
Portanto, zkOracle é uma escolha perfeita e suficiente para uma aplicação completa como DeFi.
Vale ressaltar que os Hooks também podem lidar com parte da funcionalidade ausente do zkCoprocessor, mas SOMENTE em cenários como DeFi e não de forma universal.