Escalabilidade como o caminho da Cardano para a adoção global

Escalabilidade como o caminho da Cardano para a adoção global

Você quer ir de A a B. Você pode comprar uma passagem cara e viajar por uma hora, ou comprar uma mais barata e chegar lá em 2 minutos. As pessoas se comportam racionalmente e a maioria escolherá a opção mais acessível e mais rápida. Portanto, eles nunca estarão dispostos a pagar por transações caras na blockchain.

Redes blockchain públicas e descentralizadas geralmente precisam escalar melhor. Isso significa que elas não conseguem processar todas as transações recebidas do usuário em tempo hábil. Pense nisso como um ônibus que circula regularmente a cada 10 minutos a partir de uma parada. Apenas 100 pessoas cabem no ônibus, mas há regularmente 200 ou até 300 pessoas no ponto de ônibus. As pessoas precisam pegar o ônibus, então começam a oferecer uma tarifa mais alta. Algumas pessoas ainda estão dispostas a pagar A tarifa sobe de 0,50 USD para 50 USD. A competição vai surgir. Um trem moderno de alta velocidade que opera a cada 30 segundos, a tarifa é de apenas 0,10 USD e pode acomodar 1.000 pessoas. Em uma semana, ninguém usará o ônibus.

Na terminologia blockchain, diríamos que um trem de alta velocidade escala melhor que um ônibus. O número de transações processadas por um sistema por segundo é referido como taxa de transferência. Pense nisso como o número de pessoas que o ônibus leva a cada segundo. No nosso caso, são 0,16 pessoas, porque dividimos 100 pessoas por 600 segundos.

A Cardano tem ambições de se tornar um sistema operacional financeiro e social global. Para fazer isso, ela precisa escalar melhor. Muito melhor. Neste artigo, discutimos por que é difícil obter escalabilidade na primeira camada e por que precisamos da segunda camada. Falaremos um pouco sobre Hydra, um pouco sobre rollups e um pouco sobre Milkomeda. Lembre-se de que uma única transação Cardano pode conter vários ativos e vários destinatários. Não vamos repetir muito isso no artigo, mas uma única transação Cardano pode ser igual a 10 ou até 100 transações em outra rede blockchain.

TLDR

Em todo o mundo, mais de 16.000 transações financeiras digitais ocorrem por segundo. É difícil para blockchains descentralizadas se aproximarem de uma taxa de transferência tão alta. Canais de estado, sidechains e rollups são todas as segundas camadas que usaremos no ecossistema Cardano em um futuro próximo.

Por que a blockchain não escala bem?

Blockchain é uma rede distribuída composta por nós. Um dos requisitos para o blockchain é a descentralização, o que basicamente significa ser capaz de executar seu próprio nó completo de forma relativamente barata. Os nós têm 4 gargalos: poder de processamento, memória, armazenamento e largura de banda (a quantidade máxima de dados que um nó pode baixar ou enviar em um determinado momento).

Os nós da rede Cardano se comunicam entre si e encaminham todas as transações que os usuários enviam. Cada nó valida a transação. Isso pode exigir a validação do script Plutus, que requer mais poder computacional. Todas as transações recebidas devem ser armazenadas temporariamente. As transações válidas que entram no bloco devem ser armazenadas permanentemente.

Atualmente, a Cardano processa cerca de 50.000 transações por 24 horas. Muitas transações contêm vários destinatários, então o Cardano é usado por cerca de 1 a 5 pessoas a cada segundo.

Agora imagine que tipo de computador você teria se 1000x mais pessoas estivessem usando a Cardano. Ou 10.000 vezes mais pessoas. Os requisitos de poder de computação, memória, armazenamento e largura de banda seriam extremos. Somente empreendedores poderiam executar um nó completo, o que levaria à centralização. A ideia de “Não confie, verifique” seria inatingível.

De acordo com um relatório fornecido pela Capgemini a BNP Paribas em 2021, houve 522 bilhões de transações digitais financeiras em todo o mundo em 2020. Isso equivale a 1,4 bilhão por dia, ou aproximadamente 16.000 transações por segundo. O número real pode ser ainda maior porque a equipe não teve acesso aos dados de todas as empresas.

