Problema de escalabilidade do Bitcoin

Origem: Wikipédia, a enciclopédia livre.

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

Number of transactions per month

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 limitacõ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[editar | editar código-fonte]

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[editar | editar código-fonte]

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[editar | editar código-fonte]

Aumentar o tamanho do bloco ou diminuir o tempo de geração do bloco resolve o problema?[editar | editar código-fonte]

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[editar | editar código-fonte]
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[editar | editar código-fonte]

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[editar | editar código-fonte]

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[editar | editar código-fonte]

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[editar | editar código-fonte]

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[editar | editar código-fonte]

Ao procurar a resposta potencial para o problema de escalabilidade, vários outros problemas surgem. Por exemplo, se a resposta for aplicável apenas a uma blockchain em particular, ela se baseia na suposição de que a blockchain em particular será aquela que precisa dessa escalabilidade no futuro; caso contrário, o esforço é indevido ou extraviado. Outra consideração é entender qual pode ser o compromisso. No momento, todas as soluções disponíveis vêm com limitações.

Pagamentos em lote em uma transação[editar | editar código-fonte]

Prós: reduz o tamanho de um registro de transação colocando várias transações em uma, permitindo mais transações no geral por bloco, o que pode aumentar o TPS até certo ponto.

Contras: Não é possível agrupar várias transações da carteira juntas, gerando riscos de privacidade.

Os pagamentos em lote têm sido um recurso do Bitcoin (e, portanto, os forks do Bitcoin, incluindo Digibyte, Dogecoin, Bitcoin Cash, etc.) através do sendPC da RPC . As trocas já fazem isso, você pode vê-lo quando tenta procurar seu ID de transação em um explorador de blockchain. O que você pode acabar vendo é uma carteira sendo enviada para várias carteiras diferentes. Nesse caso, é uma transação em lote.

A vantagem disso é que colocá-lo em uma transação significa que :

  1. Você só precisa pagar uma taxa de transação
  2. Não precisa escrever uma transação completa que seja, como descrevi anteriormente, aproximadamente 380 bytes, para cada transação. De fato, dos 380 bytes que a transação pode ter, apenas 34 bytes podem ser as informações da transação.

Apenas uma pequena parte de um registro de transação no bloco realmente fala sobre a transação. Se, por exemplo, eu desejasse enviar dez transações de uma só vez e enviá-las como transações separadas, seriam 380 x 10 = 3.800 bytes de espaço que ocuparia em um bloco. Por outro lado, se eu agrupasse a transação em lotes, a primeira transação no bloco seria incluída nos 380 bytes, e os próximos 9 seriam apenas 34 bytes cada; ou seja, 380 + (34 x 9) = 686 bytes, que é 5,5x menor.

Se essas transações não fossem em lote, o tamanho seria: 10 transações x 380 bytes por transação = 3.800 bytes. Ele vem com limitações, no entanto; transações diferentes de carteiras diferentes não podem ser agrupadas. Em outras palavras, se houvesse dez pessoas na fila para o café, essas dez pessoas não poderiam colocar todas as suas transações em um único lote e enviá-las da Starbucks. Cada um teria que produzir uma transação individual. As transações em lote são limitadas a um para múltiplos, e não para múltiplos. Uma transação em lote seria ótima, por exemplo, no pagamento de contas (eletricidade, Internet, telefone, NetFlix, etc.) de uma única vez.

Além disso, uma transação em lote pode não ser algo que você deseja fazer por questão de privacidade. Como David A. Harding menciona em seu artigo sobre transações em lote de Bitcoin , uma questão de privacidade em transações em lote pode surgir se você fizer folha de pagamento - qualquer um pode verificar sua transação e ver quais outras carteiras (funcionários) foram enviadas.

Bitcoin Cash[editar | editar código-fonte]

Prós: pode armazenar mais transações que o Bitcoin em um bloco, o que aumenta o TPS capaz

