Para uma cobertura mais ampla deste tópico, consulte Bitcoin.

O Problema de escalabilidade da Bitcoin se refere a algo já conhecido, a limitação que a mesma possui para efetuar um grande número de transações. Esse problema tem ligação direta com as limitações da Blockchain, os blocos bitcoin que a compõem são limitados em tamanho e em frequência. O tempo atual de geração do bloco Bitcoin é de 10 minutos; o tamanho do bloco tem cerca de 1 megabyte, ou seja, a cada dez minutos, um novo bloco é extraído. Em dez minutos (600 segundos), o Bitcoin pode ter uma média de 2.759,12 transações com base em suposições anteriores. Em outras palavras, a Blockchain Bitcoin atualmente pode garantir apenas 4,6 transações por segundo. Em comparação com a Visa por exemplo, fica evidenciado o tamanho do gargalo da Bitcoin, a Visa realiza cerca de 1.700 transações por segundo, em média (com base em um cálculo derivado da reivindicação oficial de mais de 150 milhões de transações por dia).

Analisaremos com mais afinco esses problemas, tal como as alternativas que estão surgindo. Antecedentes

Nota: Antes o software que hoje é conhecido como Bitcoin Core era simplesmente chamado de Bitcoin. Para evitar confusões com Bitcoin atual, vamos utilizar a terminologia Bitcoin Core.

Para elucidarmos melhor como funciona o escalonamento atualmente na Bitcoin, vamos passar por algumas questões técnicas. Como foi definido o tamanho máximo do bloco?

Inicialmente não existia um limite para o tamanho do bloco, porém o código limitou para envio a rede, os blocos com no máximo 32 Mb, o que efetivamente se tornou o teto. Porém, em 2010, Satoshi Nakamoto alterou as regras e o código de mineração do Bitcoin Core para que se aceitasse o tamanho máximo de 1 Mb. No entanto Satoshi não especificou o motivo exato de limitar a esse tamanho; declarações a ele creditadas posteriormente, indicavam que ele apoiava um aumento do tamanho do bloco, porém não houve ações nem datas definidas para esse aumento. Aparentemente o objetivo de limitar não era para manter os requisitos de largura de banda e armazenamento para que a execução de um pagamento fosse mais viável para computadores pessoais, com uma conexão de internet mais acessível, o limite deveria ser aumentado para conseguir atender a mais demandas. Ele sabia que esse tamanho do bloco se tornaria um problema no futuro e precisaria ser discutido. As transações variam em seu tamanho, dependem de alguns fatores, apesar de ter 1 Mb, uma parte disso está reservada para o cabeçalho do bloco. Elas variam no seu tamanho, dependem por exemplo da quantidade de entradas e saídas. Uma maneira simplificada que achamos para calcular a quantidade de transações por segundo (TPS) que o Bitcoin consegue manipular é dividindo o limite do tamanho do bloco pelo tamanho médio esperado das transações, dividido pelo número médio de segundos entre os blocos (600).

Parece haver um acordo geral de que o Bitcoin em 2015 pode lidar com cerca de 3 TPS com o tamanho médio atual das transações.

As estimativas antigas e as novas estimativas colocam o máximo teórico em 7 TPS com as regras atuais de consenso em Bitcoin (incluindo o limite de tamanho de bloco de 1 MB).

O que temos hoje

Um estudo publicado pela Tata Communications em 2018 mostrou que 44% das organizações em sua pesquisa estão adotando blockchain o que é um marco considerável, mas, também faz referência aos problemas universais que surgem da implantação de novas tecnologias. Do nível da arquitetura, o problema não resolvido da escalabilidade está emergindo como um gargalo para a adoção de blockchain e aplicativos práticos.

Como Deloitte Insights coloca , “os sistemas baseados em blockchain são comparativamente lentos. A lenta velocidade de transação da Blockchain é uma grande preocupação para as empresas que dependem de sistemas de processamento de transações herdados de alto desempenho.", ”O mundo recebeu uma amostra dos problemas de escalabilidade em 2017 e 2018: atrasos graves na transferência e altas taxas na rede Bitcoin e o notório Aplicativo Cryptokitties que congestionou a rede blockchain Ethereum (uma rede na qual milhares de aplicativos descentralizados confiam)."

