Autor: Kernel Ventures Turbo Guo

Revisores: Kernel Ventures Mandy, Kernel Ventures Joshua

TLDR:

O coprocessador ZK é uma solução que permite aos dApps utilizar recursos de computação fora da cadeia. Este artigo discute principalmente a implementação do coprocessador, vários aplicativos e direções de desenvolvimento futuro.

  1. O zkVM do RISC Zero é uma solução de coprocessador ZK que permite que contratos on-chain chamem zkVM off-chain para executar código Rust específico e retornar os resultados para a cadeia, enquanto fornece zkp para o contrato verificar se o cálculo está correto.

  2. Os coprocessadores ZK possuem diferentes métodos de implementação, além do zkVM, os usuários também podem escrever circuitos ZK personalizados para seus próprios programas ou usar estruturas pré-fabricadas para escrever circuitos, permitindo que os contratos utilizem recursos de computação fora da cadeia.

  3. O coprocessador ZK pode desempenhar um papel no DeFi, como colocar cálculos AMM fora da cadeia, permitindo que o protocolo capture valores semelhantes a MEV ou permitindo que AMM implemente lógica operacional complexa e computacionalmente intensiva. O coprocessador ZK também pode permitir que protocolos de empréstimo calculem taxas de juros em tempo real, tornando transparentes os cálculos de margens, etc. Existem duas implementações de zkAMM, uma usando zkVM e a outra usando zkOracle.

  4. Existem outros usos potenciais do coprocessador ZK. Por exemplo, as carteiras podem usar o coprocessador ZK para realizar verificação de identidade fora da cadeia. O coprocessador também pode permitir que jogos em cadeia realizem cálculos mais complexos e reduzam o gás necessário para a governança do DAO. espere.

  5. O padrão do coprocessador ZK é indeciso, mas em comparação com os usuários que escrevem seus próprios circuitos, é mais amigável usar um projeto como interface para chamar recursos fora da cadeia. Mas quais provedores de serviços de computação (fornecedores de nuvem tradicionais, fornecedores de nuvem tradicionais,). etc.) estão conectados por trás do projeto de “interface”? Compartilhamento descentralizado de recursos) é outra questão que vale a pena discutir.

1. O significado e aplicação do coprocessador ZK

Fonte da imagem: Kernel Ventures

O núcleo do coprocessador ZK é mover cálculos on-chain para fora da cadeia e usar ZK para provar a confiabilidade do processo de cálculo off-chain, permitindo que contratos inteligentes lidem facilmente com grandes quantidades de cálculos e, ao mesmo tempo, permitindo contratos para verificar a confiabilidade dos cálculos. Isso é semelhante à ideia do zkRollup, mas Rollup é uma camada de protocolo em cadeia que utiliza recursos de computação fora da cadeia, enquanto o coprocessador ZK é um dApp que utiliza recursos fora da cadeia.

RISC Zero é usado aqui para explicar uma implementação de coprocessador ZK, mas existem muitas implementações de coprocessadores ZK, que serão apresentadas posteriormente. RISC Zero desenvolveu a arquitetura do coprocessador Bonsai ZK, cujo núcleo é o zkVM do RISC Zero. Os desenvolvedores podem gerar zkp no zkVM para o caso de "uma determinada parte do código Rust ser executada corretamente". Com zkVM, o processo específico para implementação do coprocessador ZK é:

  1. O desenvolvedor inicia uma solicitação ao contrato de retransmissão do Bonsai, ou seja, o programa solicitado pelo desenvolvedor é executado no zkVM.

  2. O contrato de retransmissão envia a solicitação para o pool de solicitações fora da cadeia

  3. O Bonsai executa a solicitação no zkVM fora da cadeia, realiza operações em larga escala fora da cadeia e, em seguida, gera um recibo para ela.

  4. Essas provas, também chamadas de “recibos”, são enviadas de volta à rede pela Bonsai por meio de um contrato de retransmissão.

Fonte da imagem: RISC Zero

O programa certificado em Bonsai é denominado Programa Convidado, e o recibo serve para comprovar que o programa convidado foi executado corretamente. As credenciais incluem um diário e um selo. Especificamente, o Journal carrega a saída pública da aplicação zkVM, e o selo é utilizado para comprovar a validade do certificado, ou seja, para comprovar que o programa convidado foi executado corretamente. O selo em si também é um zkSTARK gerado pelo certificador. . A verificação das credenciais garante que o diário foi construído com os circuitos corretos, etc.

