Uma das tecnologias mais promissoras dentro do ecossistema Ethereum é o zkEVM ou Zero-Knowledge EVM, um projeto que busca não só melhorar o desempenho da Máquina Virtual Ethereum, mas também dar um enorme salto tecnológico que resultará, não só em maior velocidade de operação, mas também na adição de melhorias que protegerão nossa privacidade quando interagirmos com os contratos inteligentes que são executados usando este novo EVM.
EEste projeto é promovido pelos desenvolvedores do zkSync, uma empresa chamada Matter Labs que desde 2018 busca construir uma solução única de escalabilidade e privacidade do gênero. Além disso, por ser uma solução do tipo software livre, pode ser adaptada a todos os projetos derivados do Ethereum, promovendo assim o desenvolvimento desse ecossistema em busca de novos horizontes.
zkEVM, o poder do ZKP alcança contratos inteligentes
Para entender o que é zkEVM, devemos conhecer as duas tecnologias que este projeto busca unir. Em primeiro lugar, o acrônimo zk representa o fato de que este projeto usa o conhecido Provas de Conhecimento Zero ou Provas de Conhecimento Zero pela sua funcionalidade. Esse recurso permite adicionar funções exclusivas focadas em oferecer um ambiente mais privado para a execução de contratos inteligentes que ocorrem no EVM e que são armazenados no blockchain.
Lembremos que em cada interação que realizamos com um contrato inteligente (por exemplo, quando fazemos uma troca no Uniswap), esse processo gera uma série de dados que ficam armazenados na blockchain Ethereum (ou na rede que estamos usando).
Todas essas informações são públicas e pseudo-anônimas, e podem ser verificadas e rastreadas em todos os momentos. De qualquer forma, o pseudo-anonimato protege nossa privacidade de forma bastante eficaz, mas sempre deixa rastros que outros podem usar para rastrear nossa atividade e nos identificar na vida real. Com o ZKP é possível, não só evitar essa fragilidade, mas ao mesmo tempo fazer com que as operações criptográficas ocupem menos espaço, sejam igualmente verificáveis e auditáveis, além de abrir a possibilidade de gerenciar estados computacionais de forma muito mais eficaz e eficiente. caminho.
Agora, se unirmos os ZKPs e os integrarmos ao EVM, teremos a capacidade de transformar redes como Etheruem e derivados em espaços muito mais seguros, poderosos e escaláveis, justamente os objetivos que o zkEVM busca alcançar:
- Reduza as comissões sobre as operações, devido à redução do custo computacional das operações.
- Mantenha a operação sem confiança de redes que implementam zkEVMs.
- Melhore a privacidade e a segurança da rede onde o zkEVM está implantado.
- Habilite novas tecnologias que podem ser aplicadas a contratos inteligentes. Por exemplo, a possibilidade de melhorar a experiência de uso de tokens NFT ou outras funções avançadas para outros padrões.
zk, uma tecnologia que muda tudo
Agora, vamos explicar alguns conceitos com um pouco mais de profundidade antes de continuar:
O que é zk?
Quando vemos zk no nome de zkEVM, devemos pensar como já mencionamos no ZKP ou Zero Knowledge Proofs.
Um Zero Knowledge Protocol, ou ZKP, é um protocolo criptográfico avançado usado para criar sistemas distribuídos altamente seguros e anônimos. Os protocolos ZKP permitem que as informações sejam compartilhadas e verificadas sem revelar dados desnecessários, mantendo assim um altíssimo nível de segurança.
Basicamente, esse mecanismo de criptografia busca criar uma forma de mostrar ao mundo que existe um segredo, algo tão secreto que só quem tem o segredo em sua posse sabe exatamente o que é.
Mas como você mostra que tem um segredo sem revelá-lo? Pois bem, para isso, o ZKP utiliza uma série de dados matemáticos que permitem que outras pessoas verifiquem se o segredo realmente existe e está em poder de quem afirma tê-lo, mas em nenhum momento é revelada qualquer informação sobre o referido segredo ou seu conteúdo. , nem qualquer coisa que permita que as informações fornecidas para verificação estejam relacionadas à natureza do próprio segredo.
Assim, ZKP permite que você revele um segredo sem realmente revelá-lo, simplesmente oferecendo uma prova matemática de que o segredo existe e que você pode confiar em sua realidade. O bom desse tipo de criptografia é que ela não é apenas segura contra ataques atuais, mas também contra ataques futuros (ex: ZKP é resistente à computação quântica), além de ser computacionalmente mais eficiente em termos de execução e espaço utilizado por suas provas criptográficas. Por esta razão, muitos projetos estão interessados neste tipo de tecnologia para melhorar a eficiência, segurança e escalabilidade das redes blockchain.
zk-Rollup, a evolução dos Rollups
Embora os ZKPs sejam extremamente poderosos, se combinarmos esse poder com Rollups, as coisas mudam radicalmente para melhor. Rollups são uma tecnologia de escalabilidade de sidechain que tem uma operação bastante simples. A ideia é agrupar uma série de transações (por exemplo: todas as operações de um bloco) e a partir delas gerar uma única transação que é publicada na mainnet da rede à qual a referida sidechain está vinculada.
Assim, um rollups funciona como um resumo de transações de operações que é publicado em uma rede principal, enquanto está vinculado a um conjunto de operações em uma sidechain e onde pode ser verificado de forma clara e segura. Essa não é uma tecnologia nova, aliás, a Lightning Network utiliza um sistema muito parecido, já que as operações dos canais do LN acabam sendo sintetizadas em uma única operação dentro do Bitcoin.
Rollups são muito úteis, mas há um problema: a criptografia utilizada atualmente em blockchain (criptografia assimétrica) gera grandes provas computacionalmente ineficientes e com alguns problemas de fungibilidade (ex: em rollups otimistas, é possível manipular economicamente as operações).
Assim, com o objetivo de melhorar esta tecnologia, nasceu o zk-Rollups, que não só tem todas as vantagens dos Rollups e ZKP, como também resolve os problemas de segurança de algumas implementações de Rollup.
Arquitetura e operação do zkEVM
Agora, alcançar o processo que permite que o zkEVM funcione é bastante complexo, no qual os desenvolvedores do Matter Labs estão trabalhando desde 2018.
Entendendo como o EVM funciona
Primeiro, vamos revisar como o EVM normal funciona: tTemos os contratos inteligentes que são todos esses programas escritos em Solidity que podemos ver nos repositórios de blockchain e software dos projetos DApps que conhecemos. Pode-se dizer que esse código é o que faz o Dapps funcionar, embora isso não seja totalmente correto. O EVM não executa diretamente a linguagem Solidity, porque o EVM não interpreta diretamente a linguagem.
Assim, chegamos ao segundo ponto, a compilação de contratos inteligentes. Cada contrato inteligente escrito em Solidity (ou compatível) é compilado e a partir disso é gerado um bytecode, um código de máquina que o EVM é capaz de manipular. Este bytecode é conhecido como Smart Contract Bytecode e é o prelúdio para a execução de contratos inteligentes na rede.
Naturalmente, este bytecode é composto por uma série de OP_CODE ou Códigos de Operação, que são instruções precisas que o EVM implementou e pode executar para realmente fazer os contratos inteligentes funcionarem. Este OP_CODE gerado fornece as instruções precisas que o EVM deve executar para fazer seu trabalho: nos permite usar os Dapps ou qualquer operação dentro da rede. Este OP_CODE pode ser revisado em detalhes dentro da especificação encontrada no Ethereum Yellow Paper.
Por fim, os nós da rede, todos eles com um EVM, executam esse código, verificam se tudo está correto e adicionam as transações e estados ao blockchain, deixando um consenso claro deles e uma prova verificável de tais operações.
Aprimorando o EVM com zkEVM
A operação acima é o que podemos ver no EVM e seus derivados, e isso inclui o zkEVM. A diferença mais fundamental entre o EVM e o zkEVM é que o último gera um ambiente de execução seguro e protegido contra agentes externos, mesmo que pertençam à mesma rede.
Por exemplo, no EVM um operador de nó pode ver as operações que estão sendo executadas. Você pode “vê-los” no sentido de que é possível rastrear os dados de entrada e saída dessas operações, incluindo seus estados intermediários. Isso é possível porque o EVM possui um ambiente de tempo de execução aberto, a criptografia usada no processo existe apenas para proteger determinadas seções do código (como endereços e autorização de manipulação de token).
Mas no zkEVM isso muda radicalmente. Em um ambiente ZKP, podemos ver os dados de entrada, mas na verdade não são os dados reais, mas uma série de dados gerados pela criptografia ZKP. Assim, basicamente a entrada de dados é uma série de dados que permite ao zkEVM verificar se o que dizemos é verdade, mas sem nunca revelar a informação real que deu origem a esses dados.
Esses dados de entrada são acompanhados por dados de execução e uma série de dados de token, que o zkEVM agrega. Após agrupá-los, o zkEVM tem todo o necessário para aplicar o processo que permitirá saber se os dados de entrada estão corretos e, em caso afirmativo, o zkEVM gera as alterações de status que indicam à rede que o contrato inteligente foi executado e, Além disso, são gerados testes que indicam que tais dados e execução estão corretos.
Al final, dependiendo del despliegue de la zkEVM (ej: es nativa – L1, o está dentro de una sidechain – L2), se pueden enviar esos datos a los nodos de la red para que se ejecuten pasos adicionales de verificación, terminando así con o processo.
Facilitando o desenvolvimento
Agora, por que se preocupar em complicar o design do EVM? Bem, em primeiro lugar, o zkEVM não só permite que a execução de contratos inteligentes seja mais privada, mas também nos dá a possibilidade de usar os recursos computacionais dos nós de forma mais eficaz.
O zkEVM foi especialmente projetado para ser uma solução de sidechain, mais especificamente no zkSync e seus famosos zk-Rollups. Isso tem três objetivos:
- Sendo sidechain, certos processos de consenso podem ser relaxados para aumentar a escalabilidade. No entanto, a conexão da sidechain é direta para L1, cada transação no zkEVM gera provas únicas e verificáveis que são registradas não apenas na sidechain, mas também em L1 como um rollup. Isso busca manter um alto nível de segurança enquanto aumenta a escalabilidade, não apenas com sidechains, mas também em sharding.
- A linguagem de programação com zkEVM pode evoluir. Enquanto o Solidity pode ser usado por convenção e compatibilidade, o zkEVM pode usar outras linguagens compatíveis com LLVM, e isso inclui linguagens como C/C++, Zinc (uma linguagem de desenvolvimento e estrutura inspirada e construída sobre Rust). Isso significa que o zkEVM pode ser executado com mais eficiência computacional usando os recursos do nó de forma mais direta, mesmo com a capacidade de obter paralelismo.
3. Facilita o desenvolvimento de aplicativos ZKP, pois o framework Zinc ajuda a gerar aplicativos ZKP com segurança para esta VM.
Outros projetos no horizonte
O zkEVM da Matter Labs é o projeto que iniciou todo esse desenvolvimento do ZKP em cima do EVM, mas outros projetos já aderiram a essa iniciativa. Por exemplo, a Polygon (MATIC) também anunciou sua própria solução zkEVM, também conhecida como Polygon Hermez, um projeto que foi apresentado em março de 2021. É claro que o Polygon zkEVM funciona de forma completamente diferente do zkEVM da Matter Labs.
Da mesma forma, temos projetos como Scroll ou StarkNet, dois projetos focados em oferecer soluções zk-Rollups únicas e poderosas que buscam se tornar soluções de escalabilidade de primeira linha para Ethereum e outras redes compatíveis.
Estes são atualmente os maiores e mais desenvolvidos projetos, mas com certeza veremos outros projetos desta natureza surgirem e serem apresentados ao mundo. No final, o desenvolvimento do blockchain parece imparável e projetos como o zkEVM demonstram isso muito claramente.