WEB3DEV

Cover image for Sidechains vs. Rollups: Analisando as Diferenças para o Desenvolvimento de Aplicativos Descentralizados
Panegali
Panegali

Posted on

Sidechains vs. Rollups: Analisando as Diferenças para o Desenvolvimento de Aplicativos Descentralizados

Neste artigo, você aprenderá a diferença entre sidechains e rollups.

Sidechains e rollups são duas soluções para o problema da escalabilidade das blockchains. Ambas as soluções giram em torno de mover a computação de uma blockchain com recursos limitados (como a Ethereum) para uma blockchain independente otimizada para escala. Essa abordagem traz benefícios, como a redução do custo por transação, diminuição da latência e melhoria na capacidade de processamento. Mas é aí que as semelhanças terminam.

Sidechains e rollups são fundamentalmente diferentes em sua abordagem para a escalabilidade e têm decisões de design e compensações diferentes. Para os desenvolvedores que esperam aproveitar uma dessas soluções para construir dapps escaláveis, é importante saber como elas são diferentes.

Este post oferece uma visão geral de rollups e sidechains, explorando diferenças em arquitetura, garantias de segurança, propriedades de escalabilidade e muito mais. Também fornecemos recomendações sobre quando implantar seu dapp em um rollup ou sidechain (ou ambos).

O que é uma sidechain?

Um sidechain é uma rede blockchain que opera em paralelo com outra blockchain (chamada de "cadeia principal" ou "main chain"). Geralmente, uma sidechain se conecta à cadeia principal por meio de uma ponte bidirecional que permite transferir ativos - e possivelmente dados arbitrários, como estado de contrato, provas de Merkle e resultados de transações específicas - entre as duas redes.

A maioria das sidechains tem seu próprio mecanismo de consenso e conjunto de validadores, separado da cadeia principal. Isso permite que as sidechains liquidem e finalizem transações sem depender de outra blockchain. No entanto, também significa que a segurança dos fundos transferidos para a sidechain depende da existência de fortes incentivos cripto-econômicos para desencorajar comportamentos maliciosos entre os validadores.

Tipos de sidechains:

Sidechains compatíveis com EVM x não compatíveis com EVM: sidechains compatíveis com EVM utilizam uma implementação personalizada da Máquina Virtual Ethereum, o ambiente de execução para contratos inteligentes implantados na Ethereum. Na verdade, a maioria dessas blockchains começou como bifurcações (forks) do go-ethereum, também conhecido como Geth, a implementação mais popular do protocolo Ethereum.

Embora mantenham a maioria das qualidades do design da Ethereum - como suporte a contratos inteligentes - as sidechains EVM otimizaram outras áreas, especialmente o consenso, para melhorar a execução e o rendimento. Hoje, as sidechains compatíveis com EVM executam a maioria dos contratos inteligentes escritos em linguagens EVM como Solidity, diminuindo os custos e as latências na execução para usuários de aplicativos descentralizados.

Sidechains não compatíveis com EVM implementam uma arquitetura de Máquina Virtual diferente e não podem executar dapps nativos da Ethereum sem uma refatoração extensiva de código. Desenvolvedores que constroem em cadeias não compatíveis com EVM não podem usar ambientes de desenvolvimento e ferramentas EVM familiares (por exemplo, Truffle, Remix, Hardhat) e podem precisar aprender outra linguagem, como Rust ou Golang, para criar dapps.

Nota: Avalanche, Fantom, Celo e Palm são exemplos de sidechains compatíveis com EVM. NEAR, Solana e Algorand são exemplos de sidechains não compatíveis com EVM.

Commit chains e sidechains otimistas: nem toda sidechain inicializa totalmente sua segurança; algumas, especialmente commit chains e cadeias otimistas, dependem da cadeia principal para certas garantias de segurança. Uma commit chain periodicamente envia commits criptográficos para seu estado mais recente (por exemplo, cabeçalhos de bloco) para outra blockchain. A cadeia principal não pode verificar essas provas de estado - já que não pode acessar o estado da sidechain - mas garante que as partes honestas possam contestar cabeçalhos de bloco inválidos antes que sejam confirmados.

