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.
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.
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.
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:
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://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..
-
Desenvolvedor Introdução ao EthereumOferta Produto em promoção
R$ 99.99R$ 49.99