Escalabilidade da Blockchain - Sidechains e Canais de Pagamento
Página Inicial
Artigos
Escalabilidade da Blockchain - Sidechains e Canais de Pagamento

Escalabilidade da Blockchain - Sidechains e Canais de Pagamento

Avançado
Publicado em Feb 20, 2020Atualizado em Feb 9, 2023
9m

Conteúdo


Introdução

A escalabilidade refere-se, de modo geral, à capacidade de um sistema crescer para acomodar uma demanda crescente. Na computação, você pode aumentar o desempenho da sua máquina melhorando seu hardware, para que a execução de determinadas tarefas sejam mais rápidas. Quando falamos de escalabilidade em blockchains, nos referimos ao aumento da sua capacidade de lidar com mais transações.
Protocolos como o da Bitcoin têm muitos pontos fortes, mas a escalabilidade não é um deles. Se a Bitcoin fosse executada em um banco de dados de centralizado, seria relativamente fácil para um administrador aumentar a velocidade e a taxa de transferência. Mas a proposta da Bitcoin (como a resistência à censura) exige que muitos participantes da rede sincronizem uma cópia da blockchain.


O problema de escalabilidade da blockchain

A execução de um  da Bitcoin é relativamente barata e até dispositivos simples podem fazê-lo. Mas como os milhares de nós precisam permanecer atualizados entre si, existem certas limitações em sua capacidade. 
Limites são estabelecidos no número de transações que podem ser processadas na cadeia (on-chain), para impedir que o banco de dados atinja proporções muito grandes. Se ele se tornar muito grande rapidamente, os nós não conseguirão acompanhar essa expansão. Além disso, se os blocos forem muito grandes, eles não poderão ser retransmitidos rapidamente através da rede.

Dessa forma, nos encontramos em meio a um gargalo. Uma blockchain pode ser vista como o serviço de transporte de um trem, que parte em intervalos definidos. Existe um número limitado de assentos em cada vagão e para obter uma passagem, os viajantes devem fazer lances para garantir um lugar. Se todo mundo estiver tentando pegar o trem ao mesmo tempo, o preço será mais alto. Da mesma forma, uma rede entupida de transações pendentes exigirá que os usuários paguem taxas mais altas para que suas transações sejam incluídas em tempo hábil.

Uma possível solução seria aumentar o tamanho dos vagões. O que resultaria em mais assentos, maior capacidade de transferência e menores preços de passagens. Mas não há garantia de que os assentos não serão todos preenchidos como antes. A capacidade dos vagões não pode ser infinitamente ampliada, assim como blocos e o limite de gás dos blocos não podem ser dimensionados infinitamente. Este último torna a permanência dos nós na rede um processo mais caro, pois eles precisarão de hardwares mais caros para se manter sincronizados.

O criador da Ethereum, Vitalik Buterin, criou o Scalability Trilemma para descrever o desafio enfrentado pelas blockchains. Ele afirma em sua teoria, que os protocolos devem fazer alcançar um equilíbrio entre escalabilidade, segurança e descentralização. Essas propriedades estão, de certa forma, em desequilíbrio – concentrando-se demais em duas delas, a terceira terá um desempenho ruim.

Por esse motivo, muitos vêem a escalabilidade como algo a ser alcançado fora da cadeia (off-chain), enquanto a segurança e a descentralização devem ser maximizadas na própria blockchain.


O que são as soluções de escalabilidade off-chain?

A escalabilidade off-chain se refere a abordagens que permitem que as transações sejam executadas sem sobrecarregar a blockchain. Os protocolos se conectam à cadeia e permitem que os usuários enviem e recebam fundos, sem que as transações apareçam na cadeia principal. Vamos nos aprofundar em dois dos avanços mais importantes: as sidechains (cadeias laterais) e os canais de pagamento.


Uma introdução às sidechains

O que é uma sidechain?

Uma sidechain é uma blockchain separada. No entanto, não é uma plataforma independente, pois está atrelada de alguma forma à cadeia principal. A cadeia principal e a sidechain são interoperáveis, o que significa que os ativos podem fluir livremente de uma para a outra.

