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 em que 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 as suas diferenças.

1. Definição de zkCoprocessor

Quando um termo é cunhado, o seu verdadeiro significado não é definido por si só. Já vimos isso acontecer muito no caso da blockchain.

  1. ZK: Embora os acadêmicos frequentemente se refiram às características de privacidade do Zero Knowledge, no contexto da blockchain, ZK frequentemente apenas significa a concisão e validade da tecnologia. Mesmo projetos construídos em ZK Rollup se autodenominam algo como zkSomething.
  2. DA: Até agora, muitas pessoas não perceberam realmente que a Disponibilidade de Dados não é Armazenamento de Dados, por isso, para resolver este problema de terminologia, algumas pessoas têm sugerido substituir DA por DP(Publicação de Dados), ou tornando 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.

Por isso, queríamos expressar o que o 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) De si mesmos do projeto

Definição 1 do Axioma: o zkCoprocessor comprova 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 utiliza esses dados de forma confiável em um contrato inteligente".

Note que a equipa Brevis disse que este tipo de zkCoprocessors são essencialmente uma camada API/DSL em cima do circuito zk subjacente. Portanto, isto não é programável.

Definição 2 de RISC Zero: o zkCoprocessor descarrega a computação da cadeia para fora da cadeia.

RISC Zero também se refere frequentemente a si próprio como um zkCoprocessor. Do ponto de vista deles, eles veem o zkCoprocessor como um conceito mais amplo, 'uma ferramenta para usar ZKPs para descarregar computação da cadeia para fora da cadeia'.

b) Da Comunidade

Definição de Peteris (o mesmo que 1): zkCoprocessor pode aceder ao estado histórico onchain.

Peteris da Aera Financeacreditaque o zkCoprocessor atua muito como um oráculo de estado, com a função principal sendo o acesso a dados históricos. Ao mesmo tempo, ele e Rishabh da BananaHQacredita que a descrição da definição 2 se parece mais com um zkVM do que com uma subclasse de zkCoprocessor.

Definição da Messari, Modular Media e Kobi (o mesmo que 2): O zkCoprocessor descarrega 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 aos desenvolvedores de contratos inteligentes descarregar facilmente lógica complexa fora da cadeia sem novas suposições de confiança. Modular Media também dá o mesmo conceito. Kobi from Geometrycompara rollup com um coprocessor, Brevis acrescentou que zkCoprocessorcompensa o custo de manter um armazenamento de estado permanente em troca de um desempenho hiper-impulsionado, Taiko veio com o design deBooster Rollupque explorou ainda mais a ideia de Coprocessador Rollup. Estas são a mesma definição que RISC Zero.

c) De Nós

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

  1. Acesso a 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 envia o resultado de volta para o onchain.Comprime o cálculo O(n) em apenas uma verificação O(1).

2. Definição de zkOracle

a) Oracle

Hyper Oracle fornece-nos uma explicação do Oracle em Definindo zkOracle para Ethereum.

A Oracle praticamente resume a "infra" em qualquer espaço de blockchain, como uma definição melhor do que o 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, Feed de Preços da Chainlink). Por outro lado, se é um oráculo de saída (por exemplo, The Graph). Se o oráculo de saída é primeiro, então o oráculo de entrada, então é um oráculo de E/S (por exemplo, Rede Gelato).

Em resumo, o oracle é muito semelhante ao conceito de coprocessor, 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 na verdade tem as capacidades de ambos os zkCoprocessadores.

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 funcionalidades de zkCoprocessor ao mesmo tempo:

  1. processamento assíncrono para contrato inteligente
  2. interoperar com e melhorar as capacidades das aplicações existentes na L1 ou L2
  3. descarregar computação num sistema com recursos limitados

Por comparação direta, zkOracle é uma solução mais completa 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 interligação de cadeias, e o zkCoprocessor de Cálculo zkVM representa um zk rollup baseado em zkVM.

4. Construa com zkCoprocessor ou zkOracle

Qual escolher ao construir?

Numa ordem passo a passo, podemos tomar algumas decisões sobre a construção de uma aplicação.

a) DApp com Contrato Inteligente Puro

Em primeiro lugar, 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 muitas novas aplicações com contratos inteligentes puros.

b) DApp que Precisa de Acesso a Dados Mais Abundante

Em muitos casos, os desenvolvedores podem querer usar o zkCoprocessor de Acesso a Dados ou zkOracle para contratos inteligentes para aceder a fontes de dados mais ricas.

Neste cenário, se o zkCoprocessor de Acesso a Dados for usado sozinho, a computação ainda é tratada no contrato inteligente. O papel do zkCoprocessor é reduzir a complexidade da obtenção de dados da maneira tradicional, mas não tornar o contrato inteligente mais computacionalmente poderoso.

