zkOracle e zkCoprocessor

intermediário1/7/2024, 1:23:40 PM
O artigo explica os conceitos de zkCorprocessor e zkOracle, destacando as diferenças entre os dois e elaborando sobre os cenários nos quais cada tipo de zk é adequado para diferentes casos de uso.

0. Introdução

Neste post, vamos analisar os conceitos recentemente populares de zkCoprocessor e zkOracle e comparar suas diferenças.

1. Definição de zkCoprocessor

Quando um termo é cunhado, seu verdadeiro significado não é definido por si só. Temos visto isso muito no caso de blockchain.

  1. ZK: Embora os acadêmicos frequentemente se refiram aos recursos de privacidade do Zero Knowledge, no contexto blockchain, ZK frequentemente significa apenas a concisão e validade da tecnologia. Mesmo projetos construídos em ZK Rollup se autodenominam algo com zk.
  2. DA: Até agora, muitas pessoas não perceberam realmente que a Disponibilidade de Dados não é Armazenamento de Dados, então, para resolver esse problema de terminologia, algumas pessoas têm sugerido substituindo DA por DP(Publicação de Dados), ou seja, tornar todo o significado de DA em Publicação de Dados + Armazenamento de Dados (1, 2).

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.

a) Deles Próprios

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".

b) Da Comunidade

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.

c) De Nós

Para resumir, concluímos que existem dois tipos de zkCoprocessor na prática, e eles são os seguintes:

  1. Acesso aos Dados zkCoprocessor: alimenta principalmente certos dados (bloco histórico, estado histórico) para um determinado local (contrato inteligente).
  2. zkVM Compute zkCoprocessor: calcula pelo zkVM offchain e depois alimenta o resultado de volta para o onchain.Comprime o cálculo O(n) em apenas O(1) de verificação.

2. Definição de zkOracle

a) Oracle

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.

b) zkOracle

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:

  1. Acesso a dados históricos de forma confiável.
  2. Pode realizar cálculos programáveis.

3. zkCoprocessor e zkOracle

Quando comparamos diretamente os dois tipos de zkCoprocessor com zkOracle, podemos ver que zkOracle tem todas as características de zkCoprocessor ao mesmo tempo:

  1. processamento assíncrono para contrato inteligente
  2. interoperando com e aprimorando as capacidades de aplicativos existentes na L1 ou L2
  3. descarregamento de computação em um sistema com recursos limitados

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.

4. Construa com zkCoprocessor ou zkOracle

Qual escolher ao construir?

Em uma ordem passo a passo, podemos tomar algumas decisões sobre a construção de um aplicativo.

a) DApp com Contrato Inteligente Puro

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.

b) DApp que precisa de acesso mais rico a dados

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:

  1. Usando zkCoprocessor Axiom: Melhor Gerenciamento de LP, Desconto MEVictim
  2. Usando zkOracle Hyper Oracle: Uniswap v2 Preço, Atividade de Negociação da OpenSea, Monitor de Volume USDT

c) DApp que Precisa de Computação Pesada

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:

  1. Usando zkCoprocessor Bonsai: Zeth (Prove Reth em zkVM), zk-sentimento
  2. Usando zkOracle Hyper Oracle ou zkWASM: zkGo (Prove L2-Geth em zkVM, Tipo-0 zkEVM), zkAMM

d) Próxima geração DApp com recursos completos (DeFi 3.0)

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:

  1. Acesso a Dados Mais Rico
  2. Computação ilimitada
  3. Autônomo (para liquidação, atualização de parâmetros, governança de protocolo)

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?

  1. zkOracle: Nenhuma intervenção humana é necessária. As tarefas de acesso a dados e computação podem ser totalmente definidas e executadas de forma programável e automatizada. Todas as chamadas onchain são sempre confiáveis e válidas.
  2. zkCoprocessor: Requer monitoramento e filtragem onchain da resposta de computação pelo relayer, ou a adição de mecanismos extras complexos.

Então, o que significa a ausência de autônomos no zkCoprocessor: o

  1. Descentralização inadequada
  2. Risco de mecanismos potencialmente complexos
  3. Carga mental do desenvolvedor

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.

Aviso Legal:

  1. Este artigo foi republicado de [espelho]. Todos os direitos autorais pertencem ao autor original [SevenX Ventures]. Se houver objeções a esta reimpressão, entre em contato com o Gate Learnequipe e eles lidarão com isso prontamente.
  2. Responsabilidade de Isenção: As opiniões expressas neste artigo são exclusivamente do autor e não constituem qualquer conselho de investimento.
  3. As traduções do artigo para outros idiomas são feitas pela equipe Gate Learn. Salvo indicação em contrário, copiar, distribuir ou plagiar os artigos traduzidos é proibido.

zkOracle e zkCoprocessor