Bonsai simplifica o processo para desenvolvedores, desde a compilação do código Rust até o bytecode zkVM, upload do programa, execução em VM e feedback de prova, permitindo que os desenvolvedores se concentrem mais no design lógico do programa. E não apenas parte da lógica do contrato, mas toda a lógica do contrato pode ser executada fora da cadeia. O RISC Zero também usa continuações, que dividem uma grande geração de provas em muitas partes e depois provam cada parte de forma independente. Isso permite que provas sejam geradas para programas grandes sem ocupar muita memória. Além do RISC Zero, vários projetos como IronMill, =nil Foundation e Marlin também fornecem soluções gerais semelhantes.

2. Aplicação do coprocessador ZK em DeFi

2.1 AMM - Bonsai como coprocessador

zkUniswap é um AMM que utiliza recursos de computação fora da cadeia. Seu núcleo é colocar parte dos cálculos de swap fora da cadeia e usa Bonsai. O usuário inicia uma solicitação de troca na cadeia. O contrato de retransmissão do Bonsai obtém a solicitação e inicia o cálculo fora da cadeia. Depois que o Bonsai conclui o cálculo, ele retorna o resultado do cálculo e a prova para a função de retorno de chamada no EVM. Se a prova for verificada com sucesso, a troca será executada.

Porém, a troca não é concluída de uma só vez. Os processos de solicitação e execução estão em transações diferentes. Isso traz certos riscos, ou seja, o status do pool pode mudar após o envio da solicitação e antes da conclusão da troca. Porque a validação é baseada no estado do pool quando a solicitação é enviada. Se o status do pool mudar enquanto uma solicitação ainda estiver aguardando, a verificação falhará.

Para resolver esse problema, os desenvolvedores criaram um bloqueio de pool. Quando um usuário inicia uma solicitação, todas as operações, exceto o swap de liquidação, são bloqueadas até que o off-chain acione com sucesso o swap on-chain ou o swap expire (este tempo será predefinido). Se houver um limite de tempo, mesmo que haja um problema com o relé ou com o zkp, o pool não será bloqueado para sempre. O limite de tempo específico pode ser de alguns minutos.

zkUniswap possui um design especial para MEV, ou seja, os desenvolvedores querem que o protocolo capture o valor MEV. Em teoria, os zkAMMs também têm MEV, porque a primeira pessoa a enviar uma transação pode bloqueá-la, de modo que todos ainda competirão pelo gás, e os construtores também podem classificar as transações solicitadas. Mas o zkUniswap consumirá a própria receita do MEV, usando o leilão holandês com gradiente de taxa de juros variável (VRGDA).

zkUniswap retira o bloqueio e o leiloa a um preço reduzido. Se o bloqueio for vendido rapidamente, o protocolo saberá que a demanda está alta no momento e aumentará automaticamente o preço se a velocidade de venda do bloqueio diminuir. o protocolo reduzirá o preço. Isso se tornará uma nova fonte de renda. De forma equivalente, o acordo fornece uma coisa nova para determinar a ordem das transações, e o dinheiro do preço competitivo é dado diretamente à parte do projeto através da coisa nova.

2.2 AMM - zkOracle como coprocessador

Além de usar o zkVM, algumas pessoas propuseram o uso do zkOracle para realizar a utilização de recursos de computação fora da cadeia, e o zkOracle é um oráculo que leva em consideração tanto a entrada quanto a saída. Geralmente existem dois tipos de oráculos, um é o oráculo de entrada e o outro é o oráculo de saída. O oráculo de entrada classifica (calcula) os dados fora da cadeia e os coloca na cadeia, e o oráculo de saída classifica (calcula) os. dados on-chain) e depois fornecidos ao off-chain. O oráculo de E/S (entrada e saída) (zkOracle) executa primeiro a saída e depois a entrada, permitindo que a cadeia utilize recursos de computação fora da cadeia.

Por um lado, zkOracle usa dados on-chain como fonte de dados. Por outro lado, usa ZK para garantir que os cálculos do nó oracle não sejam fraudulentos e possam realizar a função de um coprocessador. Portanto, os cálculos principais do AMM podem ser colocados no zkOracle. Ao mesmo tempo em que realiza as funções tradicionais do AMM, o zkOracle também pode ser usado para implementar operações mais complexas e que consomem recursos computacionais.

Fonte da imagem: github Fewwwww/zkAMM

2.3 Cálculo da taxa de juros do empréstimo, cálculo de margem e outras aplicações

