# Uma exploração da zkEVM & da Polygon zkEVM

> Por design, a Polygon zkEVM é um zk-rollup compatível com a EVM. Ela tem como objetivo melhorar o throughput, a performance e a eficiência.

Por Shodipo Ayomide, publicado em 4 de out. de 2022. Versão web: https://blog.shodipoayomide.com/pt/an-exploration-of-the-zkevm-the-polygon-zkevm

![Uma exploração da zkEVM & da Polygon zkEVM](https://blog.shodipoayomide.com/banners/An-Exploration-of-the-zkEVM-The-Polygon-zkEVM.png)

## Introdução

Por design, a Polygon zkEVM é um zk-rollup compatível com a EVM. Ela tem como objetivo melhorar o throughput, a performance e a eficiência. Aproveitando o Plonky2 (uma tecnologia de zk-scaling de ponta), ela consegue gerar provas leves e também facilitar a verificação recursiva de SNARKs, permitindo assim que os usuários verifiquem provas rapidamente.

Além do tempo menor de geração de provas, a zkEVM agora possibilita transações bem mais baratas, deixando toda aplicação descentralizada na zkEVM mais econômica.

## O problema de escalabilidade do Ethereum

No momento, tentar construir aplicações descentralizadas usadas em massa no Ethereum não é viável, porque as transações demoram muito para serem processadas e são bem caras, e isso cria uma experiência ruim para o usuário e atrapalha uma adoção significativa.

O motivo por trás desse problema é que cada node que participa da rede precisa processar toda e qualquer transação, o que faz com que só 13 transações sejam processadas por segundo.

## O papel dos ZK-rollups

Os Zk-Rollups são o segundo tipo de rollup, depois dos optimistic rollups. Eles se diferenciam dos seus equivalentes optimistic porque usam a geração de provas criptográficas conhecidas como zk-proofs para verificar as transações que foram agrupadas em lote, em vez de usar o mecanismo de período de espera que os optimistic rollups usam, e isso deixa os zk-rollups mais rápidos.

Os zk-rollups custam bem menos porque agrupam as transações em um único lote e publicam só as provas das transações. Até agora, os ZK-rollups que suportavam smart contracts exigiam que os desenvolvedores saíssem do ecossistema Ethereum, porque não eram compatíveis com a EVM.

A Polygon foi além e construiu um ZK-rollup com um ambiente de execução de código que suporta o bytecode do Ethereum, chamado Polygon zkEVM. Isso poupa os desenvolvedores do trabalho de escrever código do zero, em vez disso, eles podem migrar facilmente os seus smart contracts para a zkEVM.

{" "}

![Uma exploração da zkEVM & da Polygon zkEVM](https://i.ibb.co/hyjX19m/images-40.jpg)

*Arquitetura do zk-rollup Hermez.*

## Por que a zkEVM é o futuro

Antes de falar sobre como a zkEVM é melhor do que a EVM tradicional, precisamos entender como a EVM tradicional funciona.

A Ethereum virtual machine(EVM) é uma máquina virtual turing-completa que funciona como o ambiente de execução dos smart contracts. Quando uma transação acontece, todo o bytecode do contrato é compilado a partir do código-fonte e enviado para o armazenamento da EVM, e aqui os nodes peer-to-peer são executados. Os nodes garantem que cheguem ao destino correto usando os mesmos inputs de transação.

Em seguida, os códigos de operação da EVM (opcodes) interagem com os diferentes estados da EVM, depois leem os valores do armazenamento de estado e enviam os novos valores para o armazenamento da EVM.

No fim, os novos valores são replicados pelos novos nodes e o estado se mantém até que outra transação seja processada.

![Uma exploração da zkEVM & da Polygon zkEVM](https://i.ibb.co/WW0HD8M/images-1.png)

*Ethereum Virtual MachineIlustração do modelo de execução da EVM.*

A zkEVM funciona com esse mesmo princípio, mas vai além para garantir que os dados sejam melhor verificados. Além dos passos descritos na EVM, a zkEVM também verifica se o bytecode que está sendo carregado está correto e vem do endereço correto. Ela também garante que os dados da blockchain correspondem aos dados na EVM.

## Arquitetura da Polygon zkEVM

Assim como a EVM, a principal função da zkEVM é suportar smart contracts. Ela vai compilar transações de L2, executar transições de estado e atestar a validade dessas mudanças de estado gerando provas de validade.

**A zkEVM tem 5 componentes principais:**

- Usuários que enviam transações
- Um mecanismo de consenso conhecido como Proof-of-Efficiency
- Uma bridge LX-to-LY, que é um smart contract que os usuários podem usar para transferir ativos entre camadas diferentes
- Um hardware especializado que gera provas de validade, conhecido como zkProver
- Um software conhecido como zkNode, usado pelos participantes da rede para governar a rede e para sincronização.

![Fazendo o flatten do contrato](https://i.ibb.co/80ZNzyG/fig-simple-poe.png)

*Ilustração do smart contract PoE*

### Sequencers

Os sequencers coletam as transações de L2 dos usuários da rede, depois empacotam essas transações em um lote e propõem esse lote ao smart contract PoE. O papel de sequencer é permissionless, qualquer pessoa pode ser um sequencer desde que tenha o software zkNode rodando na sua máquina. Isso melhora a descentralização da rede.

Um sequencer que quer propor um lote na L1, precisa pagar as taxas de gas da L1 e depositar uma taxa adicional em token. Isso ajuda a evitar spam e também incentiva os sequencers a propor só transações válidas. As taxas de lote pagas pelos usuários são a forma como os sequencers são incentivados.

Os lotes propostos vão ser publicados na L1 como calldata. Qualquer novo node permissionless vai reconstruir os dados e então sincronizar o seu estado. Depois que são mineradas, as transações de L1 determinam a ordem em que as transações de L2 são executadas. Um novo estado determinístico é então criado, e o novo estado só é estabelecido quando a prova de validade é enviada para a L1. É aqui que entra o papel dos aggregators.

{" "}

![Fazendo o flatten do contrato](https://i.ibb.co/q5C6WCk/png-20220911-144628-0000.png)

*Como os sequencers funcionam*

### Aggregators

O papel de um aggregator é gerar provas de validade para os lotes de transações de L2 propostos pelos sequencers. Quando os lotes são propostos, eles são organizados de acordo com a sua posição e contêm os dados das transações.

Os aggregators então competem para criar provas de validade para cada lote usando um hardware especializado conhecido como zkProver. O primeiro aggregator a gerar essa prova é recompensado com a taxa em Matic depositada pelos sequencers.

O papel de aggregator também é aberto a qualquer pessoa, desde que tenha o software zkNode instalado e consiga rodar o zkProver.

![Fazendo o flatten do contrato](https://i.ibb.co/syX6vXM/png-20220911-145742-0000.png)

*Como os aggregators funcionam*

## Características do design da zkEVM

**Equivalente à EVM** - A zkEVM da Polygon tem compatibilidade “no nível do bytecode”. Isso significa que ela tem compatibilidade total no nível dos opcodes da EVM e no nível da linguagem solidity. Todas as ferramentas e smart contracts que rodam no Ethereum não precisam de nenhuma mudança para também rodar na zkEVM.
**Segura** - Considerando que a zkEVM herda a maior parte da sua segurança do Ethereum, ela também usa zero-knowledge proofs como zk-STARKs e zk-SNARKs para garantir que, quando mudanças de estado acontecem, elas são feitas; corretamente, que provas que atestam a mudança de estado são geradas e que essas provas ficam disponíveis on-chain para verificação.
**Descentralizada e permissionless** - Qualquer pessoa pode participar da rede desde que tenha as ferramentas necessárias, dependendo dos papéis que quer desempenhar.
**Eficiente** - Como a eficiência é essencial para a performance da rede, os aggregators mais eficientes são os que fornecem as provas de validade e são incentivados, além disso, toda a computação é feita off-chain, enquanto só as zk-proofs e os dados necessários ficam on-chain.

---

## Conclusão

A zkEVM é a versão melhorada das máquinas virtuais comuns, executando transações de forma mais rápida e mais segura. O projeto inteiro vai ser aberto como open-source pela Polygon e pode ser usado por qualquer pessoa que esteja procurando uma forma melhor, mais barata e mais rápida de usar o Ethereum.

É uma tecnologia muito complexa, mas estamos construindo a todo vapor e mal podemos esperar para mostrar no que temos trabalhado.
