Os desafios da escalabilidade do Blockchain

Blockchains podem escalar e manter seu caráter distribuído?

Image credits: shuttestock

Introdução

Blockchains podem ser programados para registrar, verificar e rastrear qualquer coisa com valor, desde registros médicos, mercadorias em cadeias de suprimentos a títulos de propriedade.

A arquitetura blockchain é única, pois revoluciona a maneira como interagimos uns com os outros. E ao contrário do antigo método contábil, sua estrutura foi projetada para ser descentralizada e distribuída em uma extensa rede de computadores. Mas os blockchains atuais são realmente descentralizados, distribuídos? E se efetivamente existir blockchains decentralizados, eles são escaláveis?

O que é decentralização?

Protocolos de consenso [1] substituindo uma autoridade central

Um dos aspectos mais empolgantes da arquitetura Blockchain é que ela foi projetada para ser inteiramente decentralizada, distribuída.

Devido à natureza distribuída, não existe um ponto único de falha, não existe uma entidade única no controle da rede. Ora, isto torna o sistema mais justo e consideravelmente mais seguro. A maneira pela qual os dados são registrados em um blockchain resume, portanto, uma de suas qualidades mais revolucionárias: a descentralização [2]. Em vez de depender de uma autoridade central para validar transações entre os usuários do sistema, o blockchain utiliza protocolos de consenso para validar transações e registrar dados de uma maneira incorruptível [3].

A decentralização e o custo das transações em um blockchain

Como o sistema não depende de uma autoridade central, as taxas normalmente cobradas por essas organizações não são mais um fator. Portanto, as transações no blockchain são mais baratas, já que os únicos custos incorridos pelas partes envolvidas são as taxas nominais usadas para recompensar o minerador ou os participantes que executam um nó na rede.

Eventual “centralização” minaria o propósito do Blockchain

Como garantir segurança, neutralidade política e autenticidade?

Blockchains não efetivamente decentralizados minariam o propósito para os quais foram concebidos. Isto porque, tornaria o protocolo de consenso ineficiente. É a decentralização que garante a segurança, neutralidade política e autenticidade em um blockchain.

O mecanismo de consenso decentralizado traz benefícios, mas hoje prejudica a escalabilidade

Qualquer node (nó, em português), computador que integra uma rede blockchain, que participe de uma rede com protocolo de consenso público deve processar “todas” as transações. Isso requer um aumento constante do poder computacional e acarreta o risco de centralização.

O grande obstáculo ao potencial inovador dos blockchains é a escalabilidade

O que é escalabilidade?

Quando falamos de escalabilidade, estamos necessariamente pensando em como criar uma rede, com número crescente de transações, que seja capaz de suportar o aumento de demanda.

Image credits: shuttestock

O escalonamento do blockchain é um desafio a ser vencido e tem sido uma área ativa de pesquisa há vários anos. Se você tem acompanhado a comunidade Bitcoin nos últimos anos, já deve ter ouvido falar de duas soluções de escala específicas para o Blockchain Bitcoin, conhecidas como SegWit e o aumento do tamanho do bloco de 2 megabytes (MB).

Ambas as soluções visam resolver o problema específico do Blockchain Bitcoin: seu tamanho rígido de 1 megabyte (MB) por bloco, que limita o número de transações processadas por bloco. Atualmente, o Blockchain Bitcoin, apesar de ter um limite teórico de 4.000 transações por segundo, atualmente tem um teto rígido de cerca de 7 transações por segundo para transações pequenas e 3 por segundo para transações mais complexas. Como resultado, o Blockchain Bitcoin vem enfrentando atrasos (às vezes, horas e até dias) no processamento e confirmação de transações por um tempo agora.

Da mesma forma, o Blockchain Ethereum também enfrenta limitações em sua capacidade de escalonar. O limite de gás do Ethereum é um pouco semelhante ao limite de 1 MB do Bitcoin no tamanho de cada bloco, com a diferença de que o limite de gás do Ethereum é dinamicamente definido pelos mineradores, enquanto o limite de tamanho do bloco do Bitcoin é codificado no protocolo. Esse limite de gás para a Ethereum impõe um limite suave na energia computacional da rede por bloco: com o limite atual de 6,7 milhões de gases e a média atual de gás usada por transação padrão de aproximadamente 21K, obtemos aproximadamente 300 transações padrão a cada bloco. O tempo médio de processamento atual é de 20 segundos, o que equivale a aproximadamente 15 transações por segundo (300/20 = 15) na melhor das hipóteses [4]. E isto fica muito menos com transações mais complexas, o que gira em torno de aproximadamente 7 transações por segundo [5]. Se observarmos que o número de transações na rede Ethereum está crescendo a um rítmo considerável, percebemos como isto se torna um belo problema.