Independentemente da implementação, muitas funções podem ser alcançadas com o coprocessador ZK. Por exemplo, o contrato de empréstimo já não pode predefinir parâmetros, mas sim ajustar a taxa de juro com base nas condições de empréstimo em tempo real. Por exemplo, aumentar as taxas de juro para atrair a oferta quando a procura de dinheiro emprestado é elevada e depois reduzir as taxas de juro quando a procura é baixa. Isto exige que o protocolo de empréstimo obtenha dados on-chain em tempo real e realize um grande número de cálculos para obter parâmetros apropriados, o que requer cálculos off-chain (a menos que o custo on-chain seja extremamente baixo).

Operações complexas, como cálculo de saldos de margem, lucros e perdas não realizados, valores de liquidação, etc. também podem ser transferidas para o coprocessador para execução. A vantagem de usar um coprocessador é que ele torna essas aplicações mais transparentes e verificáveis, e a lógica do mecanismo de margem não é mais uma caixa preta secreta. Embora o cálculo seja feito fora da cadeia, os usuários podem ter total confiança na exatidão de sua execução. Além disso, esta abordagem também se aplica a cálculos de opções.

3. Outras aplicações do coprocessador ZK

3.1 Carteira usando Bonsai como coprocessador

A Bonfire Wallet usa zkVM para mover cálculos de verificação de identidade para fora da cadeia. O objetivo desta carteira é permitir que os usuários criem carteiras gravadoras com informações biométricas (impressões digitais) ou hardware criptográfico yubikey.

Especificamente, a Bonfire Wallet usa WebAuthn, um padrão comum de autenticação de páginas da web, que permite aos usuários usar diretamente seus dispositivos para concluir a autenticação em páginas da web sem senhas. Assim, na carteira Bonfire, o usuário gera uma chave pública por meio do WebAuthn (não na cadeia, para WebAuthn) e a usa para criar uma carteira.

Cada carteira Burner possui um contrato na cadeia, que contém a chave pública WebAuthn. O contrato precisa verificar a assinatura WebAuthn do usuário. Mas a quantidade de cálculo é muito grande, então o Bonsai é usado para colocar o cálculo fora da cadeia, verificar a assinatura fora da cadeia por meio de um programa convidado zkVM e produzir zkp para verificação na cadeia.

Fonte da imagem: Carteira Bonfire

3.2 Recuperação de dados on-chain - os usuários escrevem circuitos ZK por conta própria

Axiom é um aplicativo que não usa zkVM, mas usa outra solução de coprocessador. Vamos primeiro apresentar o que a Axiom deseja fazer. Ela espera usar o coprocessador ZK para permitir que os contratos acessem informações históricas da cadeia. Na verdade, é difícil para os contratos lerem dados históricos, porque os contratos inteligentes geralmente obtêm dados on-chain em tempo real e é muito caro para os contratos obterem dados on-chain valiosos, como saldos de contas anteriores ou. registros de transações.

Fonte da imagem: demonstração Axiom

Os nós Axiom acessam os dados necessários na cadeia e realizam cálculos especificados fora da cadeia e, em seguida, geram uma prova de conhecimento zero para o cálculo, provando que o resultado foi calculado corretamente com base em dados válidos na cadeia. Esta prova é verificada on-chain, garantindo que o contrato pode confiar no resultado.

Para gerar zkp para cálculos fora da cadeia, você precisa compilar o programa no circuito ZK. Também mencionamos o uso do zkVM para fazer isso, e a Axiom apontou oficialmente que existem muitas soluções para esse assunto, que precisam pesar desempenho e flexibilidade. e experiência de desenvolvimento:

  1. Circuitos customizados: Os desenvolvedores customizam circuitos para o programa, que com certeza terá o melhor desempenho, mas levará tempo para ser desenvolvido;

  2. eDSL/DSL: Os desenvolvedores ainda escrevem seus próprios circuitos, mas existem algumas estruturas opcionais que ajudam os desenvolvedores a resolver problemas relacionados ao ZK, o que pode equilibrar desempenho e experiência de desenvolvimento.

  3. zkVM: Os desenvolvedores usam diretamente máquinas virtuais prontas para executar o ZK. Isso é muito conveniente, mas os funcionários da Axiom acreditam que a eficiência é muito baixa.

Portanto, a Axiom escolheu a segunda opção, e a equipe do projeto também forneceu aos usuários um conjunto de módulos ZK otimizados para que pudessem projetar seus próprios circuitos.

Um projeto semelhante ao Axiom é o Heródoto, mas o que ele quer fazer é um middleware para transmissão de informações entre cadeias. Como o processamento de informações ocorre fora da cadeia, é uma ideia razoável permitir que diferentes cadeias obtenham os dados processados. Outro projeto, Space and Time, utiliza uma arquitetura semelhante para implementar a indexação de dados.

