< Todos os Posts

Escalabilidade para Ethereum com Rollups

Escalabilidade para Ethereum com Rollups

Introdução

Muitas pessoas já nos questionaram sobre a razão de ainda não existir na rede Blockchain produtos como Uber, AirBnB, Facebook e outros aplicativos famosos. Essa pergunta ocorre devido ao anseio das pessoas de ver, no mundo da tecnologia da Blockchain, a mesma funcionalidade dessas gigantes do mundo da tecnologia. Isso faria com que a corrida em Uber, por exemplo, diminuísse, já que não haveria uma empresa lucrando ao intermediar o processo de conectar o motorista ao usuário, abaixando o valor da corrida, pois a taxa cobrada pelo aplicativo, fora ao valor destinado ao motorista, não existiria. E todo mundo quer pagar mais barato, não é verdade?! 

Dessa forma, a tecnologia Blockchain é muito promissora para que tais funcionalidades de empresas grandes atuais sejam integradas em um sistema mais barato, transparente, colaborativo e seguro. Entretanto, existem alguns motivos para a adoção da população para usar um “Uber” em uma rede Blockchain, por exemplo. São eles: competitividade, altas taxas e usabilidade.

Primeiro, caso alguém invente um Uber hoje em dia, cópia do atual, mesmo que seja de uma forma mais barata, segura e transparente, ainda assim seria difícil competir para atrair os clientes já acostumados com todos os serviços da Uber, inclusive atrair motoristas para o aplicativo, considerando toda a experiência e reputação que têm no aplicativo. Dessa forma, o modelo de negócio de um “Uber” no Blockchain provavelmente teria de ser diferente, a fim de atrair pessoas por alguma vantagem competitiva. 

O outro motivo, mais difícil de ser solucionado do que esse, é o problema das altas taxas para se usar a Blockchain. Ao fazer a requisição de um motorista e concluir a viagem, o usuário teria que pagar uma taxa para que aquela viagem fosse registrada no Blockchain: e, atualmente, as taxas estão muito altas, por motivos que explicaremos mais abaixo. Reduzir o preço destas taxas torna-se um objetivo da comunidade Blockchain, e muitas soluções estão em desenvolvimento ou teste a fim de resolverem este problema. Hoje falaremos sobre a mais promissora delas: rollups. Elas podem ser a porta de entrada para que tenhamos num futuro próximo um “Uber”, “AirBnB”, “Facebook” em uma rede Blockchain.

Entendendo Escalabilidade

Existem três características principais que definem uma Blockchain: descentralização, segurança e escalabilidade. O objetivo de todas as Blockchains construídas é conseguir atingir o melhor resultado nos três aspectos e existem diversas inovações advindas de cada uma das principais Blockchains atuais, tragas tanto pelos criadores destas Blockchains, assim como pela comunidade que as suportam.

Alcançar o objetivo de ter uma Blockchain com máxima descentralização, segurança e escalabilidade significa que qualquer pessoa poderia participar de uma Blockchain – tanto para fazer transações, como para verificá-las, o sistema seria confiável por ser muito seguro e os usuários controlariam o que acontece no ecossistema da Blockchain.

A estes três aspectos interligados de uma Blockchain, é dado o nome de “trilema do Blockchain”, pois a alteração em um tem efeitos em outro.

Atualmente, um dos problemas mais debatidos nas comunidades das Blockchains é o problema da escalabilidade: como tornar a Blockchain acessível a todas as pessoas do mundo, mantendo a segurança e a descentralização? E é aí que vem os rollups! 

Introdução ao Rollups 

Para o entendimento mais fácil do que se tratam os rollups, utilizaremos um exemplo muito simples adaptado de um exemplo dado pelo WhiteBoard Crypto – um canal no Youtube.

