Autor: Kernel Ventures Turbo Guo

Editores: Kernel Ventures Rose, Kernel Ventures Mandy, Kernel Ventures Joshua

TLDR: O coprocessador ZK é uma solução para dApps utilizar recursos de computação fora da cadeia. Este artigo explora as soluções existentes, diversas aplicações e o desenvolvimento futuro de coprocessadores. Os principais tópicos abordados são os seguintes:

  1. O zkVM do RISC Zero é uma solução de coprocessador ZK que permite contratos on-chain que chamam zkVM off-chain para executar código Rust específico e retornar os resultados para a cadeia, ao mesmo tempo que fornece zkp para verificação on-chain da correção do cálculo.

  2. Existem diferentes soluções para coprocessadores ZK. Além do zkVM, os usuários também podem escrever circuitos ZK personalizados para seus programas ou usar estruturas pré-fabricadas para escrever circuitos, permitindo assim que os contratos utilizem recursos de computação fora da cadeia.

  3. O coprocessador ZK pode desempenhar um papel no DeFi, como descarregar cálculos de AMM fora da cadeia para capturar valor semelhante ao MEV ou permitir lógica complexa e computacionalmente intensiva para AMMs. O coprocessador ZK também pode facilitar cálculos de taxas de juros em tempo real para protocolos de empréstimo, tornando transparentes os cálculos de margens, entre outras coisas. zkAMM tem duas abordagens de implementação, uma usando zkVM e outra usando zkOracle.

  4. O coprocessador ZK também tem outros casos de uso potenciais, como carteiras que o utilizam para realizar verificação de identidade fora da cadeia. Pode permitir cálculos mais complexos para jogos on-chain e reduzir o gás necessário para governança DAO, entre outras aplicações.

  5. O cenário para os coprocessadores ZK ainda é incerto, mas em comparação com os usuários que escrevem seus próprios circuitos, usar uma solução para interface de recursos fora da cadeia é mais fácil de usar. No entanto, a questão de quais fornecedores de serviços de computação estão integrados por trás dessa solução de “interface”, sejam fornecedores tradicionais de nuvem ou redes descentralizadas de compartilhamento de recursos, é outro tópico importante para discussão.

1. O objetivo e a aplicação dos coprocessadores ZK

Fonte: Kernel Ventures

O núcleo do coprocessador ZK é mover a computação on-chain para fora da cadeia, usando provas ZK para garantir a confiabilidade da computação fora da cadeia, permitindo que contratos inteligentes lidem facilmente com uma grande quantidade de computação enquanto verificam a confiabilidade da computação. Isso é semelhante à ideia do zkRollups, mas os Rollups usam recursos de computação fora da cadeia na camada de protocolo da cadeia, enquanto os coprocessadores ZK são usados ​​pelos dApps para utilizar recursos fora da cadeia.

Usando RISC Zero como exemplo para explicar uma solução de coprocessadores ZK, RISC Zero desenvolveu a arquitetura de coprocessador Bonsai ZK, cujo núcleo é o zkVM do RISC Zero. Os desenvolvedores podem gerar zkp no zkVM para "um determinado código Rust sendo executado corretamente". Com zkVM, o processo específico de implementação de um coprocessador ZK é:

  1. Os desenvolvedores enviam uma solicitação ao contrato de retransmissão do Bonsai, ou seja, para executar o programa necessário do desenvolvedor 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 cálculos em grande escala e, em seguida, gera um recibo.

  4. Essas provas, também conhecidas como “recibos”, são publicadas de volta à rede pela Bonsai por meio do contrato de retransmissão.

Fonte: RISC Zero

No Bonsai, o programa comprovado é chamado de Programa Convidado, e o recibo é usado para comprovar que o programa convidado foi executado corretamente. O recibo inclui um diário e um selo. Especificamente, o diário carrega a saída pública da aplicação zkVM, enquanto o selo é utilizado para comprovar a validade do recibo, ou seja, para comprovar que o programa convidado foi executado corretamente. O selo em si é um zkSTARK gerado pelo provador. A verificação do recibo garante que o diário seja construído usando o circuito correto, etc.