Isso é normalmente feito implementando um contrato inteligente na cadeia principal que lida com recompensas, participações, rotações e penalidades dos validadores da sidechain. Se um validador cometer uma ofensa comprovável - como assinar dois blocos na mesma altura - qualquer um pode enviar a prova para o contrato inteligente e reduzir a participação desse validador.

As cadeias otimistas operam de maneira semelhante e exigem que os validadores enviem cabeçalhos de bloco para um contrato inteligente na cadeia principal em intervalos. No entanto, as cadeias otimistas não têm um mecanismo de consenso separado - os cabeçalhos de bloco são simplesmente considerados válidos até serem contestados por uma prova de fraude (mais sobre isso posteriormente). Assim, as cadeias otimistas podem operar com um único validador (honesto), enquanto as sidechains de commit exigem múltiplos validadores para funcionar.

Em ambos os casos, as partes honestas podem provar comportamento malicioso ocorrendo na sidechain para a blockchain principal. Dessa forma, os usuários ainda têm algumas garantias de segurança, mesmo que a maioria do conjunto de validadores da sidechain esteja corrompida.

Mas há um porém: partes honestas não podem provar comportamento malicioso sem acesso aos dados de estado armazenados nos blocos. No entanto, como a cadeia principal recebe apenas cabeçalhos de bloco (e não corpos de blocos) da sidechain, ela não pode garantir a disponibilidade de blocos. Isso permite que proponentes de blocos corruptos escapem impunes de atos desonestos - digamos, roubar fundos da ponte - retendo dados de blocos.

Esse problema - conhecido como o problema de disponibilidade de dados - é central para as diferenças nas propriedades de segurança de _todas _as sidechains, não apenas as sidechains de commit e otimistas e rollups. A próxima seção, que discute rollups, explica como os rollups resolvem o problema de disponibilidade de dados para garantir a segurança dos fundos dos usuários.

Nota: Polygon PoS e SKALE são exemplos de sidechains de commit. Arbitrum Nova e Metis são exemplos de sidechains otimistas (ou seja, construções do tipo rollup otimista com disponibilidade de dados fora da cadeia).

O que é um rollup?

Os rollups aumentam a escalabilidade de uma blockchain subjacente processando transações em um ambiente de execução separado. Assim como as sidechains, os rollups possuem pontes para mover ativos para dentro e para fora da blockchain principal. Eles também implementam otimizações para melhorar a velocidade computacional e a eficiência de custos para os usuários.

No entanto, os rollups enviam blocos para a cadeia principal em intervalos, herdando a segurança e a descentralização desta última. Isso significa que a blockchain principal garante as seguintes propriedades de segurança para os rollups:

  1. Disponibilidade: os blocos do rollup tem a garantia de estarem disponíveis para verificação porque os dados são armazenados na rede pai, que é mais descentralizada e segura. Por exemplo, os usuários sempre podem comprovar detalhes sobre o estado do rollup para o contrato de ponte (por exemplo, possuir tokens) e retirar fundos caso os validadores do rollup retenham dados de transações.
  2. Validade: os blocos do rollup só podem ser finalizados se atenderem às condições de validade impostas pela cadeia principal.
  3. Vitalidade: como os dados do rollup são armazenados na camada base, qualquer pessoa pode reconstruir o último estado válido do rollup e produzir novos blocos. Além disso, os usuários podem forçar a inclusão de uma transação em um rollup, enviando-a para os contratos inteligentes na cadeia do rollup. Isso impede que validadores corruptos congelem a cadeia e censurem os usuários.

Tipos de rollups

Os rollups vêm em duas formas: otimistas e de conhecimento zero. Rollups de conhecimento zero (também conhecidos como rollups de validade) enviam blocos para a cadeia principal juntamente com provas de validade que confirmam que as transações fora da cadeia foram executadas corretamente. Se a prova for verificada na cadeia, o bloco é finalizado na camada base.