Suponha que você queira mandar cartas para 5 parentes seus que estão longe de você e que moram juntos. Uma forma de fazê-lo é escrevendo cada uma das cartas, colocando cada uma delas em um envelope diferente, indo aos serviços de correios e enviando cada uma delas separadamente, pagando um preço por cada uma delas. Parece louco, não é? Realmente é! E é assim que funcionam as transações na rede da Ethereum. Cada transação é enviada à rede de forma individual, sendo requerido o pagamento das taxas associadas a cada uma das transações diferentes.

n5N8dRuVS77f3jHh6MAigwJwIBOe7fyRRKbWKX5xMxB8SRAIIW3jgQhcNCdVpbdL1L5NydxOEeQ7P9uguoT YB QCmuz6C8vdL01N baq730IiCNipgIAPN4wbvOmB29RDOFQS3S
(Source: WhiteBoard Crypto)

Enquanto demos o exemplo, você provavelmente pensou em um método muito mais simples de se fazer isso. Ao invés de mandar cada uma das cartas separadamente para o mesmo local, podemos colocá-las todas em um único envelope e enviá-las para o destino pagando a taxa do envio de um único pacote, em contraposição a pagar por 5 envelopes.

Você acabou de aprender o conceito de rollups – agrupar transações em um único grupo e enviá-las juntas à rede da Ethereum para que possam ser validados e acrescentados aos blocos da rede! Como apenas uma transação foi feita na rede da Ethereum representando várias transações feitas fora da rede da Ethereum, apenas o gás usado em uma transação é pago ao enviar estas transações para a rede principal da Ethereum, e este custo é dividido entre todos os que fizeram as transações fora da rede, de modo que as transações ficam muito mais paradas para o usuário final e, dessa forma, mais pessoas têm acessibilidade a fazer transações, tornando a rede mais escalável.

Lembrando que mesmo que as transações sejam entre contas diferentes, todas elas possuem algo em comum: são transações e devem ser aprovadas para ir para a rede.

Agora que sabemos o conceito de rollups, como eles funcionam na prática no ambiente da Blockchain, fora do mundo das cartas? É isto que vamos aprender agora!

Diversidade de Rollups

É essencial dizer que as rollups tem por objetivo fazer com que as Blockchains consigam aumentar a escalabilidade de si mesmas sem prejudicar a descentralização e a segurança da mesma. Dessa forma, existem diversas maneiras de encarar este problemas e muitas soluções, utilizando do mesmo conceito de rollups, foram criadas e já estão sendo usadas a fim de contribuir para uma rede escalável da Ethereum 2.0.

Existem alguns termos e processos essenciais para o entendimento de rollups. Caso os seguintes termos soem estranhos para você ou precise revisá-los, recomendo ler este artigo nosso a fim de você voltar aqui para entender frase por frase. 

Como já havíamos falado em outros artigos, cada bloco – vamos usar a Ethereum como exemplo – possui um stateRoot. Este stateRoot nada mais é do que um hash em representação hexadecimal que representa o hash final de uma Merkle Patricia Tree composta pelos estados das contas de todos os usuários e contratos da rede. Logo, quando o balanço ou uma variável salva no storage de um contrato são alterados, por exemplo, o stateRoot muda devido a uma mudança em algum ramo da estrutura criptografada de dados da Merkle Patricia Tree. 

Os rollups usam a mesma ideia, só que invés de cada transação alterar o stateRoot da rede, as transações são feitas fora da rede e depois agrupadas em um bloco chamado batch, que por fim altera o stateRoot do bloco

O batch com as transações fortemente comprimidas é adicionado a uma Merkle Patricia Tree (árvore) de batches localizada em um smart contract. À medida que novos batches são adicionados, o smart contract checa se a nova árvore é baseada na árvore anterior, incluindo apenas novos batches. Essa checagem é feito pelo hash das árvores: a árvore anterior tendo um hash, e a árvore nova (árvore anterior + novos batches) tendo um novo hash baseado na árvore anterior. Caso, criptograficamente, a nova árvore realmente inclua novos batches que consideraram a antiga árvore já produzida, os novos batches são adicionados à árvore antiga, produzindo uma nova árvore de batches – que contém a compressão de todas as transações individuais feitas fora do Blockchain. Esta nova árvore é, então, adicionada à Blockchain.