Bonsai simplifica o processo para os desenvolvedores compilarem o código Rust no bytecode zkVM, fazerem upload de programas, executá-los na VM e receberem feedback de prova, permitindo que os desenvolvedores se concentrem mais no design lógico. Ele permite que não apenas a lógica do contrato parcial, mas toda a lógica do contrato seja executada fora da cadeia. O RISC Zero também utiliza continuações, dividindo a geração de uma prova grande em partes menores, permitindo a geração de provas para programas grandes sem consumir memória excessiva. Além do RISC Zero, existem outros projetos como IronMill, =nil; Foundation e Marlin que fornecem soluções gerais semelhantes.

2. Aplicação de coprocessadores ZK em DeFi

2.1 AMM - Bonsai como Coprocessador

zkUniswap é um AMM que aproveita recursos de computação fora da cadeia. Sua principal característica é descarregar parte da computação de swap fora da cadeia, usando Bonsai. Os usuários iniciam uma solicitação de troca na cadeia. O contrato de retransmissão do Bonsai obtém a solicitação, inicia a computação fora da cadeia e, após a conclusão, retorna o resultado da computação e a prova para a função de retorno de chamada do EVM. Se a prova for verificada com sucesso, a troca é executada.

No entanto, a troca não é concluída de uma só vez. Os processos de solicitação e execução ocorrem em transações diferentes, o que traz certos riscos. Ou seja, entre o envio da solicitação e a finalização da troca, o estado do pool pode mudar. Como a verificação é baseada no estado do pool no momento do envio da solicitação, se uma solicitação ainda estiver pendente e o estado do pool mudar, a verificação será inválida. Esta é uma consideração importante no projeto e na segurança de tais sistemas.

Para resolver esse problema, os desenvolvedores criaram um bloqueio de pool. Quando um usuário inicia uma solicitação, todas as operações, exceto a liquidação da troca, são temporariamente bloqueadas até que a computação fora da cadeia acione com êxito a troca na cadeia ou a troca expire (o limite de tempo será predefinido). Com um limite de tempo estabelecido, mesmo que haja problemas com o relé ou zkp, o pool não será bloqueado indefinidamente. O limite de tempo específico pode ser de alguns minutos.

zkUniswap tem um design exclusivo para capturar MEV, já que os desenvolvedores pretendem que o protocolo se beneficie do MEV. Teoricamente, os zkAMMs também têm MEV, já que a primeira pessoa a enviar um swap pode bloqueá-lo e liderar outros, levando a guerras de gás, e os construtores ainda podem priorizar o sequenciamento das transações. No entanto, zkUniswap obtém os lucros do MEV para si usando um método conhecido como Leilão Holandês Gradual de Taxa Variável (VRGDA). Esta abordagem permite que zkUniswap extraia o valor MEV para o protocolo.

O conceito do zkUniswap é bastante interessante. Envolve reduzir o preço dos ativos bloqueados em um leilão e, se os ativos bloqueados forem vendidos rapidamente, o protocolo reconhece a alta demanda e aumenta o preço automaticamente. Se a venda dos ativos bloqueados desacelerar, o protocolo reduz o preço. Esta abordagem inovadora poderá potencialmente tornar-se uma nova fonte de receitas. Essencialmente, o protocolo introduz um mecanismo único para priorizar as transações, e a competição pelos preços beneficia o projeto diretamente através deste mecanismo.

2.2 AMM - zkOracle como coprocessador

Além de usar zkVM, alguns propuseram usar zkOracle para utilizar recursos de computação fora da cadeia. É importante notar que zkOracle é um oráculo de E/S (entrada e saída) que lida com entrada e 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 processa (calcula) dados fora da cadeia e os coloca na cadeia, enquanto o oráculo de saída processa (calcula) dados na cadeia e os fornece fora da cadeia. O oráculo de E/S (zkOracle) primeiro faz 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 e, por outro lado, usa ZK para garantir que os cálculos dos nós oracle sejam honestos, alcançando assim a função de um coprocessador. Portanto, a computação central do AMM pode ser colocada dentro do zkOracle, permitindo a funcionalidade tradicional do AMM e ao mesmo tempo permitindo operações mais complexas e computacionalmente intensivas usando o zkOracle.