Os rollups otimistas enviam blocos sem qualquer prova de validade da computação fora da cadeia. Os blocos são simplesmente considerados válidos, a menos que outra parte conteste os resultados de uma transação através de uma "prova de fraude". As provas de fraude assumem a forma de um jogo de verificação, mediado pela cadeia principal, no qual duas partes disputam uma determinada computação até que a parte desonesta seja descoberta.

A suposição otimista de que as transições de estado são, em sua maioria, válidas é o que dá o nome aos rollups otimistas. No entanto, esse otimismo é combinado com incentivos cripto-econômicos que garantem que, exceto se um bloco inválido permanecer não contestado por muito tempo, ele nunca será finalizado pela cadeia principal.

Nota: Arbitrum e Optimism são exemplos de rollups otimistas.

A compatibilidade com a EVM é outra distinção importante entre os rollups otimistas e os de conhecimento zero (ZK). Enquanto os rollups otimistas são compatíveis com a EVM, os rollups de conhecimento zero variam em seu grau de compatibilidade com a EVM. Como provar instruções EVM nativas em um circuito de prova é complexo e consome recursos, alguns rollups de validade usam um conjunto de instruções VM personalizado otimizado para provas mais eficientes.

Quando um rollup de conhecimento zero é compatível com a EVM, descrevemos seu ambiente de execução como uma "EVM de conhecimento zero" (ZK-EVM). ZK-EVMs podem executar contratos inteligentes Ethereum fora da cadeia _e _provar que todas as partes da computação foram realizadas corretamente. Por esse motivo, os rollups de conhecimento zero são considerados mais seguros do que os rollups otimistas, que dependem de incentivos cripto-econômicos e suposições honestas para evitar execuções inválidas.

Linea é um exemplo de rollup de validade de Camada 2 com suporte completo à EVM - permitindo que os desenvolvedores reutilizem a infraestrutura e as ferramentas Ethereum para construir dApps. Em contraste, implantar em um rollup de conhecimento zero que não seja compatível com EVM, como a StarkNet, requer: (a) a construção de contratos inteligentes com uma pilha diferente ou (b) a modificação do código para ser executado na VM StarkNet.

Como as sidechains são diferentes dos rollups?

Capacidade de processamento: as sidechains podem processar, em média, mais transações do que os rollups porque não dependem da cadeia principal para consenso e disponibilidade de dados. Por exemplo, uma sidechain pode implementar tamanhos de bloco maiores e tempos de bloco extremamente rápidos para obter maior capacidade de processamento, o que os rollups não conseguem fazer.

Os rollups devem evitar processar um número excessivo de transações, de forma que lotes de transações possam não caber em um único bloco da cadeia principal. Caso contrário, isso reintroduziria um congestionamento na camada base e dificultaria para a primeira acompanhar os blocos produzidos no rollup. Assim, a largura de banda de dados da cadeia principal de um rollup coloca um limite efetivo em sua capacidade de processamento.

Mesmo sidechains que dependem em parte da cadeia principal para segurança (ou seja, commit chains e cadeias otimistas) ainda possuem melhor capacidade de processamento do que os rollups. Para contexto, os cabeçalhos de bloco têm tamanho constante e consomem menos armazenamento do que os lotes de rollups, que variam em tamanho. Portanto, as commit chains e as cadeias otimistas podem produzir blocos de tamanhos arbitrariamente grandes em intervalos rápidos, sem se preocupar em congestionar a rede da blockchain principal.