Maiores demandas no desempenho do computador levam à centralização da rede. Para escalar melhor uma rede descentralizada, a equipe enfrenta um grande desafio tecnológico.

Para liquidar uma transação, os nós devem primeiro concordar com sua validade. Se o sistema tiver um grande número de nós, esse acordo pode levar algum tempo. Maior descentralização torna mais difícil o acordo entre os nós. Cada nó individual precisa consumir seus próprios recursos de computação para obter, verificar e armazenar as transações. Isso é desejável do ponto de vista da descentralização, mas muito ineficiente do ponto de vista da escalabilidade. Claramente, se o ecossistema (blockchain e segundas camadas) escalar melhor, os nós não poderão verificar todas as transações entre os usuários.

A tarefa das segundas camadas é aliviar os gargalos das primeiras camadas. O objetivo é paralelizar o processamento de transações em diferentes camadas, economizando assim os recursos computacionais da primeira camada. Sempre deve haver algum mecanismo para transferir ativos da primeira camada para a segunda e vice-versa.

A segunda camada possui seus próprios nós (recursos do computador) e suas próprias regras para obter consenso entre os usuários. As suposições de descentralização e segurança podem ser significativamente diferentes da primeira camada. Algumas pessoas acreditam erroneamente que, se uma segunda camada for criada em cima de uma blockchain específica, ela automaticamente herdará suas propriedades. Este não é o caso. O objetivo das segundas camadas é assumir a responsabilidade pelos ativos da primeira camada. A primeira camada está envolvida apenas na transferência de ativos entre as camadas, mas não valida as transações e a execução de contratos inteligentes que ocorrem na segunda camada. As segundas camadas geralmente são uma infraestrutura completamente diferente, incluindo nós (que podem ter bugs), carteiras.

Observe que verificar transações é trabalhar com dados. Para verificar os dados, eles devem estar disponíveis. Na prática, isso significa que o nó deve baixá-lo ou mandar alguém enviá-lo (largura de banda) e o nó deve armazená-lo (memória, armazenamento) e validá-lo (poder de processamento). O problema é que um computador normal não consegue lidar com um grande volume de dados. As pessoas estão reclamando que a blockchain Cardano é muito grande e está crescendo rapidamente. As segundas camadas reduzem os requisitos de recursos computacionais das primeiras camadas, pois assume-se que os dados (transações) originados na segunda camada serão armazenados em outro local, ou simplesmente deletados após algum tempo.

Você provavelmente sabe que Cardano é a primeira camada. As segundas camadas são ou serão Milkomeda, Hydra, Midnight e outras. Vamos dar uma olhada nas diferenças entre as soluções. Existem 3 conceitos básicos das segundas camadas: sidechains, canais de estado e rollups. Não vamos nos alongar muito sobre as diferenças entre os conceitos. Vamos nos concentrar em como eles funcionam em princípio.

Hidra

Hydra é uma solução de canal de estado.

Hydra é usado da seguinte maneira. Vários usuários concordam (off-chain) em abrir o chamado Hydra Head juntos. Isso basicamente significa que eles usam um contrato inteligente que transfere uma quantidade escolhida de seus ativos da blockchain Cardano para a Hydra. Uma transação on-chain é necessária para transferir o estado de Cardano para Hydra. Após a transferência, os usuários compartilham o estado off-chain entre si. Eles podem fazer qualquer número de transações de forma rápida e barata. As alterações finais são transferidas de volta para o blockchain Cardano por meio de uma transação na cadeia.

Hydra é semelhante à Lightning Network (LN). O Hydra Head pode ser aberto por vários usuários, enquanto o LN permitirá que um canal seja aberto apenas entre 2 usuários. A Hydra permitirá que os usuários usem tokens e também possam executar contratos inteligentes.

O Hydra é útil quando vários usuários desejam enviar várias transações entre si. Cada usuário deve usar um nó Hydra e estar online o tempo todo para garantir que nenhuma tentativa seja feita para fechar o Hydra Head prematuramente. Nesse caso, é necessário verificar o estado final e contestá-lo se necessário (em caso de tentativa de fraude).