Fonte: github poucoswwww/zkAMM

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

Deixando de lado o método de implementação, com a adição de coprocessadores ZK, muitas funcionalidades podem ser alcançadas. Por exemplo, os protocolos de empréstimo podem ajustar as taxas de juro de acordo com parâmetros em tempo real, em vez de condições predefinidas. Por exemplo, aumentar a taxa de juro para atrair a oferta quando a procura de empréstimos é forte, e reduzir a taxa de juro quando a procura diminui. Isso exige que o protocolo de empréstimo obtenha uma grande quantidade de dados na cadeia em tempo real, pré-processe os dados e calcule os parâmetros fora da cadeia (a menos que o custo na cadeia seja extremamente baixo).

Cálculos complexos, como determinação de saldos de margem, lucros/perdas não realizados e etc., também podem usar coprocessadores para execução. A vantagem de usar coprocessadores é que eles tornam essas aplicações mais transparentes e verificáveis. A lógica do mecanismo de margem não é mais uma caixa preta secreta. Embora os cálculos sejam realizados fora da cadeia, os usuários podem confiar totalmente na exatidão de sua execução. Esta abordagem também é aplicável a cálculos de opções.

3. Outras aplicações de coprocessadores ZK

3.1 Carteira – Usando Bonsai como Coprocessador

A Bonfire Wallet usa zkVM para descarregar o cálculo da verificação de identidade fora da cadeia. O objetivo desta carteira é permitir que os usuários criem carteiras gravadoras usando informações biométricas (impressões digitais) ou hardware criptografado yubikey. Especificamente, a Bonfire Wallet usa WebAuthn, um padrão comum de autenticação da web, para permitir que os usuários concluam a verificação de identidade da web diretamente com dispositivos sem senha. Assim, na Bonfire Wallet, os usuários geram uma chave pública com WebAuthn (não na rede, mas para WebAuthn) e a usam para criar uma carteira. Cada carteira Burner possui um contrato on-chain, que contém a chave pública do WebAuthn. O contrato precisa verificar a assinatura WebAuthn do usuário. Mas esse cálculo é grande, então o Bonsai é usado para descarregar esse cálculo fora da cadeia, por meio de um programa convidado zkVM para verificar a assinatura fora da cadeia e produzir zkp para verificação na cadeia.

Fonte: Carteira Bonfire

3.2 Recuperação de dados on-chain - circuitos ZK escritos por usuários

Axiom é um aplicativo que não usa zkVM, mas usa uma solução de coprocessador diferente. Vamos primeiro apresentar o que o Axiom pretende fazer. Ele aproveita coprocessadores ZK para permitir que os contratos acessem informações históricas na cadeia. Na realidade, permitir que os contratos leiam dados históricos é bastante desafiador, porque os contratos inteligentes normalmente obtêm dados na cadeia em tempo real, o que pode ser muito caro. É difícil para os contratos acessar dados valiosos da rede, como saldos históricos de contas ou registros de transações.

Fonte: demonstração Axiom

Os nós Axiom acessam os dados necessários na cadeia e realizam o cálculo especificado 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 neste resultado.

Para gerar zkp para computação fora da cadeia, é necessário compilar programas em circuitos ZK. Anteriormente também mencionamos o uso do zkVM para isso, mas a Axiom sugeriu que existem muitas soluções para isso e é necessário equilibrar desempenho, flexibilidade e experiência de desenvolvimento:

  1. Circuitos Customizados: se os desenvolvedores customizarem circuitos para seus programas, o desempenho será definitivamente o melhor, mas leva tempo para desenvolver;

  2. eDSL/DSL: os desenvolvedores ainda escrevem seus circuitos, mas existem algumas estruturas opcionais para ajudar os desenvolvedores a resolver problemas relacionados ao zk, equilibrando assim o desempenho e a experiência de desenvolvimento.

  3. zkVM: os desenvolvedores executam o ZK diretamente em uma máquina virtual existente, o que é muito conveniente, mas a Axiom acredita que é ineficiente.

