O que são os Rollups, a grande ideia de escalabilidade em Ethereum?
Published: 2021-12-16 21:25:38

Rollup é uma forma de escalar operações na Ethereum que consiste em executar as transações fora da Layer 1 (Ethereum Mainnet) e, depois, indexar tudo na Layer 1, usando a vantagem de estar fora da Mainnet (velocidade), mas ainda com os mesmos protocolos de segurança.

Tirar essas transações da Mainnet permite que mais transações sejam feitas e que isso se torne mais barato, pois em Rollups, apenas alguns dados das transações são mandados para a rede principal, depois delas executadas em uma rede separada, compatível com a Mainnet (EVM-based).

Feitas as transações em rollup, é hora de agrupá-las em lotes de transações e, aí sim, mandar para validação na rede principal, a Ethereum Mainnet.

Resumindo o processo: executar transações, pegar os dados, compactá-los e os "acumular" na cadeia principal em um único lote.  Daí vem o nome Rollup (um acúmulo).

Porém, como saber que esses dados são realmente confiáveis, não alguém querendo manipular tudo para benefício próprio? Provando: cada tipo de rollup é responsável por alguns smart contracts na Ethereum Mainnet, que vão validar depósitos e saques, além de verificar a autenticidade.

Basicamente, temos dois tipos de rollups, Optimistic Rollup (otimista) e ZK Rollup (zero conhecimento), que diferem entre si pela forma com que validam e provam as transações. 

Abaixo, vou explicar o básico de cada um dos tipos, mas nos próximos dias vou criar threads explicando cada um separadamente e de forma mais detalhada, pra um entendimento mais claro. Primeiro, Optimistic Rollup:

Como o nome já diz, o Optimistic Rollup assume uma postura otimista em relação aos dados que recebe e os posta na Ethereum como verdadeiros e consistentes. Caso sejam realmente consistentes, nada mais precisa ser feito, mas, em caso de fraude, quem enviou a transação é punido.

Para conseguir isso, Optimistic Rollups implementam um sistema de resolução de disputas que é capaz de verificar as provas de fraude, detectar transações fraudulentas e desincentivar os corruptos de enviar outras transações inválidas ou fazer validações incorretas.

Quando uma de fraude é enviada, o sistema entra no modo de resolução de disputas. Assim, a transação suspeita é executada novamente, agora na Ethereum Mainnet. Caso a execução comprove que a transação foi realmente fraudulenta, a parte que a apresentou é punida.

Para evitar que os partes corruptas enviem spam para a rede com provas de fraude incorretas, as partes que desejam enviar provas de fraude geralmente também precisam fornecer um vínculo que pode ser sujeito a corte.

Para poder executar uma transação de rollup na Ethereum Mainnet, Optimistic Rollups devem implementar um sistema que seja capaz de reproduzir uma transação com o mesmo estado que estava presente quando a transação foi originalmente executada no rollup.

Essa é uma das partes complicadas dos Optimistic Rollups e geralmente é conseguida com a criação de um smart contract separado que substitui certas chamadas de função por um estado do rollup.

Diferentemente, nos ZK Rollups não há resolução de disputa. Isso é possível aproveitando uma peça inteligente de criptografia chamada provas Zero-Knowledge, daí o nome rollups de ZK. Neste modelo, cada lote postado na camada 1 inclui uma prova criptográfica chamada ZK-SNARK.

A prova pode ser verificada rapidamente pelo smart contract na Ethereum quando o lote de transação é enviado e lotes inválidos podem ser rejeitados imediatamente. 

De cara, isso é simples, mas, na prática, para que isso funcione, existe uma camada complexa de criptografia e matemática, fruto de horas do trabalho vários pesquisadores.

Além da dessa, existem outras diferenças entre Optimistic e ZK Rollups. Resumidamente:

* Tempo de saque de fundos: Optimistic Rollups geralmente podem demorar dias para permitir os saques, já que a forma de implementação espera um consensosobre provas de fraude. Os ZK Rollups são bem mais rápidos, assim que o lote de transações e uma prova de validade são submetidos.

* Compatibilidade: devido à complexidade da tecnologia, é muito mais difícil criar um ZK Rollup compatível com EVM, o que torna mais difícil escalar apps sem ter que reescrever boa parte da lógica deles. Optimistic Rollups usam 99% dos smart contracts sem necessidade de alteração.

---

Como deve ter ficado claro, Rullups é um assunto bem extenso. Essa thread foi mais p/ falar sobre o tema e deixar aberto para estudo. Nos próximos dias, vou fazer artigos separados explicando Optimistic Rollups e ZK Rollups melhor e separadamente.

**Referências:**
[https://finematics.com/rollups-explained/](https://finematics.com/rollups-explained/)
[https://vitalik.ca/general/2021/01/05/rollup.html](https://vitalik.ca/general/2021/01/05/rollup.html)