O Hydra é útil quando os participantes sabem com antecedência quando o Hydra Head estará fechado.

A Hydra possui seu próprio mecanismo de consenso que ocorre apenas entre os participantes. O blockchain Cardano não sabe nada sobre quais transações estão ocorrendo no Hydra Head.

Pode-se dizer que as transações do Hydra Head são privadas. No entanto, o estado final é gravado no blockchain.

O trabalho futuro será feito no Hydra Tail para permitir que os usuários fiquem temporariamente offline. A Hydra operará a partir de um telefone celular. Outra melhoria planejada será a capacidade de conectar Hydra Heads entre si. A interconexão dos Hydra Heads abre caminho para redes maiores de participantes, transformando efetivamente os Heads locais em uma rede global.

Milkomeda

Milkomeda C1 é uma solução de sidechain compatível com EVM.

Milkomeda permite a execução de aplicativos Ethereum no ecossistema Cardano. Para usar o Milkomeda, você precisa de uma carteira compatível com EVM, como a Metamask. Você conecta a carteira à sidechain Milkomeda. Então você precisa enviar ativos da rede Cardano para Milkomeda por meio de uma ponte. O ADA se tornará MilkADA (uma espécie de ADA embrulhado). MilkADA é usado para pagar taxas.

Sidechain geralmente é uma rede separada com seus próprios validadores. No caso da Milkomeda, os validadores são geridos por um grupo de Cardano SPOs.

A equipe dcSpark criou uma inovação chamada contratos inteligentes embrulhados que permite aos usuários permanecer na rede Cardano, mas usar contratos inteligentes na cadeia lateral. Tudo o que os usuários precisam fazer é enviar uma única transação Cardano com os dados e ativos necessários para interagir com o dApp sidechain. A camada de ponte da cadeia lateral cuida do resto. Essa solução específica realmente usa os recursos dos nós Cardano, mas pode economizar energia de computação.

Normalmente, sidechains são usadas para que os ativos sejam transferidos pela ponte e todas as transações e execução de contratos inteligentes ocorram na segunda camada. Isso economiza essencialmente todos os recursos computacionais da primeira camada (semelhante às soluções de canal de estado). Os usuários não são forçados a executar um nó de Camada 2 e não precisam estar online como no caso da solução de canal de estado. As sidechains geralmente têm seu próprio registro público no qual as transações são rastreáveis.

Em geral, uma sidechain pode enfrentar problemas semelhantes aos de uma blockchain se for descentralizada. No entanto, isso não é o que os usuários esperam. O objetivo de uma sidechain geralmente é escalar melhor ao custo de menos descentralização.

Rollups

As equipes IOG e dcSpark estão trabalhando em rollups para Cardano. Rollups podem economizar poder de processamento e memória da primeira camada. Até certo ponto, o mesmo acontece com o armazenamento e a largura de banda, mas seu uso pode variar de caso para caso.

Rollups são baseados principalmente em um contrato inteligente que permite aos usuários transferir ativos do blockchain para uma rede rollup. Em um rollup, você pode fazer basicamente qualquer coisa com ativos. Um rollup pode ser apenas uma rede de transação rápida, pode executar contratos inteligentes em qualquer máquina virtual ou pode ser um aplicativo.

Rollup mantém o estado da rede por meio de uma estrutura de dados de árvore Merkle especial. Pense nisso como uma pirâmide construída de tijolos, onde cada tijolo individual representa as informações (saldo do usuário, transações, etc). Um hash (string curta) pode ser criado a partir de cada informação. Um hash também pode ser criado a partir de duas informações. Para cada dois hashes da camada inferior da pirâmide, um hash é criado na camada superior. Se procedermos desta forma em direção ao topo da pirâmide, é criado um único hash, a raiz Merke (raiz do estado), que representa todos os dados na estrutura da árvore.

É possível provar criptograficamente que parte do estado existe dentro da árvore Merkle, desde que você tenha a parte do estado, alguns nós de ramificação (tijolos em nossa analogia) e a raiz Merkle.