yqu3FeMdlOOmRsHVnMgXuD5duS0VPxz3vz8O2 fa4OJjuLLMz6tfms1pnk
(Source: https://vitalik.ca/general/2021/01/05/rollup.html)

A pergunta que não quer calar: Como saber que o novo batch contém transações que realmente são verdadeiras? Pois qualquer pessoa pode copiar o stateRoot da Merkle Tree e fazer transações falsas em cima da árvore e mandar um batch falso com uma transação, por exemplo, transferindo todos os tokens para si próprio. Existem duas principais diferenças para este problema: os rollups otimizados e os ZK-rollups.

RollUps Optimizados (Optimistic Rollups)

Seguindo o exemplo das cartas, ao enviar as 5 cartas em um só envelope, o custo de enviá-las separadamente diminuiria. Entretanto, quando um parente abre o envelope com as cartas e as distribui para os outros 4, cada um dos 4 está confiando de que o parente está distribuindo estas cartas de forma correta – sem trocar as cartas dos parentes em questão. Depois de já entregues, cada um começa a ler suas próprias cartas e, caso alguém perceba algum indício de que a carta sendo lida é de outra pessoa e que a carta que deveria ser lida, na verdade, está em outras mãos, o mesmo indivíduo pode acusar o parente que distribuiu as cartas erroneamente a fim de que a haja uma redistribuição, diminuindo a reputação e confiança do parente responsável pelo erro dentro de sua própria casa, caso a acusação seja válida depois de os parentes entrarem num consenso sobre qual é a distribuição correta. Assim, a distribuição antiga é desfeita e uma nova é feita. 

Este grupo de rollups que usa de um processo de validação chamado fraud proofs a fim de combater falsos batches de serem enviados para a árvore de batches e estes, por fim, serem enviados à mainnet do Ethereum é chamado de rollups otimizadas. As fraud proofs funcionam da seguinte forma: é confiado que os batches enviados realmente serão verdadeiros. À medida que os batches são enviados por participantes da rollups, outros participantes da mesma estarão conferindo se os batches enviados são verdadeiros. Caso haja algo que seja suspeito e alguém envie uma prova de que a árvore realmente está incorreta, o batch acusado e todos os batches posteriores serão desfeitos. Isso faz com que o tempo de espera aumente para que uma transação seja confirmada, pois os batches devem esperar este tempo de acusação e validação, caso algum seja acusado. E um método que faz isso ficar ainda mais justo é um no qual todos os que enviam batches – ou seja, juntam as transações, comprimem-nas e enviam para a árvore de batches – devem alocar uma quantidade inicial de ETH e a mesma deve permanecer bloqueada. Caso o indivíduo envie algum batch que seja posteriormente acusado e identificado como falso, o mesmo será penalizado perdendo uma quantidade de seu ETH, que inclusive reembolsará os participantes que pagaram taxas de gás para fazer a validação da árvore por meio do método de fraud proofs.

Estas rollups recebem este nome pois confiam que o enviador dos batches estará falando a verdade sempre, de modo a otimizar o processo de verificação e validação a fim de a escalabilidade na rede ser atingida à medida que mais transações por segundo são feitas já que o custo de gás é menor.

Os exemplos mais comuns de rollups otimizadas atualmente são: Arbitrum, Optimism e Cartesi. 

g8u9SMYI8KJfyOcwIiZkLofT5NQ6goABvXDTA4j4hhjeWeZt9JDzvkVjw20Pns0rdewPHsM5
(Source:https://ethereum.org/en/developers/docs/scaling/layer-2-rollups/)

ZK-Rollups

Continuando com o exemplo das cartas sendo enviadas para os 5 parentes em um lugar distante por meio de um único envio em um único envelope, veremos agora como funcionam os ZK-Rollups. 

Modelo 1:

Imagine que o remetente envie 5 cartas bem detalhadas em um único envelope falando sobre os seguintes temas para os parentes, de forma que cada parente receba um tema diferente: “o tio morreu”, “tenho um novo sobrinho”, “vou casar”, “ganhei na loteria” e “o preço da gasolina está caro”.

Cada parente lerá uma carta gigantesca sobre o tema destinado a ele e aprenderá sobre o tema.

Modelo 2:

Imagine agora que ao invés de fazer isso, o remetente escreva somente uma carta, com 5 linhas, sendo que em cada linha haja um tema e o parente ao qual a informação deve ser entregue, como exemplificado abaixo:

“o tio morreu”  – parente 1

“tenho um novo sobrinho” – parente 2

 “vou casar” – parente 3

“ganhei na loteria” – parente 4

“o preço da gasolina está caro” – parente 5

Cada um dos parentes obterá, em suma, a mesma informação quando comparado ao modelo 1, de forma sucinta e comprimida. E suponha ainda que o remetente foi no cartório e autenticou a carta de forma que é quase impossível que não tenha sido ele que as enviou. Dessa forma, todos os parentes saberão que a carta contém informações que verdadeiramente vieram do remetente cujo nome está assinado na carta, de forma que podem ter segurança sobre os assuntos resumidamente tratados.

Ufa! O modelo 2 é um modelo básico de como as ZK-rollups funcionam. Assim como os rollups otimizados, várias transações são colocadas em um batch fora da rede da Ethereum e antes disso ser mandado para a rede, uma prova de que aquelas transações são legais, verdadeiras e confiáveis é feita fora da rede por meio de algoritmos computacionais e de matemática avançada. Assim, o que é mandado para o validador da rede da Ethereum não é um batch com transações, mas sim um documento atestando que as transações em um batch são corretas pois foram computacionalmente verificadas. Ao documento em questão damos o nome de validity proof – que seria equivalente à carta autenticada em cartório no exemplo do Modelo 2. Sendo assim, é muito rápido para as transações serem confirmadas na rede da Ethereum – assim como é rápido o pensamento de que uma carta autenticada em cartório realmente é do remetente em questão, quando, em contraste, esta certeza é muito mais lenta quando não há autenticação inicial em cartório.

Portanto, para resumir de uma forma sucinta: ZK-rollups são rollups que combinam as transações feitas fora da rede em um único batch de forma incrivelmente comprimida, e cujos batches são adicionados a uma árvore. A árvore é validada fora da rede da Ethereum por meio de um algoritmo computacional confiável e que enviará o resultado dessa validação ao validador da Ethereum a fim de que o state do smart contract da rollup seja atualizado assim como o state das contas envolvidas nas transações feitas no batch.

Você talvez tenha se perguntado porque se chamam “ZK-rollups” e de onde vem esse “ZK”. ZK significa Zero Knowledge , que no contexto em questão, significa zero conhecimento sobre os detalhes menos importantes sobre as transações. Ou seja, a compressão é tão grande que aquilo que é considerado detalhe em uma transação é descartado. 

Como exemplos de ZK-Rollups, encontramos duas que parecem muito promissoras por terem sido bem feitas: StarkWare e Hermez.

StarkWare:

Completamente me apaixonei pela tecnologia peculiar desta rollup produzida por um time de matemáticos, cientistas e engenheiros de muito renome, baseada em matemática complexa a fim de comprimir as transações o máximo possível em batches – assim como explicamos. O que a torna diferente é realmente como esta compressão acontece, pois o criador desta rollup é um matemático que estudou o campo da criptografia a fundo e era especialista no modelo matemática de compressão usado na StarkWre. 

Eles já possuem clientes individuais que tiveram consultorias com eles a fim de desenvolverem e melhorarem seus produtos. As mais conhecidas são: dyDx, Immutable, Sorare e DeverseFi. Eles então lançaram recentemente uma rede chamada StarkNet que permite que qualquer pessoa faça transações ou desenvolva código de programação para smart contracts a fim de que estes sejam comprimidos, juntados em batches e enviados à Ethereum, funcionando como uma ZK-rollup.   

Hermez:

A Hermez possui um modelo diferente da StarkWare, mesmo que ambas sejam ZK-rollups. A Hermez tem uma rede própria também, mas ainda não suporta o desenvolvimento de smart contracts, suportando apenas transferências de criptomoedas. A Hermez tem uma própria criptomoeda HEZ. Uma pessoa ao utilizar desta rollup deve trocar uma criptomoeda sua pela HEZ a fim de poder transferir HEZ para alguém. Esta transação é agrupada com outras transferências e, posteriormente, todas elas são enviadas à Blockchain da Ethereum por meio da validity proof delas, gerado a partir das transações na rede da Hermez que foram agrupadas em um batch. Eles também escolhem alguém por meio de leilões para que as transações feitas na rede sejam checadas e o validity proof seja gerado, e o mesmo recebe incentivos em HEZ por ter feito este trabalho.

Comparação entre Rollups Otimizadas e ZK-Rollups

Para finalizar, aqui estão algumas prós e contras de cada um dos modelos:

AraUk ZpAo0aWZh8HPGQYCqnSt2pN6kwUBRWaGSr6JkO8EXOCGL7nRGr5KQ77zOokiU0aUKRvMvECwUnx Ap6LVQVzU66mFOqDDAvD75b tXM3IaUHI 8A LMRzAG6ybKEpddEw

Conclusão

Por fim, as rollups vêm forte como solução mais promissora para que o Blockchain seja muito mais escalável, tornando-se acessível, financeiramente, à maioria da população do mundo. Elas ainda não são perfeitas e estão sendo testadas pela comunidade a fim de que o melhor modelo seja escolhido por adoção. A abertura e expansão trazidas por elas farão com que mais desenvolvedores migrem para o Blockchain a fim de produzir aplicativos que facilitem a minha e a sua vida, assim como tantos outros facilitaram até agora – como o “Uber”, por exemplo. A expectativa fica ainda maior quando conhecemos os fundamentos do Blockchain e sabemos que esta tecnologia traz transparência, segurança, descentralização, justiça, e mais espaço para o indivíduo frente às grandes empresas. Estamos vivendo numa época fantástica da tecnologia, onde soluções buscam cada vez mais a privacidade das pessoas e produtos colaborativos sem a necessidade de intermediários. E você, vai ficar fora dessa?!

Compartilhe este artigo com aqueles que estão procurando aprender sobre o assunto. Indo de um a um podemos aumentar a consciência dos brasileiros para participarem desta oportunidade para um mundo melhor. 

Links de Referências

https://eth.wiki/fundamentals/patricia-tree

https://hermez.io/

https://starkware.co

https://www.youtube.com/c/WhiteboardCrypto

E se você chegou até aqui é porque quer aprender mais sobre Blockchain, então conheça nosso curso de Introdução ao Ethereum clicando aqui em baixo..

Aviso Legal: Esta postagem é apenas para fins educacionais. Não constitui um conselho de investimento ou uma recomendação ou solicitação para comprar ou vender qualquer investimento e não deve ser usado na avaliação do mérito da tomada de qualquer decisão de investimento. Não deve ser invocado para aconselhamento contábil, jurídico ou tributário ou recomendações de investimento.

Postagens recentes

blog
Caio Sá

Fidelidade 3.0

Fidelidade 3.0 Programas de fidelidade a marcas têm existido há bastante tempo. Fidelidade importa muito as marcas, pois os benefícios de reter clientes existentes compensa

Read More »
blog
Talita Paes

Celebridades que utilizam NFTs

Celebridades que utilizam NFTs Por que celebridades como Neymar e Justin Bieber estão de olho nas NFTs Os NFTs caíram no gosto de celebridades, nomes

Read More »
EnglishPortuguêsEspañol