Diante disto, vejamos a seguir algumas das soluções propostas que estão sendo discutidas na comunidade para solucionar a escalabilidade, sem prejudicar a decentralização.

Como Blockchains podem alcançar escala e manter seu caráter distribuído?

Para que o blockchain alcance escala com decentralização, duas direções podem ser tomadas. A primeira delas é melhorar seu protocolo.

Melhorando o protocolo blockchain…

Para que o protocolo blockchain seja aprimorado, é preciso um mecanismo que limite o número de participantes necessários à validação de cada transação no blockchain. Logicamente, sem perder a confiança de que essa validação seja confiável.

Como exemplos de soluções que estão sendo construídas neste sentido, podemos citar o SegWit (só para o Bitcoin Blockchain) e o tamanho do bloco de 2 MB (solução só para o Bitcoin Blockchain).

Caminhando pelas Layer2 Solutions

Outro caminho que se tem adotado para possibilitar a escalabilidade do blockchain (sem prejuízo à decentralização nos mecanismos de consenso públicos), é a “Layer2 solutions” (soluções de segunda camada).

Isto é, usar o blockchain como uma âncora confiável, mas para direcionar a maioria das transações para fora da cadeia.

Image credits: shutterstock

Como Layer2 Solutions, podemos citar: off-chain state channels, off-Chain computations (Truebit), Lightning Network, Raiden Network, Sharding, Plasma, Counterfactual, bloXroute, dentre outros. Vejamos um pouco mais a fundo algumas destas soluções.

Image credits: Shuttestock

Os off-chain state channels são essencialmente um mecanismo pelo qual as interações de blockchain que poderiam e normalmente ocorreriam no blockchain, em vez disso, são conduzidas para fora do blockchain. Isso é feito de maneira criptograficamente segura, sem aumentar o risco, proporcionando melhorias significativas no custo e na velocidade.

A Lightning Network é uma rede descentralizada que usa canais de estado por meio de contratos inteligentes para permitir pagamentos instantâneos e escalonáveis em uma rede de participantes. Inicialmente, a Lightning Network foi criada para o Bitcoin, mas agora parece que eles também permitem transações através de blockchains.

Image credits: Shuttestock

Raiden Network é a analogia Ethereum da rede Lightning. A Raiden também utiliza redes de estado fora da cadeia para estender a Ethereum com transações escaláveis e instantâneas.

Plasma foi introduzido muito recentemente e está entre as soluções propostas mais promissoras para computação escalável no blockchain. O plasma é essencialmente uma série de smart contracts que correm em cima de um
blockchain raiz (isto é, o blockchain principal do Ethereum). É uma estrutura escalável que permite o processar de uma quantidade significativa de aplicativos financeiros decentralizados no blockchain.

A Truebit é um exemplo de off-chain computations, e é uma solução que usa cálculos fora da cadeia para permitir
transações escaláveis entre os contratos inteligentes do blockchain Ethereum. Essencialmente, o TrueBit usa uma camada fora do blockchain para fazer o trabalho pesado. Em outras palavras, é um sistema que executa verificadamente cálculos off-chain (fora da rede). Do contrário, tais cálculos seriam proibitivamente custosos se fossem executados na rede.

O “help” das soluções indiretas

Ainda, há outras soluções indiretas, que embora não pretendam solucionar a escalabilidade diretamente, ajudam a resolver indiretamente alguns problemas de escalabilidade. Como exemplo, podemos citar: proof of stake [6], blockchain rent [7], armazenamento decentralizado, dentre outros.

Mas como a proof-of-stake [8] pode ajudar na escalabilidade? Dividindo a responsabilidade de validação entre muitos nós [9] para que cada nó não precise processa todas as transações que ocorrem no blockchain. Outra razão pela qual o proof-of-stakeajuda indiretamente a escalabilidade no blockchain ethereum é porque os validadores ganham apenas taxas de transação. Diferentemente da prova-de-trabalho que emite novos tokens como recompensa aos mineradores que validam os blocos.