Rollup envia continuamente um novo estado (raiz Merkle) para o contrato inteligente da primeira camada. Blockchain é usado para escrever o estado de rollup, que não pode ser alterado. A blockchain também serve como uma camada de disponibilidade de dados, pois o novo estado do rollup é distribuído junto com cada novo bloco.

Rollups tendem a ter problemas de disponibilidade de dados. Se o blockchain apenas escrevesse Merkle root, não saberia nada sobre transações, o que é um recurso desejado. No entanto, se o rollup ficasse offline por um longo período de tempo, os fundos ficariam presos, pois sem os dados (ou pelo menos parte dos dados) é impossível provar que o usuário é o proprietário dos fundos.

Existem várias soluções para este problema. O Rollup pode enviar dados para o blockchain junto com o Merkle root. Apenas dados que permitem recriar as alterações feitas na árvore Merkle. A rede blockchain não precisa processar os dados, apenas armazená-los. Os dados podem ser compactados.

Alguns rollups armazenam dados em outras redes dedicadas. Isso economiza armazenamento em nós completos (o tamanho do blockchain cresce mais lentamente). Algumas soluções validam que os dados estão realmente disponíveis em redes externas.

Rollups podem usar criptografia Zero Knowledge (ZK). O ZK permite que um usuário crie uma prova de que concluiu corretamente uma tarefa sem precisar fornecer nenhuma informação sobre a tarefa.

Como o ZK funciona? Imagine que você tem um código secreto para uma porta localizada em um corredor. Você quer provar à outra parte que conhece o código, mas não quer mostrá-lo? Então você caminha pelo corredor e abre a porta. Passar pelo corredor é a prova de que você realmente conhece o código.

O acúmulo de ZK pode criar uma prova de ZK de que assumiu o estado anterior, processou TXs válidos e produziu corretamente uma nova raiz de estado. Um contrato inteligente executado no blockchain pode verificar todas as evidências e rejeitar uma atualização da árvore Merkle se houver uma tentativa de fraude. O rollup ZK não precisa armazenar dados de transação e assinatura no blockchain porque não é possível trapacear.

Assim como nas sidechains, o rollup deve ter sua própria forma de descentralização, gerenciamento de projetos etc. Muitas vezes, o risco é que o contrato inteligente possa ser atualizado por meio de chaves administrativas. Desta forma, a equipe mantém o controle sobre o contrato e, portanto, essencialmente sobre os fundos do usuário. Alguns projetos lidam com isso tornando a nova atualização ativa com um atraso (por exemplo, 2 semanas).

No momento da redação deste artigo, não se sabe até que ponto as equipes estão no desenvolvimento de rollups para Cardano. Nossa suposição é que veremos as primeiras tentativas em 2023. Rollups são usados em muitos projetos, e as primeiras tentativas estão sendo feitas até no Bitcoin, que tem uma programabilidade muito limitada.

Conclusão

Cada segunda camada sempre dependerá da primeira. Portanto, a escalabilidade das primeiras camadas também deve ser significativamente melhorada, caso contrário, o blockchain limitará para sempre o funcionamento das segundas camadas. No caso de soluções de canal de estado, os canais devem ser constantemente abertos e fechados. Alguém calculou que, se todos no planeta estivessem a bordo da Lightning Network, levaria 70 anos. Se as transações na primeira camada forem caras e lentas, muitas pessoas não chegarão à segunda camada e provavelmente nem tentarão. Cardano escalará significativamente melhor na primeira camada graças ao PoS Leios.

Se você usa sidechains e rollups, esteja sempre ciente de quão descentralizadas são as redes e quais são os riscos de usá-las.

Cardano tem uma sidechain em Milkomeda. Hydra Head já foi aberto na rede principal. Esperamos que o primeiro lançamento apareça ainda este ano e seja entregue pela equipe dcSpark. Cada solução individual tem seus próprios pontos fortes e fracos e é adequada para diferentes casos de uso. Todas as soluções têm uma chance de sucesso.

Você gostou deste artigo? Por favor, compartilhe, obrigado!