Custos: é provável que os usuários paguem menos por transações em uma sidechain em comparação com um rollup. Assim como outras distinções entre sidechains e rollups, essa tem a ver com a dependência da cadeia principal para liquidação e finalização. Aqui estão alguns custos operacionais incorridos pelos rollups (que são repassados aos usuários):

  • Armazenamento de dados: enviar um bloco de rollup para a camada base incorre em custos fixos (o custo de incluir a transação em um bloco) e custos variáveis (com base no tamanho do bloco de rollup). Como resultado, os rollups cobram dos usuários pela computação _e _pelos dados - transações que geram mais dados pagam mais e vice-versa.
  • Geração e verificação de provas: rollups de conhecimento zero incorrem em custos extras na geração de provas de validade para verificação na camada base. Verificar provas de validade consome muitos recursos e atualmente custa cerca de 500.000 gas na Ethereum, por exemplo.

As sidechains puras não têm os custos descritos acima; portanto, são mais baratas de usar. Uma commit chain ou sidechain otimista pode incorrer em alguns custos extras ao enviar cabeçalhos de bloco, mas esses custos são insignificantes. Além disso, é possível reduzir os custos acumulando vários cabeçalhos de bloco antes de enviá-los em uma única transação.

Finalidade: sidechains totalmente responsáveis por sua segurança têm finalidade instantânea - os blocos são irreversíveis uma vez aprovados pela maioria dos validadores. Isso não se aplica a commit chains ou sidechains otimistas, no entanto, pois elas devem considerar as contestações que poderiam atrasar a finalização dos cabeçalhos de bloco.

Rollups geralmente têm um tempo de finalização mais longo do que as sidechains puras por diferentes razões. Por exemplo, rollups otimistas atrasam a confirmação de transações para garantir que os participantes honestos tenham tempo para contestar atualizações de estado inválidas.

Rollups de validade têm finalidade instantânea (após a verificação da prova); mas também têm tempos de finalização mais longos do que sidechains puras. Como a geração e verificação de provas de validade são caras, os sequenciadores preferem acumular uma quantidade considerável de transações antes de gerar e enviar provas em lotes.

Segurança: a segurança de um rollup - otimista ou de conhecimento zero - é garantida pela blockchain subjacente, reduzindo as suposições de confiança para os usuários. Como explicado anteriormente, os rollups dependem da cadeia principal (economicamente segura) para consenso e disponibilidade de dados (ao contrário das sidechains). Isso reduz o risco de censura, saques congelados, execução inválida e outros problemas.

Sidechains puras são responsáveis por sua segurança. No entanto, inicializar um conjunto diversificado e confiável de validadores pode ser difícil, razão pela qual as sidechains são consideradas menos seguras do que os rollups.

Commit chain e sidechains otimistas são um pouco mais seguras do que sidechains puras, mas os usuários devem confiar nos validadores e proponentes para disponibilidade de dados. Se ataques de retenção de dados forem realizados sem incorrer em penalidades, as commit chains e as sidechains otimistas não têm garantias de segurança.

Ponte: rollups e sidechains (em sua maioria) usam o mesmo esquema de ponte de ativos: bloqueiam X tokens em um contrato inteligente na cadeia principal e cunham X tokens para o usuário na cadeia filha. O que os separa é como os fundos depositados no contrato de ponte são garantidos.

Como os rollups são específicos para uma determinada blockchain de camada base, geralmente existem "pontes canônicas" que conectam as duas. Os fundos depositados em uma ponte de rollup são garantidos pela cadeia principal:

  • Fundos depositados em um rollup de validade podem ser retirados somente se a prova associada ao lote contendo a transação de saída for verificada na cadeia.
  • Com rollups otimistas, os usuários podem retirar fundos após o bloco contendo a transação de saque do usuário não for contestado depois que a janela de disputa (aproximadamente 1-2 semanas) passar.

Por outro lado, a segurança dos fundos depositados em uma ponte de uma sidechain depende do seu design. Por exemplo, se uma sidechain possui uma ponte canônica conectando-a a outra blockchain, a segurança dos fundos transferidos está relacionada à honestidade dos validadores. Outra pergunta a se fazer é se a ponte é validada pelo conjunto completo de validadores (por exemplo, a ponte Polygon PoS) ou por um pequeno grupo de verificadores externos (por exemplo, a ponte Avalanche-Ethereum).