Neste cenário, vemos muitos projetos de dados pequenos, em vez de DApps completos no sentido tradicional:

  1. Usando o Axioma zkCoprocessor: Melhor Gestão de LP, Reembolso MEVictim
  2. Usando zkOracle Hyper Oracle: Preço Uniswap v2, Atividade de Negociação OpenSea, Monitor de Volume USDT

c) DApp que Precisa de Computação Intensiva

Muitas vezes, alguns algoritmos complexos não podem ser computados diretamente na cadeia, para jogos, a lógica computacional é muito complexa, como etherquake e GameOfLife que custam $2k para executar um passo. Ou algoritmos complexos relacionados com ML. Ou algoritmos complexos relacionados com ML que são impossíveis de serem executados na cadeia. Portanto, precisamos de zkVM zkCoprocessor ou zkOracle para executar o cálculo fora da cadeia, e depois submetê-lo à cadeia como ZKP.

Neste exemplo, podemos ver parte do seu potencial computacional ilimitado:

  1. Usando zkCoprocessor Bonsai: Zeth (Provar Reth em zkVM), sentimento zk
  2. Usando zkOracle Hyper Oracle ou zkWASM: zkGo (Prove L2-Geth em zkVM, Type-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, necessitará:

  1. Acesso a Dados Mais Ricos
  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, enquanto cumpre os dois primeiros requisitos funcionais. Como o zkOracle cumpre a funcionalidade autônoma e como o zkCoprocessor não cumpre?

  1. zkOracle: Não é necessária intervenção humana. As tarefas de acesso a dados e cálculos 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 monitorização onchain e filtragem da resposta da computação pelo relayer, ou a adição de mecanismos extra complexos.

Então, o que implica a ausência de autonomia no zkCoprocessor: o

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

Portanto, o zkOracle é uma escolha perfeita e suficiente para uma aplicação completa como DeFi.

Vale ressaltar que os Hooks também podem lidar com algumas das funcionalidades em falta do zkCoprocessor, mas APENAS em cenários como DeFi e não de forma universal.

Aviso Legal:

  1. Este artigo é reproduzido a partir de [Gateespelho]. Todos os direitos autorais pertencem ao autor original [SevenX Ventures]. Se houver objeções a esta reimpressão, por favor contacte o Gate Learnequipa e eles vão resolver rapidamente.
  2. Aviso de responsabilidade: As opiniões expressas neste artigo são exclusivamente as do autor e não constituem qualquer conselho de investimento.
  3. As traduções do artigo para outros idiomas são feitas pela equipe do Gate Learn. A menos que mencionado, 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 em que 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 as suas diferenças.

1. Definição de zkCoprocessor

Quando um termo é cunhado, o seu verdadeiro significado não é definido por si só. Já vimos isso acontecer muito no caso da blockchain.

  1. ZK: Embora os acadêmicos frequentemente se refiram às características de privacidade do Zero Knowledge, no contexto da blockchain, ZK frequentemente apenas significa a concisão e validade da tecnologia. Mesmo projetos construídos em ZK Rollup se autodenominam algo como zkSomething.
  2. DA: Até agora, muitas pessoas não perceberam realmente que a Disponibilidade de Dados não é Armazenamento de Dados, por isso, para resolver este problema de terminologia, algumas pessoas têm sugerido substituir DA por DP(Publicação de Dados), ou tornando 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.

Por isso, queríamos expressar o que o 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) De si mesmos do projeto

Definição 1 do Axioma: o zkCoprocessor comprova 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 utiliza esses dados de forma confiável em um contrato inteligente".

Note que a equipa Brevis disse que este tipo de zkCoprocessors são essencialmente uma camada API/DSL em cima do circuito zk subjacente. Portanto, isto não é programável.

Definição 2 de RISC Zero: o zkCoprocessor descarrega a computação da cadeia para fora da cadeia.

RISC Zero também se refere frequentemente a si próprio como um zkCoprocessor. Do ponto de vista deles, eles veem o zkCoprocessor como um conceito mais amplo, 'uma ferramenta para usar ZKPs para descarregar computação da cadeia para fora da cadeia'.

b) Da Comunidade

Definição de Peteris (o mesmo que 1): zkCoprocessor pode aceder ao estado histórico onchain.

Peteris da Aera Financeacreditaque o zkCoprocessor atua muito como um oráculo de estado, com a função principal sendo o acesso a dados históricos. Ao mesmo tempo, ele e Rishabh da BananaHQacredita que a descrição da definição 2 se parece mais com um zkVM do que com uma subclasse de zkCoprocessor.

Definição da Messari, Modular Media e Kobi (o mesmo que 2): O zkCoprocessor descarrega 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 aos desenvolvedores de contratos inteligentes descarregar facilmente lógica complexa fora da cadeia sem novas suposições de confiança. Modular Media também dá o mesmo conceito. Kobi from Geometrycompara rollup com um coprocessor, Brevis acrescentou que zkCoprocessorcompensa o custo de manter um armazenamento de estado permanente em troca de um desempenho hiper-impulsionado, Taiko veio com o design deBooster Rollupque explorou ainda mais a ideia de Coprocessador Rollup. Estas são a mesma definição que RISC Zero.