Existem várias maneiras de garantir que os fundos possam ser transferidos. Em alguns casos, os ativos são movidos da cadeia principal, sendo depositados em um endereço especial. Eles não são enviados de fato – eles são bloqueados no endereço e um valor correspondente é emitido na sidechain. Uma opção mais direta (embora centralizada) é o envio de fundos para um custodiante, que troca o depósito por fundos na sidechain.


Como funciona uma sidechain?

Suponha que nossa amiga Alice tenha cinco Bitcoins. Ela quer trocá-las por cinco unidades equivalentes em uma sidechain da Bitcoin – vamos chamá-las de sidecoins. A sidechain em questão usa uma atrelagem bidirecional, o que significa que os usuários podem transferir seus ativos da cadeia principal para a sidechain e vice-versa. 

Lembre-se de que a sidechain é uma blockchain separada. Então, ela terá diferentes blocos, nós e mecanismos de validação. Para obter suas sidecoins, Alice envia cinco Bitcoins a outro endereço. Esse endereço pode ser de alguém que irá enviar 5 sidecoins ao endereço sidechain de Alice, depois de receber as Bitcoins. Como alternativa, pode haver algum tipo de configuração que diminua a necessidade de confiança, na qual as sidecoins são creditadas automaticamente após a detecção do pagamento pelo software.



Alice agora converteu suas moedas em sidecoins, mas ela pode sempre reverter o processo para recuperar suas Bitcoins. Agora que ela entrou na sidechain, está livre para fazer transações nesta blockchain separada. Ela pode enviar sidecoins ou recebê-las dos outros, da mesma forma que na cadeia principal.

Ela poderia, por exemplo, pagar a Bob uma sidecoin por um moletom da Binance. Quando ela quiser retornar à Bitcoin, poderá enviar as quatro sidecoins restantes para um endereço especial. Após a transação ser confirmada, quatro bitcoins seriam desbloqueadas e entregues em um endereço de Alice na cadeia principal.


Por que se utilizam as sidechains?

Você deve estar se perguntando qual é o motivo disso. Por que Alice não usa simplesmente a blockchain da Bitcoin?

A resposta é que a sidechain pode ser capaz de coisas que a Bitcoin não pode fazer. Blockchains são sistemas de trade-offs (trocas) cuidadosamente projetados. Embora a Bitcoin seja a criptomoeda mais segura e descentralizada, não é a melhor em termos de taxas de transferência. Embora as transações com Bitcoin sejam mais rápidas que os métodos convencionais, ainda são relativamente lentas quando comparado a outros sistemas blockchain. Os blocos são minerados a cada dez minutos e as taxas podem aumentar significativamente quando a rede está congestionada.

Provavelmente não há necessidade desse nível de segurança para pequenos pagamentos cotidianos. Se Alice estiver pagando por um café, ela não ficará esperando pela confirmação da transação. Ela faria fila e seu café estaria frio quando fosse entregue.

Sidechains não seguem as mesmas regras. Na verdade, elas nem precisam usar Proof of Work para funcionar. Você poderia usar qualquer mecanismo de consenso, confiar em um único validador ou ajustar quaisquer parâmetros. Você poderia adicionar atualizações que não existem na cadeia principal, produzir blocos maiores e aumentar a velocidade do processo.

Curiosamente, as sidechains podem até apresentar erros críticos sem afetar a cadeia subjacente. Isso permite que sejam usadas como plataformas para experimentação e implantação de recursos que, de outra forma, exigiriam consenso da maioria da rede.

Desde que os usuários estejam satisfeitos com as vantagens e desvantagens (trade-offs), as sidechains podem representar um passo importante para um dimensionamento mais eficaz. Não existem requisitos para que os nós da cadeia principal armazenem todas as transações a partir da sidechain. Alice poderia entrar na sidechain com uma única transação de Bitcoin, realizar centenas de transações de sidecoins e depois sair da sidechain. Na perspectiva da blockchain da Bitcoin, ela teria realizado apenas duas transações – uma para entrar e outra para sair.

O protocolo Plasma da Ethereum é similar, mas apresenta algumas diferenças importantes. Leia mais sobre o assunto: O que é o Ethereum Plasma?