Contras: é apenas uma solução temporária, pois seu TPS ainda está muito abaixo dos 1.700 TPS globais que a Visa realiza em um dia médio. A solução também é limitada ao Bitcoin Cash, por isso não pode ser uma solução para outras blockchains.

Se você olhar para os cenários que propus anteriormente para escalar teoricamente o TPS, o cenário 1 pode parecer familiar. Isso ocorre porque uma tentativa já ocorreu - ou seja, o hard fork do Bitcoin Cash, que ocorreu em agosto de 2017. O principal motivador do hard fork foi aumentar o tamanho do bloco para 8 MB (um aumento de 8x) em 1 MB não-SegWit Blocos de Bitcoin.

Mas, na melhor das hipóteses, essa solução ainda está longe da resposta que o mundo procura em relação à escalabilidade.

O Bitcoin Cash é um hard fork do Bitcoin, projetado como uma alternativa ao Bitcoin com a proposta de valor agregado de transações mais rápidas. Aumenta principalmente o tamanho do bloco (B); embora tenha aumentado a velocidade de transação em comparação com o Bitcoin, ainda não possui TPS suficiente para competir no espaço global de transações.

A Rede Lightning[editar | editar código-fonte]

Prós: transações quase instantâneas entre as partes, sem taxas

Contras: a transação ocorre fora da cadeia, requer que os usuários tenham um nó relâmpago e está limitada a blockchains baseadas em Bitcoin (por exemplo, Bitcoin Cash, Litecoin, Digibyte, Dogecoin)

Entrar nos detalhes de como a Lightning Network funciona em um nível granular será pouco detalhado neste artigo, mas, há muitos recursos que o guiam de uma maneira mais simples de entender. De forma sucinta, a Lightning Network permite que você retire seus Bitcoins da blockchain e faça transações com outras partes em particular. Por exemplo, posso planejar tomar café todas as manhãs no próximo mês. Quero fazer transações no Bitcoin, mas não quero ficar na frente da linha de café aguardando minhas confirmações de bloqueio como um tolo que não sabe o que é a Lightning Network.

Então, o que faço é criar um canal de pagamento chamado Lightning Network. Este novo canal de pagamento não executa transações através da blockchain Bitcoin - pense nisso como uma reserva. Eu deposito, digamos 0,5 BTC nele, e essa é uma reserva que eu posso usar para pagar qualquer outra pessoa com a qual eu esteja conectado na Lightning Network.

Quando termino, volto ao blockchain e digo: "Ei, enviei Starbucks 0.1 BTC para café ao longo de um mês, deduzindo isso do saldo que coloquei inicialmente". Então tenho 0,4 BTC sobrou. Obviamente, essa é uma maneira muito simplificada de explicar o que realmente acontece; portanto, definitivamente dê uma olhada em outros recursos, se quiser aprender sobre os recursos da Lightning Network.

Infelizmente, é uma solução exclusiva para Bitcoin para transações fora da cadeia, disponível para blockchains Bitcoin e bifurcados como Digibyte e Litecoin. A vantagem que a Lightning Network oferece é a transação instantânea e com taxa zero, que permite a microtransação e a capacidade de comprar café sem esperar.

No estágio atual, porém, a criação do canal de pagamento requer um pouco mais de conhecimento do que o comprador médio de Bitcoin pode se sentir confortável e ainda exige transações on-chain antes e depois da vida útil do nó Lightning do usuário. Portanto, a rede Lightning é uma ótima solução para dimensionar o TPS para Bitcoin e criptomoedas semelhantes a Bitcoin, mas apenas resolve o problema fora da cadeia.

EOS e outras blockchains de alto desempenho.[editar | editar código-fonte]

Prós: alta escalabilidade teórica.

Contras: centralização, que pode levar a censura.