Para escalar uma blockchain, aumentar o tamanho do bloco ou diminuir o tempo do bloco reduzindo a complexidade do hash não é suficiente. Com qualquer um dos métodos, a capacidade de escalar atinge um limite antes de atingir as transações necessárias para competir com empresas como a Visa.

Em comparação, as velocidades de transação do Bitcoin são tremendamente mais baixas. Atualmente, o tamanho do bloco é definido como 1 MB (1.048.576 bytes - embora, por meio do SegWit, esse tamanho possa ser dimensionado para até 4 MB teóricos) e o tamanho médio da transação é de 380.04 bytes (assumindo que cada transação seja de uma carteira para x outras carteiras - portanto uma transação em lote contará como uma transação.) e parece estar aumentando. Portanto, a quantidade média de transações que pode caber em um dos blocos do Bitcoin, atualmente, é calculado como:

Qtd de transações por bloco (TPS) = Tamanho do bloco em bytes/ Tamanho médio esperado das transações/ número médio de segundos entre os blocos. Qtd de transações por bloco (TPS) = 1048576/380,04 = 2.759,12

O tempo atual de geração do bloco Bitcoin é de 10 minutos; ou seja, a cada dez minutos, um novo bloco é extraído. Em dez minutos (600 segundos), o Bitcoin pode ter uma média de 2.759,12 transações com base em suposições anteriores. Em outras palavras, a blockchain Bitcoin atualmente pode garantir apenas 4,6 transações por segundo.

Alternativas Aumentar o tamanho do bloco ou diminuir o tempo de geração do bloco resolve o problema?

Segundo uma análise da TPS que não é do SegWit, ajustar algum desses dois não resolverá o problema. O problema da escalabilidade vem empacotado com proposições de valor de blockchain; portanto, não se pode simplesmente aumentar a escalabilidade alterando parâmetros no blockchain.

A comunidade Bitcoin pode ajustar duas variáveis para tentar aumentar o TPS. Uma variável é o tamanho do bloco (B), atualmente codificado em 1 MB. Idealmente, B deve ser aumentado para aumentar o TPS. A outra variável é o tempo de geração de bloco (TB), que é ajustado alterando a complexidade do quebra-cabeça de hash. Idealmente, a TB deve ser reduzida para aumentar o TPS.

Possíveis cenários

Cenário C0 (Cenário atual) C1 (Aumentando o tamanho do bloco) C2 (Aumentando o TB) C3 (TB = TR) C4 (Aumentando TB e tamanho do bloco) Ajuste (Padrão) (B = 377.5 Mb) (TB = 1,6 s) (TR = 14 s) (B = 2 Mb) A Tamanho do bloco em Bytes (B) 1.048,576 395.808,000 1.048,576 1.048,576 2.097,152 B Tempo de geração de bloco (TB) 600 600 1,5895 14 28 C Tamanho médio de transações (Tx) 380 380 380 380 381 D Média de transações por bloco 2.759,41 1.041.600,00 2.759,41 2.759,41 5.504,34 E Transações por segundo (TPS) 4,6 1736,0 1736,0 197,1 196,6 Tabela 1: os diferentes cenários para aumentar o TPS serão examinados na seção abaixo. Somente no C1 e no C2 o blockchain do Bitcoin pode obter o TPS do tipo Visa, mas ambos os cenários são impossíveis devido ao tempo de propagação da transação, que será discutido nesta seção também.

Cenários 1 e 2 Para passar das 4.4 TPS para 1.736 TPS da Visa, o Bitcoin precisaria escalar seu TPS em 377,5x. Em outras palavras, B precisaria ser aumentado de 1 MB para 377,5 MB (Tabela 1, C1) ou a TB precisaria ser reduzida de dez minutos para 1,6 segundos (Tabela 1, C2). Um terceiro cenário seria ajustar os dois. Qualquer um dos três cenários é inatingível na blockchain devido a um terceiro fator não controlado: o tempo de retransmissão (TR) necessário para transmitir um novo bloco para cada nó na rede Bitcoin.