Uma introdução aos canais de pagamento

O que é um canal de pagamento?

Os canais de pagamento têm o mesmo objetivo que as sidechains em termos de escalabilidade, mas são fundamentalmente muito diferentes. Como as sidechains, eles deslocam as transações para fora da cadeia principal para impedir que a blockchain fique congestionada. Ao contrário das sidechains, no entanto, eles não precisam de uma blockchain separada para funcionar.

Um canal de pagamento usa um contrato inteligente para permitir que os usuários realizem transações sem publicar suas transações na blockchain. Isso é feito usando um contrato imposto por software entre dois participantes.


Como funciona um canal de pagamento?

Em modelos como o popular Lightning Network, duas partes depositavam moedas em um endereço que possuíam de forma conjunta. Este tipo de endereço multisignature (de múltiplas assinaturas), requer duas assinaturas para que os fundos sejam gastos. Então, se Alice e Bob criaram esse endereço, os fundos só poderiam ser movidos com o consentimento de ambos.

Digamos que cada um deles depositou 10 BTC em um endereço que agora contém 20 BTC. Seria fácil manter uma planilha com o controle do saldo, mostrando que Alice e Bob têm 10 BTC cada. Se Alice quisesse dar uma moeda a Bob, eles poderiam atualizar a planilha para que ela mostrasse que Alice tem 9 BTC e Bob tem 11 BTC. Eles não precisariam publicar na blockchain, pois eles mantêm o controle dos saldos. 



Em determinado momento, digamos que Alice tenha 5 BTC e Bob tenha 15 BTC. Eles poderiam criar uma transação que envia esses saldos aos endereços correspondentes de cada parte, assiná-la e transmiti-la.

Alice e Bob poderiam ter registrado dez, cem ou até mil transações na planilha de controle do saldo. Mas, no que diz respeito à blockchain, eles realizaram apenas duas operações na cadeia (on-chain): uma para a transação inicial e outra para consolidar os saldos atualizados. Além dessas duas, todas as outras transações são gratuitas e quase instantâneas porque ocorrem fora da cadeia (off-chain). Não existe taxa de mineração a ser paga e não há necessidade de aguardar por confirmações de bloco.

Obviamente, o exemplo discutido acima exige que ambas as partes cooperem, o que não é uma situação ideal para usuários que não se conhecem. No entanto, mecanismos especiais podem ser usados para punir qualquer tentativa de trapaça, para que as partes possam interagir com segurança umas com as outras sem a necessidade de confiança. 


Rota de pagamentos

Evidentemente, os canais de pagamento são convenientes para duas partes que preveem um alto volume de transações. Mas não é só isso. Uma rede desses canais pode ser desenvolvida, o que significa que Alice pode pagar a uma parte que não está diretamente conectada a ela. Se Bob tiver um canal aberto com Carol, Alice poderá pagá-la, desde que haja capacidade suficiente. Ela irá transferir fundos para o canal de Bob, que, por sua vez, os mandará para o canal de Carol. Se Carol estiver conectada a outro participante, o mesmo processo pode ser feito. 

Essa rede evolui para uma topologia distribuída na qual todos se conectam a vários peers (pares). Muitas vezes, haverá várias rotas para um mesmo destino e os usuários poderão escolher a rota mais eficaz. 


Considerações finais

Discutimos duas abordagens de escalabilidade que permitem que transações sejam feitas sem sobrecarregar a blockchain correspondente. As sidechains e a tecnologia de canal de pagamento ainda não amadureceram, mas estão sendo cada vez mais utilizadas por usuários que desejam contornar os problemas das transações da camada de base.

À medida que o tempo passa e mais usuários passam a fazer parte da rede, é importante que a descentralização seja mantida. Isso só é possível aplicando limites ao crescimento da blockchain, para que novos nós possam ingressar facilmente. Os defensores de soluções off-chain para os problemas de escalabilidade acreditam que, com o tempo, a cadeia principal será usada apenas para liquidar transações de alto valor ou para acoplar/desacoplar sidechains e abrir/fechar canais.