intermediário1/7/2024, 1:23:40 PM
O artigo explica os conceitos de zkCorprocessor e zkOracle, destacando as diferenças entre os dois e elaborando sobre os cenários nos quais cada tipo de zk é adequado para diferentes casos de uso.

0. Introdução

Neste post, vamos analisar os conceitos recentemente populares de zkCoprocessor e zkOracle e comparar suas diferenças.

1. Definição de zkCoprocessor

Quando um termo é cunhado, seu verdadeiro significado não é definido por si só. Temos visto isso muito no caso de blockchain.

  1. ZK: Embora os acadêmicos frequentemente se refiram aos recursos de privacidade do Zero Knowledge, no contexto blockchain, ZK frequentemente significa apenas a concisão e validade da tecnologia. Mesmo projetos construídos em ZK Rollup se autodenominam algo com zk.
  2. DA: Até agora, muitas pessoas não perceberam realmente que a Disponibilidade de Dados não é Armazenamento de Dados, então, para resolver esse problema de terminologia, algumas pessoas têm sugerido substituindo DA por DP(Publicação de Dados), ou seja, tornar todo o significado de DA em Publicação de Dados + Armazenamento de Dados (1, 2).

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.

a) Deles Próprios

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".

b) Da Comunidade

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.

c) De Nós

Para resumir, concluímos que existem dois tipos de zkCoprocessor na prática, e eles são os seguintes:

  1. Acesso aos Dados zkCoprocessor: alimenta principalmente certos dados (bloco histórico, estado histórico) para um determinado local (contrato inteligente).
  2. zkVM Compute zkCoprocessor: calcula pelo zkVM offchain e depois alimenta o resultado de volta para o onchain.Comprime o cálculo O(n) em apenas O(1) de verificação.

2. Definição de zkOracle

a) Oracle

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.

b) zkOracle

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:

  1. Acesso a dados históricos de forma confiável.
  2. Pode realizar cálculos programáveis.

3. zkCoprocessor e zkOracle

Quando comparamos diretamente os dois tipos de zkCoprocessor com zkOracle, podemos ver que zkOracle tem todas as características de zkCoprocessor ao mesmo tempo:

  1. processamento assíncrono para contrato inteligente
  2. interoperando com e aprimorando as capacidades de aplicativos existentes na L1 ou L2
  3. descarregamento de computação em um sistema com recursos limitados

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.

4. Construa com zkCoprocessor ou zkOracle

Qual escolher ao construir?

Em uma ordem passo a passo, podemos tomar algumas decisões sobre a construção de um aplicativo.

a) DApp com Contrato Inteligente Puro

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.

b) DApp que precisa de acesso mais rico a dados

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:

  1. Usando zkCoprocessor Axiom: Melhor Gerenciamento de LP, Desconto MEVictim
  2. Usando zkOracle Hyper Oracle: Uniswap v2 Preço, Atividade de Negociação da OpenSea, Monitor de Volume USDT

c) DApp que Precisa de Computação Pesada

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:

  1. Usando zkCoprocessor Bonsai: Zeth (Prove Reth em zkVM), zk-sentimento
  2. Usando zkOracle Hyper Oracle ou zkWASM: zkGo (Prove L2-Geth em zkVM, Tipo-0 zkEVM), zkAMM

d) Próxima geração DApp com recursos completos (DeFi 3.0)

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:

  1. Acesso a Dados Mais Rico
  2. Computação ilimitada
  3. Autônomo (para liquidação, atualização de parâmetros, governança de protocolo)

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?

  1. zkOracle: Nenhuma intervenção humana é necessária. As tarefas de acesso a dados e computação podem ser totalmente definidas e executadas de forma programável e automatizada. Todas as chamadas onchain são sempre confiáveis e válidas.
  2. zkCoprocessor: Requer monitoramento e filtragem onchain da resposta de computação pelo relayer, ou a adição de mecanismos extras complexos.

Então, o que significa a ausência de autônomos no zkCoprocessor: o

  1. Descentralização inadequada
  2. Risco de mecanismos potencialmente complexos
  3. Carga mental do desenvolvedor

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.

Aviso Legal:

  1. Este artigo foi republicado de [espelho]. Todos os direitos autorais pertencem ao autor original [SevenX Ventures]. Se houver objeções a esta reimpressão, entre em contato com o Gate Learnequipe e eles lidarão com isso prontamente.
  2. Responsabilidade de Isenção: As opiniões expressas neste artigo são exclusivamente do autor e não constituem qualquer conselho de investimento.
  3. As traduções do artigo para outros idiomas são feitas pela equipe Gate Learn. Salvo indicação em contrário, copiar, distribuir ou plagiar os artigos traduzidos é proibido.
เริ่มตอนนี้
สมัครและรับรางวัล
$100