De outro lado, o blockchain rent é uma solução específica do Ethereum que visa reduzir a quantidade de dados armazenados na rede para ajudar a acelerar os tempos das transações [10]. O blockchain rent propõe definir o custo de armazenamento como ‘bytes x tempo’. Dessa forma, há um incentivo embutido no protocolo para manter a rede mais leve e reduzir os tempos de transação.

Por fim, outra solução indireta para a escalabilidade é usar um serviço de armazenamento descentralizado como o Swarm, para manter a rede mais leve. Swarm [11] é um protocolo de compartilhamento de arquivos peer-to-peer para Ethereum que permite armazenar código de aplicativo e dados do blockchain principal em nós de swarm. Estes são conectados ao Ethereum, e em vez de armazenar todos os dados transacionados no blockchain, armazenam apenas aqueles requisitados com mais frequência. Os demais dados são armazenados na “nuvem” via Swarm.

Uma perspectiva promissora

Embora nenhum dos caminhos acima torne os blockchains escaláveis hoje, tais soluções tem ajudado a melhorar a escalabilidade dia-a-dia. E certamente, nos traz uma perspectiva promissora para que blockchains tornem-se escaláveis num futuro próximo.

E com isto, alcançamos o objetivo deste artigo. Cuidamos da importância da decentralização e exploramos um pouco do que têm sido desenvolvido para solucionar a escalabilidade.

Sugestões e comentários são sempre bem-vindos. Nos encontramos em breve!

Este artigo foi publicado originalmente no portal Criptomoedas Fácil.

— — — — — — — — — — — — — — — — — — — — — — –

[1] Um mecanismo ou protocolo de consenso é um conjunto de regras que descreve como funciona a comunicação e transmissão de dados entre dispositivos eletrônicos. O consenso é alcançado quando dispositivos suficientes concordam sobre o que é verdadeiro e o que deve ser registrado no blockchain. Portanto, os protocolos de consenso são regras para que dispositivos espalhados pelo mundo cheguem a um acordo. É isto que permite uma rede blockchain funcionar sem ser corrompida.

[2] Descentralizado significa que não existe um único ponto de falha, não existe uma entidade única no controle da rede. O termo distribuído refere-se ao blockchain em si. Relaciona-se como cada nó que está sincronizado com o blockchain possui uma cópia do ledger.

[3] Revoredo, Tatiana. In: Cryptocurrencies in the International Scenario, Amazon, 2018.

[4] Observe que essas limitações não existem para blockchains privados. Um blockchain privado pode garantir que cada computador da seja de alta qualidade com rápida conexão à internet. Atualmente, escalar o blockchain exigiria que adicionássemos mais computação a cada nó para que a rede ficasse mais rápida. Como as redes gerenciadas de forma privada controlam todos os nós da rede, elas podem fazer isso [Kasireddy, Preeti. In: Blockchains don´t scale not today at least, but there is hope, Medium, 2017).

[5] https://etherscan.io/chart/gaslimit

[6] https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQs#what-is-proof-of-stake

[7] https://github.com/ethereum/EIPs/issues/35

[8] O proof of stake é um dos protocolos de consenso que dá a segurança ao blockchain, impedindo a duplicação. Em blockchains tradicionais baseados em proof-of-work, os mineradores mantêm a integridade dos dados de blockchain. Ao competirem para resolver enigmas matemáticos de computação em troca de recompensas, eles validam as transações com sua potência computacional. Logo, quanto maior a força computacional dos mineradores, maior sua capacidade de influenciar a rede. Já no proof-of-stake, as partes interessadas votam com suas criptomoedas, em vez de usar seu poder computacional.

[9] dispositivos computacionais que integram a rede blockchain

[10] No Ethereum, os usuários pagam por etapas computacionais, memória, logs de transação e armazenamento permanente. Enquanto a maioria destes recursos são pagos de forma devidamente incentivada, o armazenamento não é. No sistema atual, os usuários pagam apenas por bytes de armazenamento. No entanto, fato é que o armazenamento difere dos outros recursos porque ele é armazenado permanentemente nos blocos.

[11] https://ethereum.stackexchange.com/questions/375/what-is-swarm-and-what-is-it-used-for