As variações no tempo de finalização também explicam as diferenças entre as pontes de rollups e sidechains. Para ilustrar, os usuários de rollups otimistas enfrentarão mais atrasos ao transferir fundos de volta para a cadeia principal devido à janela de contestação. Com as sidechains, os usuários podem sacar fundos do contrato de ponte assim que ele receber um cabeçalho de bloco finalizado (e uma prova de Merkle válida, se necessário).

Escolhendo entre rollups e sidechains

A escolha entre um rollup e uma sidechain ao implantar contratos inteligentes depende de seus objetivos, feedback dos usuários e necessidades do projeto. Aqui estão diferentes cenários que tornam o uso de um rollup, uma sidechain ou ambos preferíveis.

Quando usar um rollup:

  1. Seus usuários desejam as garantias de segurança mais altas.
  2. Seus usuários podem tolerar custos um pouco mais altos e maior latência/finalização (por exemplo, ao transferir fundos). Os rollups são mais baratos e mais rápidos do que Ethereum (em ordens de magnitude), mas não podem igualar as sidechains nessas métricas.
  3. Você (ou seus usuários) deseja um relacionamento mais próximo com o ecossistema da blockchain principal (por exemplo, Ethereum).
  4. Você planeja melhorar a experiência do usuário (UX) para os usuários de dapps em rollups. Isso pode significar usar provedores de liquidez para reduzir o atraso na retirada de fundos de um rollup otimista ou implementar otimizações de código (veja alguns exemplos do mundo real) para reduzir os dados de transação gerados pelos usuários ao interagirem com seus contratos inteligentes.
  5. Você deseja usar ferramentas e infraestrutura EVM ao construir dapps. A maioria dos rollups é compatível com EVM e usa as mesmas ferramentas, software de cliente e APIs de nó que a Ethereum.

Quando usar uma sidechain:

  1. Seus usuários desejam pagar as taxas mais baixas possíveis para transações.
  2. Seus usuários desejam que as transações sejam processadas rapidamente, especialmente ao transferir fundos.
  3. Seus usuários podem tolerar suposições de confiança aumentadas e garantias de segurança mais baixas.
  4. Você (ou seus usuários) não considera um relacionamento próximo com o ecossistema da cadeia principal uma prioridade máxima.
  5. Você pode aprender a usar um novo conjunto de linguagens de programação, ferramentas e infraestrutura para construir dapps (se estiver usando uma sidechain que não seja compatível com EVM).

Quando usar uma sidechain e um rollup:

  1. Seu projeto já estabeleceu fortes efeitos de rede em uma blockchain e está pronto para expandir para múltiplos ecossistemas simultaneamente (por exemplo, para aproveitar a liquidez).
  2. Você deseja atender a diferentes tipos de usuários e evitar alienar um lado do mercado.
  3. Seu projeto tem recursos suficientes para lidar com a expansão entre cadeias. Isso potencialmente significaria ter equipes diferentes responsáveis por implantar seu dapp em diferentes plataformas de blockchain.

Construa em rollups e sidechains com o Infura

Se você está construindo dapps em uma sidechain ou prefere um rollup, o Infura fornece a infraestrutura de que você precisa para criar aplicativos confiáveis e altamente eficientes. O conjunto de APIs de nó blockchain do Infura oferece acesso a sidechains (NEAR, Avalanche, Celo, Polygon, Palm) e rollups (Optimism, Arbitrum, StarkNet e Aurora).

Ainda não consegue decidir qual solução de escalabilidade usar depois de ler este guia? "How To Choose The Right Blockchain For Your Next Dapp" (Como Escolher a Blockchain Certa Para o Seu Próximo Dapp) oferece um quadro de comparação abrangente para selecionar a melhor blockchain para o seu projeto Web3. Você também pode entrar em contato com a equipe do Infura se precisar de ajuda para tomar decisões sobre a infraestrutura do seu projeto Web3.

Continue construindo!


Artigo escrito por Emmanuel Awosika. Traduzido por Marcelo Panegali.

Top comments (0)