c) De Nós

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

  1. Acesso a 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 envia o resultado de volta para o onchain.Comprime o cálculo O(n) em apenas uma verificação O(1).

2. Definição de zkOracle

a) Oracle

Hyper Oracle fornece-nos uma explicação do Oracle em Definindo zkOracle para Ethereum.

A Oracle praticamente resume a "infra" em qualquer espaço de blockchain, como uma definição melhor do que o 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, Feed de Preços da Chainlink). Por outro lado, se é um oráculo de saída (por exemplo, The Graph). Se o oráculo de saída é primeiro, então o oráculo de entrada, então é um oráculo de E/S (por exemplo, Rede Gelato).

Em resumo, o oracle é muito semelhante ao conceito de coprocessor, 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 na verdade tem as capacidades de ambos os zkCoprocessadores.

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 funcionalidades de zkCoprocessor ao mesmo tempo:

  1. processamento assíncrono para contrato inteligente
  2. interoperar com e melhorar as capacidades das aplicações existentes na L1 ou L2
  3. descarregar computação num sistema com recursos limitados

Por comparação direta, zkOracle é uma solução mais completa 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 interligação de cadeias, e o zkCoprocessor de Cálculo zkVM representa um zk rollup baseado em zkVM.

4. Construa com zkCoprocessor ou zkOracle

Qual escolher ao construir?

Numa ordem passo a passo, podemos tomar algumas decisões sobre a construção de uma aplicação.

a) DApp com Contrato Inteligente Puro

Em primeiro lugar, 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 muitas novas aplicações com contratos inteligentes puros.

b) DApp que Precisa de Acesso a Dados Mais Abundante

Em muitos casos, os desenvolvedores podem querer usar o zkCoprocessor de Acesso a Dados ou zkOracle para contratos inteligentes para aceder a fontes de dados mais ricas.

Neste cenário, se o zkCoprocessor de Acesso a Dados for usado sozinho, a computação ainda é tratada no contrato inteligente. O papel do zkCoprocessor é reduzir a complexidade da obtenção de dados da maneira tradicional, mas não tornar o contrato inteligente mais computacionalmente poderoso.

Neste cenário, vemos muitos projetos de dados pequenos, em vez de DApps completos no sentido tradicional:

  1. Usando o Axioma zkCoprocessor: Melhor Gestão de LP, Reembolso MEVictim
  2. Usando zkOracle Hyper Oracle: Preço Uniswap v2, Atividade de Negociação OpenSea, Monitor de Volume USDT

c) DApp que Precisa de Computação Intensiva

Muitas vezes, alguns algoritmos complexos não podem ser computados diretamente na cadeia, para jogos, a lógica computacional é muito complexa, como etherquake e GameOfLife que custam $2k para executar um passo. Ou algoritmos complexos relacionados com ML. Ou algoritmos complexos relacionados com ML que são impossíveis de serem executados na cadeia. Portanto, precisamos de zkVM zkCoprocessor ou zkOracle para executar o cálculo fora da cadeia, e depois submetê-lo à cadeia como ZKP.

Neste exemplo, podemos ver parte do seu potencial computacional ilimitado:

  1. Usando zkCoprocessor Bonsai: Zeth (Provar Reth em zkVM), sentimento zk
  2. Usando zkOracle Hyper Oracle ou zkWASM: zkGo (Prove L2-Geth em zkVM, Type-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, necessitará:

  1. Acesso a Dados Mais Ricos
  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, enquanto cumpre os dois primeiros requisitos funcionais. Como o zkOracle cumpre a funcionalidade autônoma e como o zkCoprocessor não cumpre?

  1. zkOracle: Não é necessária intervenção humana. As tarefas de acesso a dados e cálculos 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 monitorização onchain e filtragem da resposta da computação pelo relayer, ou a adição de mecanismos extra complexos.

Então, o que implica a ausência de autonomia no zkCoprocessor: o

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

Portanto, o zkOracle é uma escolha perfeita e suficiente para uma aplicação completa como DeFi.

Vale ressaltar que os Hooks também podem lidar com algumas das funcionalidades em falta do zkCoprocessor, mas APENAS em cenários como DeFi e não de forma universal.

Aviso Legal:

  1. Este artigo é reproduzido a partir de [Gateespelho]. Todos os direitos autorais pertencem ao autor original [SevenX Ventures]. Se houver objeções a esta reimpressão, por favor contacte o Gate Learnequipa e eles vão resolver rapidamente.
  2. Aviso de responsabilidade: As opiniões expressas neste artigo são exclusivamente as do autor e não constituem qualquer conselho de investimento.
  3. As traduções do artigo para outros idiomas são feitas pela equipe do Gate Learn. A menos que mencionado, copiar, distribuir ou plagiar os artigos traduzidos é proibido.
Comece agora
Inscreva-se e ganhe um cupom de
$100
!