Portanto, a Axiom escolheu a segunda opção e fornece aos usuários um conjunto de módulos ZK otimizados, permitindo-lhes projetar seus próprios circuitos.

Projetos semelhantes ao Axiom incluem Herodotus, que pretende ser um middleware para mensagens entre cadeias. Como o processamento de informações ocorre fora da cadeia, é 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 do acima exposto, os jogos on-chain, a governança DAO também podem usar coprocessadores ZK. RISC Zero acredita que qualquer cálculo que exija mais de 250k de gás seria mais barato usando um coprocessador ZK, mas como isso é calculado ainda precisa ser investigado. A governança DAO também pode usar coprocessadores ZK, pois envolve múltiplas pessoas e múltiplos contratos, o que exige muito uso computacional. RISC Zero afirma que o uso do Bonsai pode reduzir as taxas do gás em 50%. Muitos projetos ZKML, como Modulus Labs e Giza, usam a mesma solução dos coprocessadores ZK, mas o conceito de coprocessadores ZK é mais amplo.

Vale ressaltar que existem alguns projetos auxiliares na área de coprocessadores ZK, como o ezkl, que fornece compiladores para circuitos ZK, kits de ferramentas para implantação de ZK e ferramentas para descarregar computação on-chain fora da cadeia.

4. Perspectivas Futuras

Os coprocessadores fornecem aplicações on-chain com recursos computacionais externos semelhantes à “nuvem”, oferecendo computação abundante e econômica, enquanto o processamento on-chain se concentra em cálculos essenciais. Na prática, o zkVM também pode ser executado na nuvem. Essencialmente, os coprocessadores ZK são uma abordagem arquitetônica que move a computação on-chain para fora da cadeia, com uma fonte ilimitada de recursos computacionais fora da cadeia.

Essencialmente, os recursos de computação fora da cadeia podem ser fornecidos por provedores de nuvem tradicionais, até mesmo pelo compartilhamento descentralizado de recursos de computação e por dispositivos locais. Cada uma dessas três direções tem suas características. Os provedores de nuvem tradicionais podem fornecer soluções de computação fora da cadeia relativamente maduras, a “robustez” dos futuros recursos de computação descentralizada pode ser mais forte e a computação local também possui um grande potencial. Mas atualmente, muitos projetos de coprocessadores ZK estão em estágio de provedor de serviços de código fechado porque o ecossistema para esses serviços não está totalmente formado e a especialização de serviços entre diferentes projetos ainda não foi definida. Dois cenários possíveis para o futuro são:

  1. Cada parte do coprocessador ZK possui um grande número de projetos competindo entre si.

  2. Um único projeto com excelente experiência em serviços pode dominar o mercado.

Do ponto de vista do desenvolvedor, ao usar coprocessadores ZK, eles podem interagir apenas com um único projeto de “interface”. Isso é semelhante ao motivo pelo qual a Amazon Web Services tem uma participação substancial no mercado, já que os desenvolvedores tendem a se acostumar com um método de implantação específico. No entanto, a questão de quais provedores de serviços de computação (empresas de nuvem tradicionais, compartilhamento descentralizado de recursos) estão integrados por trás deste projeto de “interface” de recursos computacionais fora da cadeia é outro tópico que vale a pena discutir.

Kernel Ventures é um fundo de capital de risco de criptografia orientado pela comunidade de pesquisa e desenvolvimento com mais de 70 investimentos em estágio inicial, com foco em infraestrutura, middleware, dApps, especialmente ZK, Rollup, DEX, Modular Blockchain e verticais que integrarão o próximo bilhão de usuários em criptografia como abstração de contas, disponibilidade de dados, escalabilidade e etc. Nos últimos sete anos, nos comprometemos a apoiar o crescimento das principais comunidades de desenvolvimento e associações universitárias de Blockchain em todo o mundo.

REFERÊNCIA:

  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