Introdução
Escalabilidade refere-se amplamente à capacidade de um sistema crescer para acomodar a demanda crescente. Na computação, você pode aumentar o desempenho de sua máquina atualizando seu hardware para que seja mais rápido executar determinadas tarefas. Quando falamos de escalabilidade em blockchains, referimo-nos ao aumento da sua capacidade de lidar com mais transações.
Protocolos como o Bitcoin têm muitos pontos fortes, mas a escalabilidade não é um deles. Se o Bitcoin fosse executado em um banco de dados de propriedade central, seria relativamente fácil para um administrador aumentar a velocidade e o rendimento. Mas as propostas de valor do Bitcoin (ou seja, resistência à censura) exigem que muitos participantes sincronizem uma cópia do blockchain.
O problema de escalabilidade do blockchain
Executar um nó Bitcoin é relativamente barato e até mesmo dispositivos simples podem fazê-lo. Mas como os milhares de nós precisam estar atualizados uns com os outros, existem certas limitações em sua capacidade.
Os limites são colocados no número de transações que podem ser processadas na cadeia, de modo a não permitir que o banco de dados cresça para tamanhos difíceis de manejar. Caso se torne muito grande muito rapidamente, os nós não conseguirão acompanhar. Além disso, se os blocos forem muito grandes, eles não poderão ser retransmitidos rapidamente pela rede.
Como resultado, nos encontramos em uma espécie de gargalo. Um blockchain pode ser visto como um serviço de trem que parte em intervalos definidos. Os assentos em cada vagão são limitados e, para obter a passagem, os viajantes devem dar lance para garantir um lugar. Se todos tentarem entrar no trem ao mesmo tempo, o preço será alto. Da mesma forma, uma rede obstruída com transações pendentes exigirá que os usuários paguem taxas mais altas para verem suas transações incluídas em tempo hábil.
Uma solução seria aumentar as carruagens. Isso significaria mais assentos, maior produtividade e preços de ingressos mais baratos. Mas não há garantia de que os assentos não serão preenchidos como antes. Os vagões não podem ser ampliados perpetuamente, assim como os blocos ou limites de gás dos blocos não podem escalar infinitamente. Este último torna mais caro a permanência dos nós na rede, pois eles precisarão de hardware mais caro para permanecerem sincronizados.
O criador do Ethereum, Vitalik Buterin, cunhou o Trilema de Escalabilidade para descrever o desafio enfrentado pelos blockchains. Ele teoriza que os protocolos devem fazer compromissos entre escalabilidade, segurança e descentralização. Estes estão um pouco em desacordo entre si – ao concentrar-se demasiado em duas das propriedades, a terceira será pobre.
Por esta razão, muitos veem a escalabilidade como algo a ser alcançado fora da cadeia, enquanto a segurança e a descentralização devem ser maximizadas na própria cadeia de blocos.
O que são soluções de escalonamento fora da cadeia?
O escalonamento fora da cadeia refere-se a abordagens que permitem que as transações sejam executadas sem sobrecarregar o blockchain. Os protocolos que se conectam à cadeia permitem aos usuários enviar e receber fundos, sem que as transações apareçam na cadeia principal. Iremos mergulhar em dois dos avanços mais notáveis nesta frente: sidechains e canais de pagamento.
Uma introdução às cadeias laterais
O que é uma cadeia lateral?
Uma sidechain é uma blockchain separada. No entanto, não é uma plataforma autônoma, pois está atrelada de alguma forma à cadeia principal. A cadeia principal e a cadeia lateral são interoperáveis, o que significa que os ativos podem fluir livremente de uma para outra.
Existem várias maneiras de garantir que os fundos possam ser transferidos. Em alguns casos, os ativos são transferidos da cadeia principal sendo depositados num endereço especial. Eles não são realmente enviados – em vez disso, são bloqueados no endereço e um valor correspondente é emitido na cadeia lateral. Uma opção mais simples (embora centralizada) é enviar fundos para um custodiante, que troca o depósito por fundos na cadeia lateral.
Como funciona uma cadeia lateral?
Suponha que nossa amiga Alice tenha cinco bitcoins. Ela quer trocá-los por cinco unidades equivalentes em uma cadeia lateral de Bitcoin – vamos chamá-los de sidecoins. A cadeia lateral em questão utiliza uma indexação bidirecional, o que significa que os utilizadores podem transferir os seus ativos da cadeia principal para a cadeia lateral e vice-versa.
Lembre-se de que a sidechain é uma blockchain separada. Portanto, terá diferentes blocos, nós e mecanismos de validação. Para obter suas sidecoins, Alice enviaria cinco bitcoins para outro endereço. Pode ser propriedade de alguém que creditará cinco sidecoins em seu endereço de sidechain assim que receber os bitcoins. Alternativamente, pode ter algum tipo de configuração de confiança minimizada, onde os sidecoins são creditados automaticamente após o software detectar um pagamento.
Alice agora converteu suas moedas em sidecoins, mas ela sempre pode reverter o processo para recuperar seus bitcoins. Agora que ela entrou na cadeia lateral, ela está livre para realizar transações nesta blockchain separada. Ela pode enviar sidecoins ou recebê-las de outras pessoas, assim como faria na cadeia principal.
Ela poderia, por exemplo, pagar a Bob uma moeda lateral por um moletom da Binance. Quando ela quiser retornar ao Bitcoin, ela poderá enviar seus quatro sidecoins restantes para um endereço especial. Após a confirmação da transação, quatro bitcoins seriam desbloqueados e entregues em um endereço que ela controla na cadeia principal.
Por que as cadeias laterais são usadas?
Você pode se perguntar qual é o objetivo disso. Por que Alice não usa apenas o blockchain Bitcoin?
A resposta é que a cadeia lateral pode ser capaz de fazer coisas que o Bitcoin não pode fazer. Blockchains são sistemas de trade-offs cuidadosamente projetados. Embora o Bitcoin seja a criptomoeda mais segura e descentralizada, não é o melhor em termos de rendimento. Embora as transações Bitcoin sejam mais rápidas do que os métodos convencionais, ainda são relativamente lentas quando comparadas a outros sistemas blockchain. Os blocos são minerados a cada dez minutos e as taxas podem aumentar significativamente quando a rede está congestionada.
É certo que provavelmente não há necessidade deste nível de segurança para pequenos pagamentos diários. Se Alice estiver pagando por um café, ela não vai ficar esperando a confirmação da transação. Ela estaria atrasando a fila e sua bebida estaria fria quando fosse entregue.
Sidechains não estão sujeitos às mesmas regras. Na verdade, eles nem precisam usar Prova de Trabalho para funcionar. Você pode usar qualquer mecanismo de consenso, confiar em um único validador ou ajustar qualquer número de parâmetros. Você poderia adicionar atualizações que não existem na cadeia principal, produzir blocos maiores e impor liquidações rápidas.
Curiosamente, as cadeias laterais podem até ter bugs críticos sem afetar a cadeia subjacente. Isso permite que sejam usados como plataformas de experimentação e de implementação de recursos que, de outra forma, exigiriam consenso da maioria da rede.
Desde que os usuários estejam satisfeitos com as compensações, as cadeias laterais podem ser um passo fundamental para um dimensionamento eficaz. Não há exigência de que os nós da cadeia principal armazenem todas as transações da cadeia lateral. Alice poderia entrar na sidechain com uma única transação de Bitcoin, realizar centenas de transações de sidecoin e então sair da sidechain. No que diz respeito ao blockchain do Bitcoin, ela realizou apenas duas – uma para entrar e outra para sair.
O Plasma da Ethereum é semelhante, mas tem algumas diferenças importantes. Leia mais sobre isso: O que é Ethereum Plasma?
Uma introdução aos canais de pagamento
O que é um canal de pagamento?
Os canais de pagamento têm o mesmo propósito que as cadeias laterais no que diz respeito à escalabilidade, mas são fundamentalmente muito diferentes. Assim como as cadeias laterais, elas empurram as transações para fora da cadeia principal para evitar que a blockchain fique inchada. Ao contrário das cadeias laterais, no entanto, elas não requerem 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 no blockchain. Isso é feito usando um acordo imposto por software entre dois participantes.
Como funciona um canal de pagamento?
Em modelos como a popular Lightning Network, duas partes primeiro depositariam moedas em um endereço de propriedade conjunta. Este é um endereço com múltiplas assinaturas, que requer duas assinaturas para que os fundos sejam gastos. Portanto, se Alice e Bob criassem tal endereço, os fundos só poderiam ser movimentados com o consentimento de ambos.
Digamos que cada um deles deposite 10 BTC em um endereço que agora contém 20 BTC. Seria fácil para eles manter um balanço que começasse dizendo que Alice e Bob têm 10 BTC cada. Se Alice quisesse dar uma moeda a Bob, eles poderiam atualizá-la para que Alice tivesse 9 BTC, Bob tivesse 11 BTC. Eles não teriam que publicar no blockchain enquanto continuassem a atualizar esses saldos.
Quando chegar a hora, digamos que Alice tenha 5 BTC e Bob tenha 15 BTC. Eles poderiam então criar uma transação que enviasse esses saldos para endereços de propriedade das partes, assiná-la e transmiti-la.
Alice e Bob poderiam ter registrado dez, cem ou mil transações em seus balanços. Mas no que diz respeito ao blockchain, eles realizaram apenas duas operações na cadeia: uma para a transação de financiamento inicial e outra para realocar saldos quando terminarem. Além dessas duas, todas as outras transações são gratuitas e quase instantâneas porque ocorrem fora da rede. Não há taxa de mineração a pagar e nenhuma confirmação de bloco a ser aguardada.
É claro que o exemplo discutido acima exige a cooperação de ambas as partes, o que não é uma situação ideal para estranhos. No entanto, mecanismos especiais podem ser usados para punir qualquer tentativa de trapaça, para que as partes possam interagir umas com as outras com segurança e sem confiança.
Roteamento de pagamento
Evidentemente, os canais de pagamento são convenientes para duas partes que antecipam um elevado volume de transações. Mas fica melhor. Uma rede desses canais pode ser desenvolvida, o que significa que Alice poderia pagar uma parte à qual ela não está diretamente conectada. Se Bob tiver um canal aberto com Carol, Alice poderá pagá-la, desde que haja capacidade suficiente. Ela transferirá os fundos para o lado do canal de Bob, que, por sua vez, os transferirá para o lado de Carol. Se Carol estiver conectada a outro participante, Dan, a mesma coisa pode ser feita.
Essa rede evolui para uma topologia distribuída onde todos se conectam a vários pares. Freqüentemente, haverá várias rotas para um destino e os usuários poderão escolher a mais eficaz.
Pensamentos finais
Discutimos duas abordagens de escalabilidade que permitem que as transações sejam feitas sem sobrecarregar o blockchain subjacente. Tanto as cadeias laterais quanto a tecnologia de canais de pagamento ainda não amadureceram, mas estão sendo cada vez mais aproveitadas por usuários que desejam contornar as deficiências das transações da camada base.
À medida que o tempo passa e mais usuários ingressam na rede, é importante que a descentralização seja mantida. Isto só é possível através da imposição de limites ao crescimento da blockchain para que novos nós possam aderir facilmente. Os proponentes de soluções de escalabilidade fora da cadeia acreditam que, com o tempo, a cadeia principal só será usada para liquidar transações de alto valor ou para vincular/desativar cadeias laterais e abrir/fechar canais.