Projetos de blockchain de alto desempenho usam diferentes mecanismos de consenso. As alternativas mais populares são Proof of Work (PoW) e o Proof of Stake (PoS). Um projeto recente, o EOS, usa o que chama de prova de participação delegada (dPoS), que é uma versão modificada do PoS. No dPoS, os usuários comuns, de menor poder computacional, que apostamos, não fazem parte do processo de mineração virtualizado. Em vez disso, votamos em quem é o EOS, e este utiliza PoS delegado (dPoS) para reivindicar até 3.996 TPS, mas o trade-off é a centralização, que fornece aos principais interessados mais poder do que o resto da comunidade.

O EOS possui apenas 21 nós (Block Producers) e, em junho de 2018, esses Block Producers congelaram sete contas EOS . Embora o raciocínio por trás do congelamento possa ser justificado, ele demonstra a quantidade de autoridade que uma organização tem em todo o blockchain e sua capacidade de executar com essa autoridade.

A comunidade blockchain deseja escalabilidade, que foi o que deu origem à popularidade do EOS, mas o trade-off é a censura e o controle devido à centralização. Para obter uma lista de outras falhas adicionais que podem comprometer a integridade do EOS, dê uma olhada neste artigo: O EOS não é um blockchain, é um serviço de computação em nuvem glorificado (exoneração de responsabilidade: a pesquisa foi financiada pela Consensys e o fundador da Consensys é co-fundador do Ethereum).

bloXroute[editar | editar código-fonte]

Prós: é uma solução on-chain e independente de blockchain. Por isso pode ser uma resposta para escalabilidade para potencialmente todas as blockchains

Contras: ainda está em desenvolvimento, e construir / operar uma CDN global é um feito caro que ainda está para ser realizado no espaço da blockchain

Fora dos projetos específicos de blockchain, as startups estão começando a surgir para resolver o problema em uma escala maior. Um dos projetos mais interessantes que vi até agora no espaço é uma startup chamada bloXroute . Descobri a empresa na semana passada durante minha pesquisa sobre o espaço blockchain. A idéia por trás da empresa é transpor uma rede de entrega de conteúdo (CDN) para redes de blockchain para resolver os problemas de escalabilidade.


O que é um CDN?[editar | editar código-fonte]

CDNs são os que sobrecarregam a velocidade da Internet hoje. Esse é o motivo pelo qual, quando você liga o próximo vídeo do YouTube, ele não precisa mais exibir o botão giratório de carregamento e esperar três minutos para assistir a um vídeo de um minuto. Se você nunca teve esses problemas antes, é jovem demais para entender.

Uma rede de distribuição de conteúdo parece complexa e sofisticada e, embora a construção de uma seja mais complexa do que você possa imaginar, a idéia é bem simples - coloque conteúdo de tamanho grande em computadores (chamados servidores) perto das populações, de modo que sempre que, digamos, alguém em Manhattan deseja fazer o download de um conteúdo para visualizá-lo, não precisa fazer o download todo o caminho de algum computador na Califórnia. Em vez disso, há uma versão mais próxima armazenada em algum lugar perto de Nova York. A maior empresa no espaço da CDN é a Akamai e foi criada como uma solução para reduzir a latência de arquivos grandes pela Internet.

Do mesmo modo, o bloXroute pretende pegar o conceito da CDN e aplicá-lo ao espaço blockchain como uma rede distribuída (BDN) blockchain. Afinal, se os blocos chegarem a gigabytes de tamanho, as velocidades de transferência se tornarão um problema.

O bloXroute pretende executar uma avaliação de seu BDN no primeiro trimestre de 2019. Os resultados dessa avaliação nos darão uma indicação melhor de seu progresso na construção de uma rede global para dimensionar blockchains. Além disso, pretende liberar um token de segurança, BLXR, que paga dividendos aos acionistas. Os dividendos são gerados a partir de taxas de transação, que são cobradas por cada transação após o bloXroute ultrapassar 100 TPS por blockchain.


Referência principal:

https://hackernoon.com/the-blockchain-scalability-problem-the-race-for-visa-like-transaction-speed-5cce48f9d44