10 de fevereiro de 2023
Por Sumi Maria Abraham, engenheira de pesquisa e desenvolvimento da Kerala Blockchain Academy.
Nos últimos anos, testemunhamos um aumento exponencial na demanda por transações Ethereum, o que levou ao aumento vertiginoso dos preços do gás (aumento das taxas de transação). Os rollups oferecem uma solução para realizar transações protegidas por blockchain a um custo mais baixo. A ideia básica se assemelha fortemente ao conceito de ”cadeias sombra” (shadow chains) proposto por Vitalik Buterin em 2014.
O que é um Rollup?
Rollup é uma solução de escalonamento de camada 2 (L2) que amplia o conceito de sidechains. Eles ajudam a reduzir a carga da Ethereum realizando execuções de transações na camada 2 (fora da cadeia). Ao contrário do exemplo de sidechain que discutimos, os rollups salvam certos dados correspondentes a cada transação na Ethereum. Os rollups agrupam as transações em lotes, executam-nas fora da cadeia e armazenam alguns dados relacionados com cada transação na cadeia principal. Vamos descobrir mais sobre rollups.
Rollup x Sidechain
Sidechains são blockchains secundárias que ocasionalmente se comunicam com a cadeia principal (camada 1 - L1). As sidechains possuem mecanismos e protocolos de consenso independentes; assim, a Ethereum não pode garantir a segurança de uma sidechain. Considerando que um rollup depende da segurança da blockchain de camada 1, ele funcionará corretamente enquanto a Ethereum estiver ativa. Todas as transações são armazenadas na blockchain e executadas fora da cadeia por uma entidade central. Os rollups agrupam transações em lotes e os compactam. Isso aumenta o rendimento reduzindo o tamanho de cada transação e eliminando a necessidade de execução na camada 1. A parte de verificação é feita na blockchain.
Como é que funcionam os rollups?
Vejamos um exemplo.
Na rede Ethereum, as transações de uma conta só podem ocorrer sequencialmente. Alice deseja transferir alguns tokens para Bob, Carol e David. Ela deve primeiro efetuar a transação com o Bob, aguardar a confirmação, depois efetuar a transação com a Carol e assim por diante. Quando ela terminar as transações, levará aproximadamente 36 segundos (supondo uma situação ideal) ou mais.
Os rollups oferecem uma solução para reduzir o tempo geral e o preço total para realizar essas transações, dispensando a Ethereum de fazer a execução.
Para entender esse conceito, vamos revisar o que acontece quando um usuário envia uma transação.
A Ethereum mantém o estado da blockchain, que se refere ao saldo atual detido por cada conta (contas de contrato e de usuário), e os valores atuais atribuídos às variáveis de estado no contrato. Esses dados são representados usando Merkle Patricia Tries, que são armazenados em bancos de dados de valor-chave como LevelDB ou CouchDB. Uma transação é uma solicitação de transição de estado. Quando a transação “Alice transfere 10 ETH para Bob” for processada, a Ethereum verificará se Alice tem quantia suficiente para pagar Bob, debitará o saldo de sua conta e creditará a conta de Bob. Isso irá alterar os dados armazenados na trie, o que gerará um novo valor raiz.
Suponha que temos um rollup. O Rollup manterá um estado que registra os endereços e os estados das contas que estão sendo manipulados por ele. O estado de um rollup é armazenado na cadeia de camada 1 (L1) por um contrato inteligente de rollup.
Alice enviará todas as três transações para o rollup. Cada transação exigirá uma mudança de estado.
O rollup processará as transações em um lote (bloco). Isso gerará a nova raiz de estado.
O conjunto compactado de lote de transação, a raiz do estado anterior e a raiz do estado atual serão enviados para o contrato inteligente.
O contrato de rollup na camada 1 verifica se a raiz do estado anterior no lote corresponde à sua raiz do estado atual. Se houver correspondência, ele atualizará a raiz do estado para o novo valor.
Como a Ethereum pode proteger os rollups sem executar as transações na camada 1?
Este é o fator que torna os rollups diferentes de uma sidechain. A Ethereum garante a autenticidade das atualizações de estado. Essa aprovação é representada na forma de prova. Os rollups provam sua correção para a Ethereum usando provas específicas que permitem à Ethereum verificar o processamento das transações sem executá-las efetivamente.
Qual é o papel da prova?
Rollups são categorizados com base na natureza da prova.
Rollups otimistas, como Arbitrum e Optimism são baseados em provas de fraude. Eles seguem uma perspectiva otimista e assumem que as transações são válidas, a menos que alguém as conteste. Eles publicam o estado atualizado na Ethereum sem publicar nenhuma prova. Qualquer pessoa pode publicar um lote de transações. Para contestá-lo, é necessário executar as mesmas transações e enviar uma prova de cálculo incorreto, chamada de prova de fraude, no contrato inteligente de rollup. O contrato irá verificar isso. Se for detectado um cálculo incorreto, esse lote de transações e os lotes subsequentes serão revertidos. O contrato mantém um histórico de atualizações de raiz de estado anteriores e os hashes de lote correspondentes. Um mecanismo de incentivo recompensa as entidades participantes para que sejam tentadas a produzir reivindicações corretas e contestar reivindicações incorretas.
ZK Rollups (rollups de conhecimento zero) enviam uma prova de validade junto com cada lote de transações. A prova de validade é uma prova criptográfica que prova que a nova raiz foi calculada corretamente a partir do lote de transações enviado. Essa prova é verificada pelo contrato. A prova Zk (Zk-proof) representa a certeza matemática de que tudo o que for postado na camada 1 é válido e ocorreu no rollup. Se a prova for avaliada como verdadeira, a transação pode ser considerada final. StarkWare e Zksync estão trabalhando em ZK-rollups na Ethereum.
Rollups otimistas são menos dispendiosos e adequados para cálculos de uso geral. Geralmente, os rollups otimistas são compatíveis com EVM. No entanto, eles têm rendimento limitado. Embora o cálculo da prova seja tecnicamente desafiador e caro, os ZK-rollups oferecem melhor compactação de dados e finalização mais rápida. Isso torna os ZK-rollups adequados para aplicações financeiras. A compatibilidade com a EVM dos zk-rollups é uma área de pesquisa ativa.
As provas garantem que, mesmo que os validadores/operadores do rollup ajam de forma errada, eles não podem roubar nenhum dinheiro, pois as garantias de segurança finais são derivadas da Ethereum.
Como o rollup compacta os dados?
Muitos campos típicos de uma transação Ethereum podem ser omitidos ou representados de forma eficiente em termos de armazenamento em transações rollup. Por exemplo, toda transação Ethereum tem um valor nonce, que é incrementado para cada transação subsequente do remetente. Mas uma transação rollup não requer um valor nonce, pois pode ser calculada a partir do estado anterior. Outro exemplo é o endereço do destinatário. Em rollups, o endereço é substituído por um valor de índice muito menor.
Uma análise detalhada da economia de armazenamento pode ser encontrada aqui.
Os rollups tentam substituir dados por computação sempre que possível. Eles podem reduzir o tamanho total de uma transação para quase um décimo de seu equivalente em Ethereum.
Como os rollups podem reduzir custos?
O agrupamento de várias transações reduz as taxas gerais de transação ao distribuir os custos fixos por todas as transações dentro de um determinado lote. Os operadores de camada 2 também aplicam algumas técnicas de compactação para minimizar os dados postados na Ethereum.
Os rollups transmitem suas raízes de estado de volta à Ethereum usando calldata para armazenamento. Calldata é atualmente a forma mais barata de armazenamento na Ethereum.
Resumindo
Os rollups executam transações “fora da cadeia” da rede principal (L1), agrupam (“rollup”) essas transações em um único bloco e, em seguida, enviam esse bloco para a camada 1 (L1) como uma única transação. Resumindo, milhares de transações podem ser processadas fora da cadeia e representadas através do envio de uma única transação à rede principal. Dessa forma, os rollups podem aumentar significativamente a escalabilidade e o rendimento da blockchain de camada 1 subjacente.
Referências
[1] Cosimo Sguanci, Roberto Spatafora, Andrea Mario Vergani, “Layer 2 Blockchain Scaling: a Survey”.
[2] Gangwal, Ankit & Gangavalli, Haripriya & Thirupathi, Apoorva. (2022). A Survey of Layer-Two Blockchain Protocols.
[3] https://ethereum.org/en/layer-2/
[4] https://vitalik.ca/general/2021/01/05/rollup.html
[5] https://www.preethikasireddy.com/post/a-normies-guide-to-rollups
Cortesia da imagem: https://www.flaticon.com/
Esse artigo foi escrito por Sumi Maria Abraham e traduzido por Isabela Curado Nehme. Seu original pode ser lido aqui.
Latest comments (0)