3.3 Jogos on-chain, governança DAO e outras aplicações

Além disso, os coprocessadores ZK podem ser usados ​​para jogos on-chain e governança DAO. RISC Zero acredita que qualquer cálculo que exija mais de 250k de gás será mais barato usando o coprocessador ZK, mas ainda não se sabe como isso será determinado. A governança DAO também pode utilizar o coprocessador ZK, pois envolve múltiplas pessoas e múltiplos contratos, o que consome recursos computacionais. RISC Zero afirma que as taxas do gás podem ser reduzidas em 50% após o uso do Bonsai. ZKML é essencialmente a ideia do coprocessador ZK, então Modulus Labs e Giza também são projetos nesta área, mas o conceito de coprocessador ZK é maior.

Além disso, existem alguns projetos auxiliares na área de coprocessadores ZK, como o ezkl, que fornece compiladores para fazer circuitos ZK, conjuntos de ferramentas para implantação de ZK, ferramentas para mover cálculos on-chain para fora da cadeia, etc.

4. Perspectivas futuras

O coprocessador permite que aplicativos on-chain tenham recursos de computação externos como uma “nuvem”, que fornece grandes quantidades de cálculos relativamente baratos, enquanto apenas os cálculos necessários são processados ​​na cadeia. Em situações reais, o zkVM também pode ser executado na nuvem. O coprocessador ZK é essencialmente uma arquitetura, uma forma de colocar a computação on-chain fora da cadeia, e não há limite para quem fornece recursos de computação fora da cadeia.

Essencialmente, os recursos de computação fora da cadeia são compartilhados por grandes fabricantes tradicionais, até mesmo por recursos de computação descentralizados e dispositivos locais. Cada uma dessas três direções é diferente. Os grandes fabricantes tradicionais podem fornecer soluções de computação fora da cadeia relativamente maduras. No futuro, a "robustez" dos recursos de computação descentralizados pode ser mais forte, e a computação local dos usuários também tem grande imaginação. No entanto, muitos projetos de coprocessadores ZK atualmente optam por fornecer serviços em estágio de código fechado, porque o upstream e o downstream dessa trilha ainda não foram formados e os serviços não podem ser refinados e entregues a projetos diferentes. futuro:

  1. Há um grande número de projetos competindo por cada aspecto do coprocessador ZK

  2. Um projeto com boa experiência de serviço ocupa a maior parte do mercado

Do ponto de vista do desenvolvedor, eles podem usar apenas um projeto de "interface" ao usar o coprocessador ZK. É por isso que a Amazon Cloud ocupa uma grande parte do mercado e os desenvolvedores estarão acostumados a um método de implantação. Mas como um projeto de “interface” para recursos de computação fora da cadeia, quais provedores de serviços de computação (fornecedores de nuvem tradicionais, compartilhamento descentralizado de recursos) estão conectados por trás dele é outra questão digna de discussão.

Kernel Ventures é um fundo de capital de risco criptográfico impulsionado pela comunidade de pesquisa e desenvolvimento com mais de 70 investimentos em estágio inicial focados em infraestrutura, middleware, dApps, especialmente ZK, Rollup, DEX, blockchains modulares e integração de áreas verticais para bilhões de usuários criptográficos em o futuro, como abstração de contas, disponibilidade de dados, escalabilidade, etc. Nos últimos sete anos, temos o compromisso de apoiar o crescimento das principais comunidades de desenvolvimento e associações universitárias de blockchain em todo o mundo.

Referências:

  1. Um guia para coprocessadores ZK para escalabilidade: https://www.risczero.com/news/a-guide-to-zk-coprocessors-for-scalability

  2. Definindo zkOracle para Ethereum: https://ethresear.ch/t/defining-zkoracle-for-ethereum/15131

  3. zkUniswap: um zkAMM inédito: https://ethresear.ch/t/zkuniswap-a-first-of-its-kind-zkamm/16839

  4. O que é um coprocessador ZK?: https://blog.axiom.xyz/what-is-a-zk-coprocessor/

  5. Uma breve introdução aos coprocessadores: https://crypto.mirror.xyz/BFqUfBNVZrqYau3Vz9WJ-BACw5FT3W30iUX3mPlKxtA

  6. Aplicativos mais recentes desenvolvidos no Hyper Oracle (bônus: coisas que você pode construir agora): https://mirror.xyz/hyperoracleblog.eth/Tik3nBI9mw05Ql_aHKZqm4hNxfxaEQdDAKn7JKcx0xQ

  7. Carteira Bonfire: https://ethglobal.com/showcase/bonfire-wallet-n1dzp