O sucesso do Ethereum levou a um ecossistema próspero de aplicativos descentralizados, mas os desafios de escalabilidade se tornaram cada vez mais aparentes. Os desenvolvedores ficam com uma escolha difícil: limitar a funcionalidade e a riqueza de dados de seus aplicativos ou arcar com o ônus de taxas excessivas de gás ou limites de gás. E se houvesse uma maneira de os desenvolvedores ignorarem essas limitações?
Steel, a biblioteca de prova de chamadas de exibição baseada em Alloy da RISC Zero, representa uma grande mudança na forma como os desenvolvedores interagem com cadeias baseadas em Ethereum L1 ou EVM. Ao aproveitar o poder das provas de conhecimento zero e do RISC Zero zkVM, o Steel permite que os desenvolvedores executem chamadas de visualização e leiam e computem comprovadamente sobre o estado do Ethereum de maneira escalável, segura e economicamente eficiente.
O Steel preenche a lacuna entre o desenvolvimento de aplicativos da Ethereum e a tecnologia de conhecimento zero, tornando mais fácil do que nunca para os desenvolvedores aproveitar o poder do ZK em seus contratos inteligentes. Combinado com os recursos do RISC Zero zkVM, o Steel permite que os desenvolvedores criem aplicativos mais seguros, escaláveis e eficientes no Ethereum L1 ou em qualquer cadeia equivalente a EVM.
Com o Steel, os desenvolvedores ganham a capacidade de:
Com o Steel, executar uma chamada de visualização é tão simples quanto especificar os métodos de Solidity desejados. Seja recuperando um saldo de token ERC-20 (exemplo) ou acessando qualquer aspecto do estado do Ethereum, o Steel simplifica o processo, garantindo segurança e eficiência por meio da integração perfeita com o RISC Zero zkVM. Nossos testes mostraram a capacidade da Steel de lidar com mais de 100K operações SLOAD em uma única chamada de visualização, potencialmente economizando milhares de dólares em taxas de gás na mainnet. Podemos provar isso em cerca de 15 minutos usando Bonsai. Isso levaria pelo menos 210 milhões de gás, excedendo o limite do bloco em 7x.
Nos trechos de código abaixo, demonstramos o processo de comprovação do saldo de um endereço específico para um contrato ERC-20 implantado no Ethereum usando o Steel. Este exemplo mostra como os desenvolvedores podem utilizar o Steel para interagir com dados Ethereum on-chain dentro dos limites de uma zkVM. Você pode encontrar o código completo aqui.
Definindo a assinatura da função Exibir
Comece definindo a assinatura da função ERC-20 balanceOf usando o sol! macro. Isso analisará a sintaxe Solidity para gerar uma struct Rust correspondente, que implementa o traço SolCall. Essa struct pode ser usada para chamar o método balanceOf, que usa um endereço de conta e retorna o saldo de token ERC-20 associado.
Preparando a chamada
Em seguida, configure a chamada instanciando a struct balanceOfCall com o endereço da conta de destino. Além disso, defina constantes para o endereço do contrato que você deseja consultar e o endereço do chamador.
Executando a chamada no Main
A função principal é executada no zkVM, produzindo uma prova de conhecimento zero. Ele começa lendo o ambiente de entrada e, em seguida, constrói um objeto ViewCallEnv, garantindo que o estado atual corresponda à raiz do estado esperado. Depois de se comprometer com o hash e o número de bloco relevantes, a chamada de exibição é executada e o saldo é impresso.
O Steel simplifica o processo de comprovação da execução do código Solidity no RISC Zero zkVM em três etapas simples:
Com as provas de armazenamento tradicionais, os desenvolvedores devem selecionar manualmente quais slots de armazenamento seus contratos inteligentes usam e reimplementar a lógica de contrato inteligente. Com o aço, todos os slots de armazenamento são descobertos e buscados automaticamente com base na execução da chamada de exibição. Isso economiza uma quantidade significativa de tempo dos desenvolvedores e diminui o espaço de erros de implementação, reduzindo a chance de vulnerabilidades de segurança.
Ao usar o opcode blockhash para validação em contratos inteligentes Ethereum, o compromisso para validação deve fazer referência a um blockhash de no máximo 256 blocos de idade. Dado um tempo médio de bloqueio de 12 segundos, isso define um período de tempo estreito de aproximadamente 50 minutos para concluir a geração da prova e confirmar a inclusão da transação de validação em um bloco.
Quando um hash de bloco verificado com mais de 256 blocos é necessário on-chain, várias estratégias podem ser usadas:
Vislumbramos um futuro em que haja uma integração perfeita da computação off-chain com a validação on-chain. O Steel é nossa contribuição para tornar essa visão uma realidade, permitindo que os desenvolvedores acessem e computem comprovadamente toda a história do Ethereum dentro do zkVM para criar a próxima onda de aplicativos on-chain ricos em dados e mais funcionais.
O aço é um componente-chave do compromisso da RISC Zero em lançar o zkVM 1.0, um marco em direção à verificação de prova on-chain barata e segura e às provas universais de conhecimento zero. Comece a usar o Steel hoje visitando nosso repositório do GitHub para obter documentação, exemplos de código e recursos para ajudá-lo a integrar o Steel ao seu projeto.
O sucesso do Ethereum levou a um ecossistema próspero de aplicativos descentralizados, mas os desafios de escalabilidade se tornaram cada vez mais aparentes. Os desenvolvedores ficam com uma escolha difícil: limitar a funcionalidade e a riqueza de dados de seus aplicativos ou arcar com o ônus de taxas excessivas de gás ou limites de gás. E se houvesse uma maneira de os desenvolvedores ignorarem essas limitações?
Steel, a biblioteca de prova de chamadas de exibição baseada em Alloy da RISC Zero, representa uma grande mudança na forma como os desenvolvedores interagem com cadeias baseadas em Ethereum L1 ou EVM. Ao aproveitar o poder das provas de conhecimento zero e do RISC Zero zkVM, o Steel permite que os desenvolvedores executem chamadas de visualização e leiam e computem comprovadamente sobre o estado do Ethereum de maneira escalável, segura e economicamente eficiente.
O Steel preenche a lacuna entre o desenvolvimento de aplicativos da Ethereum e a tecnologia de conhecimento zero, tornando mais fácil do que nunca para os desenvolvedores aproveitar o poder do ZK em seus contratos inteligentes. Combinado com os recursos do RISC Zero zkVM, o Steel permite que os desenvolvedores criem aplicativos mais seguros, escaláveis e eficientes no Ethereum L1 ou em qualquer cadeia equivalente a EVM.
Com o Steel, os desenvolvedores ganham a capacidade de:
Com o Steel, executar uma chamada de visualização é tão simples quanto especificar os métodos de Solidity desejados. Seja recuperando um saldo de token ERC-20 (exemplo) ou acessando qualquer aspecto do estado do Ethereum, o Steel simplifica o processo, garantindo segurança e eficiência por meio da integração perfeita com o RISC Zero zkVM. Nossos testes mostraram a capacidade da Steel de lidar com mais de 100K operações SLOAD em uma única chamada de visualização, potencialmente economizando milhares de dólares em taxas de gás na mainnet. Podemos provar isso em cerca de 15 minutos usando Bonsai. Isso levaria pelo menos 210 milhões de gás, excedendo o limite do bloco em 7x.
Nos trechos de código abaixo, demonstramos o processo de comprovação do saldo de um endereço específico para um contrato ERC-20 implantado no Ethereum usando o Steel. Este exemplo mostra como os desenvolvedores podem utilizar o Steel para interagir com dados Ethereum on-chain dentro dos limites de uma zkVM. Você pode encontrar o código completo aqui.
Definindo a assinatura da função Exibir
Comece definindo a assinatura da função ERC-20 balanceOf usando o sol! macro. Isso analisará a sintaxe Solidity para gerar uma struct Rust correspondente, que implementa o traço SolCall. Essa struct pode ser usada para chamar o método balanceOf, que usa um endereço de conta e retorna o saldo de token ERC-20 associado.
Preparando a chamada
Em seguida, configure a chamada instanciando a struct balanceOfCall com o endereço da conta de destino. Além disso, defina constantes para o endereço do contrato que você deseja consultar e o endereço do chamador.
Executando a chamada no Main
A função principal é executada no zkVM, produzindo uma prova de conhecimento zero. Ele começa lendo o ambiente de entrada e, em seguida, constrói um objeto ViewCallEnv, garantindo que o estado atual corresponda à raiz do estado esperado. Depois de se comprometer com o hash e o número de bloco relevantes, a chamada de exibição é executada e o saldo é impresso.
O Steel simplifica o processo de comprovação da execução do código Solidity no RISC Zero zkVM em três etapas simples:
Com as provas de armazenamento tradicionais, os desenvolvedores devem selecionar manualmente quais slots de armazenamento seus contratos inteligentes usam e reimplementar a lógica de contrato inteligente. Com o aço, todos os slots de armazenamento são descobertos e buscados automaticamente com base na execução da chamada de exibição. Isso economiza uma quantidade significativa de tempo dos desenvolvedores e diminui o espaço de erros de implementação, reduzindo a chance de vulnerabilidades de segurança.
Ao usar o opcode blockhash para validação em contratos inteligentes Ethereum, o compromisso para validação deve fazer referência a um blockhash de no máximo 256 blocos de idade. Dado um tempo médio de bloqueio de 12 segundos, isso define um período de tempo estreito de aproximadamente 50 minutos para concluir a geração da prova e confirmar a inclusão da transação de validação em um bloco.
Quando um hash de bloco verificado com mais de 256 blocos é necessário on-chain, várias estratégias podem ser usadas:
Vislumbramos um futuro em que haja uma integração perfeita da computação off-chain com a validação on-chain. O Steel é nossa contribuição para tornar essa visão uma realidade, permitindo que os desenvolvedores acessem e computem comprovadamente toda a história do Ethereum dentro do zkVM para criar a próxima onda de aplicativos on-chain ricos em dados e mais funcionais.
O aço é um componente-chave do compromisso da RISC Zero em lançar o zkVM 1.0, um marco em direção à verificação de prova on-chain barata e segura e às provas universais de conhecimento zero. Comece a usar o Steel hoje visitando nosso repositório do GitHub para obter documentação, exemplos de código e recursos para ajudá-lo a integrar o Steel ao seu projeto.