Atualmente, estima-se que haja 10.198 nós na rede Bitcoin. A transmissão de 1 MB (1.048.576 bytes) pela rede ponto a ponto leva algum tempo. O Instituto de Tecnologia Karlsruhe mede o tempo de propagação de blocos do Bitcoin, e o tempo médio de propagação de blocos relatado em 17 de janeiro de 2019 foi de 13.989,42 milissegundos ou aproximadamente 14 segundos para propagar para 99% da rede. A TB não pode ficar abaixo de 99% de TR (TR99) = 14 porque, se o fizer, um novo bloco será gerado antes que um bloco antigo seja recebido pela maioria dos blocos da rede. Quanto mais a TB chegar ao TR99, mais problemas surgem com bifurcações, blocos órfãos e reorganizações em cadeia e (em casos extremos) vulnerabilidades de segurança, como ataques de gasto duplo.

Cenário 3

Mesmo se TB = TR99 = 14, com um tamanho de bloco de 1 MB, a blockchain do Bitcoin só seria capaz de aumentar sua velocidade para 188 TPS (Tabela 1, C3). Embora essa escala represente um aumento de 188x no TPS, não chega nem perto dos 1.736 TPS que a Visa realiza diariamente; além disso, mergulha nos riscos acima mencionados. A outra variável, B, pode ser reajustada, mas não sem afetar a TR, o que afetaria a TR99 e, portanto, o limite inferior da TB.

Cenário 4

Por exemplo, dobrando o tamanho de B (de 1 MB para 2 MB), o tempo que leva para cada nó da rede baixar um novo bloco, TR, também aumentaria - em aproximadamente 2x; portanto, com 2 MB, TR99 = 28s, o limite inferior da TB também seria 28s. Ao aumentar B por qualquer fator e subsequentemente aumentar TR pelo mesmo fator, o TPS líquido permaneceria o mesmo - nesse caso, em torno de 188 TPS (Tabela 1, C4). Uma solução para reduzir o impacto de B do TR é aumentar a largura de banda entre todos os nós da rede Bitcoin. Infelizmente, por ser uma rede P2P, essa responsabilidade cai no colo de cada ponto na rede.

O surgimento do SegWit Em 2017, a Segregated Witness (SegWit) entrou em vigor em todos os nós do Bitcoin. Nota - Não vou entrar em todos os detalhes do SegWit, mas se você quiser aprender sobre sua história e seu papel no surgimento do hard fork do Bitcoin Cash, dê uma olhada neste artigo:

The Long Road to SegWit: How Bitcoin’s Biggest Protocol Upgrade Became Reality

Ele faz o que o nome parece - segregando a parte testemunha de cada transação dos dados reais da transação. Como ocorreu como um soft fork, foi instituído sem grandes efeitos na rede e no código da blockchain existentes. Devido à maneira como a transação testemunha seria ponderada, os novos blocos de Bitcoin habilitados para SegWit poderiam ser teoricamente aumentados para até 4 MB sem alterar o tamanho do bloco de Bitcoin.

Digo teoricamente porque existem fatores adicionais que contribuem para o tamanho final do bloco SegWit. De fato, se você verificar em estatísticas populares, verá que (pelo menos no momento em que este artigo foi publicado) o tamanho médio do bloco está com 1,2 MB.

No início de 2018, assistimos a um dos maiores (provavelmente ainda o maior) tamanho de bloco gerado, chegando a pesar em torno de 2,1 MB . O soft fork do SegWit ajudou a melhorar o tamanho do bloco sem alterações no código principal, mas ainda não melhora o TPS de maneira escalável.

Ao examinar os quatro cenários anteriores sob um consenso de prova de trabalho, vimos que simplesmente aumentar o tamanho do bloco ou reduzir a complexidade da mineração só poderia levar-nos tão longe. Mesmo uma combinação disso seria limitada devido ao tempo de propagação da transação. Tentar extrair novos blocos mais rapidamente do que os antigos podem se propagar levará a alguns problemas de segurança bastante grandes. Enquanto isso, o SegWit ajudou a aliviar alguns dos problemas do TPS, mas ainda é necessária uma solução mais escalável para obter o TPS semelhante ao Visa.

Parece que colocar qualquer peça no lugar para aumentar o TPS move outra peça fora do lugar em outro lugar no quebra-cabeça do blockchain; independentemente disso, existem projetos e startups trabalhando para obter as respostas TPS necessárias para levar a adoção da blockchain a um estágio escalável.

Abordagens existentes e futuras para resolver a escalabilidade