- O Futuro da Série Blockchain
- Sim, a Blockchain tem um problema de escalabilidade. Eis o que é, e eis o que as pessoas estão a fazer para o resolver.
- Aumentar o tamanho do bloco ou diminuir o tempo de geração do bloco não resolverá o problema: Um olhar para TPS não-SegWit
- A Emergência do SegWit
- Abordagens existentes e futuras para resolver a escalabilidade
- Batch Payments into One Transaction
O Futuro da Série Blockchain
Sim, a Blockchain tem um problema de escalabilidade. Eis o que é, e eis o que as pessoas estão a fazer para o resolver.
A batalha por uma solução escalável é a corrida da cadeia de bloqueios à lua. O Bitcoin processa 4,6 transações por segundo. Visa faz em média cerca de 1.700 transações por segundo (baseado em um cálculo derivado da reivindicação oficial de mais de 150 milhões de transações por dia). O potencial de adoção existe, mas está atualmente estrangulado pela escalabilidade.
Um estudo publicado pela Tata Communications em 2018 mostrou que 44% das organizações em sua pesquisa estão adotando a cadeia de bloqueio, mas também alude aos problemas universais que surgem com a implantação de novas tecnologias. A partir de um nível arquitetônico, o problema de escalabilidade não resolvido está surgindo como um gargalo para a adoção de blockchain e aplicações práticas.
Como diz a Deloitte Insights, “os sistemas baseados em blockchain são comparativamente lentos”. A lentidão das transações em blockchain é uma grande preocupação para as empresas que dependem de sistemas legados de processamento de transações de alto desempenho”. O mundo recebeu uma amostra dos problemas de escalabilidade em 2017 e 2018: severos atrasos de transferência e altas taxas na rede Bitcoin, e os notórios aplicativos Cryptokitties que congestionaram a rede Ethereum blockchain (uma rede na qual milhares de aplicações descentralizadas dependem).
Para escalar uma blockchain, não basta aumentar o tamanho do bloco ou diminuir o tempo do bloco através da redução da complexidade do hash. Com qualquer um dos métodos, a capacidade de escalar atinge um limite máximo antes de atingir as transações necessárias para competir com empresas como a Visa, que “lida com uma média de 150 milhões de transações por dia” ou cerca de 1.736 transações por segundo (TPS).
Por comparação, as velocidades de transação Bitcoin são tremendamente mais baixas. Atualmente, o tamanho do bloco é definido em 1MB (1.048.576 bytes – embora através do SegWit, esse tamanho pode escalar até 4MB 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 – então uma transação em lote contaria como uma transação. Portanto, a quantidade média de transações que podem caber em um dos blocos de Bitcoin, atualmente, é calculada como:
O tempo atual de geração de blocos de Bitcoin é de 10 minutos; ou seja a cada dez minutos, um novo bloco é minado. Em dez minutos (600 segundos), o Bitcoin pode em média cerca de 2.759,12 transações com base em suposições anteriores. Em outras palavras, a cadeia de blocos Bitcoin pode atualmente garantir apenas 4,6 transações por segundo.
Aumentar o tamanho do bloco ou diminuir o tempo de geração do bloco não resolverá o problema: Um olhar para TPS não-SegWit
O problema de escalabilidade vem empacotado com propostas de valor da cadeia de blocos; portanto, não se pode simplesmente aumentar a escalabilidade alterando parâmetros na cadeia de blocos.
A comunidade Bitcoin pode ajustar duas variáveis para tentar aumentar o TPS. Uma variável é o tamanho do bloco (B), que atualmente é codificado em 1MB. Idealmente, B deve ser aumentada para aumentar o TPS. A outra variável é o tempo de geração do bloco (TB), que é ajustado através da alteração da complexidade do hashing puzzle. Idealmente, a TB deve ser reduzida para aumentar a TPS.
Cenários 1 & 2
Para crescer de 4,4 para 1.736 da Visa, Bitcoin precisaria escalar seu TPS em 377,5x. Em outras palavras, B precisaria ser aumentado de 1MB para 377,5MB (Tabela 1, S1) ou TB precisaria ser reduzido de dez minutos para 1,6 segundos (Tabela 1, S2). Um terceiro cenário seria ajustar ambos. Qualquer um dos três cenários é inatingível na cadeia de bloqueio devido a um terceiro fator não controlado: o tempo de relé (TR) necessário para transmitir um novo bloco para cada nó da rede Bitcoin.
Currentemente, estima-se que existam 10.198 nós na rede Bitcoin. A transmissão de um 1MB (1.048.576 bytes) através da rede peer-to-peer leva algum tempo. O Instituto Karlsruhe de Tecnologia mede o tempo de propagação em bloco do Bitcoin e o tempo médio de propagação em bloco relatado em 17 de janeiro de 2019 foi de 13.989,42 milissegundos ou aproximadamente 14 segundos para propagar até 99% da rede. A TB não pode cair abaixo de 99% da TR (TR99)=14 porque se cair, então um novo bloco seria gerado antes que um bloco antigo fosse recebido pela maioria dos blocos da rede. Quanto mais próximo o TB chega ao TR99, mais problemas surgem com garfos, blocos órfãos e reorganizações em cadeia, e (em casos extremos) vulnerabilidades de segurança como ataques de gasto duplo.
Scenario 3
Even se TB = TR99 = 14, com um tamanho de bloco de 1MB, a cadeia de blocos Bitcoin só seria capaz de aumentar sua velocidade para 188 TPS (Tabela 1, S3). Enquanto essa escala representa um aumento de 188x no TPS, ela não está em nenhum lugar próximo aos 1.736 TPS que o Visa conduz diariamente; além disso, ela se alinha com os riscos acima mencionados. A outra variável, B, pode ser reajustada, mas não sem afetar o TR, o que afetaria o TR99 e, portanto, o limite inferior do TB.
Scenario 4
Por exemplo, ao dobrar o tamanho do B (de 1MB para 2MB), o tempo que leva para cada nó da rede baixar um novo bloco, TR, também aumentaria – em aproximadamente 2x; assim, a 2MB, TR99 = 28s, portanto, o limite inferior do TB seria de 28s também. Ao aumentar B por qualquer fator, e posteriormente aumentando TR pelo mesmo fator, a TPS líquida permaneceria a mesma – neste caso, cerca de 188 TPS (Tabela 1, S4). Uma solução para reduzir o impacto do B da TR é aumentar a largura de banda entre todos os nós dentro da rede Bitcoin. Infelizmente, por ser uma rede P2P, essa responsabilidade recai sobre a volta de cada par da rede.
A Emergência do SegWit
Em 2017, o SegWit (SegWit) entrou em vigor em todos os nós Bitcoin. Nota – Eu 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 garfo duro do Bitcoin Cash, dê uma olhada neste artigo:
Faz o que o nome soa como ele faz – segregando a parte testemunha de cada transação a partir dos dados reais da transação. Ocorreu como um garfo macio, por isso foi instituído sem grandes efeitos na rede e código de cadeia de bloqueios existentes. Devido à forma como a transação testemunha seria ponderada, os novos blocos Bitcoin habilitados para SegWit poderiam teoricamente ser aumentados para até 4MB sem alterar o tamanho do bloco Bitcoin.
Eu digo teoricamente porque existem fatores adicionais que contribuem para o tamanho final do bloco SegWit. Na verdade, se você verificar um Bitcoin blockchain explorer, você verá que (pelo menos no momento em que este artigo foi publicado) o tamanho médio do bloco ainda está abaixo de 1MB.
Mas isso não quer dizer que os blocos não possam passar de 1MB. No início de 2018, testemunhamos um dos maiores (provavelmente ainda o maior) tamanhos de blocos gerados, chegando a pesar cerca de 2,1MB. O garfo macio do SegWit ajudou a melhorar o tamanho do bloco sem alterações no código do núcleo, mas ainda não melhora o TPS de forma escalável.
Ao examinar os quatro cenários anteriores sob uma prova de consenso, vimos que simplesmente aumentar o tamanho do bloco ou reduzir a complexidade da mineração só poderia nos levar tão longe. Mesmo uma combinação disto seria limitada devido ao tempo de propagação da transação. Tentar extrair novos blocos mais rapidamente do que blocos antigos pode propagar levará a alguns problemas de segurança bastante grandes. O SegWit ajudou a aliviar alguns dos problemas do TPS entretanto, mas uma solução mais escalável ainda é necessária para alcançar Visa-like TPS.
Parece que mover qualquer peça no lugar para aumentar o TPS move outra peça para fora do lugar em algum outro lugar no quebra-cabeça da cadeia de blocos; independentemente disso, existem projetos e startups trabalhando para alcançar as respostas do TPS necessárias para empurrar a adoção da cadeia de blocos para um estágio escalável.
Abordagens existentes e futuras para resolver a escalabilidade
Quando se procura a resposta potencial para o problema da escalabilidade, múltiplos outros problemas surgem. Por exemplo, se a resposta é aplicável apenas para uma determinada cadeia de bloqueios, então ela se baseia na suposição de que a cadeia de bloqueios em particular será aquela que precisará dessa escalabilidade no futuro; caso contrário, o esforço é indevido ou equivocado. Outra consideração é compreender o que pode ser o trade-off. Neste momento, todas as soluções disponíveis vêm com limitações.
Batch Payments into One Transaction
Pros: Reduz o tamanho de um registro de transação colocando várias transações em uma, permitindo mais transações em geral por bloco, o que pode aumentar o TPS até um certo ponto.
Cons: Não é possível agrupar várias transações de carteira; riscos de privacidade
Os pagamentos em lote têm sido uma característica do Bitcoin (e portanto, os garfos do Bitcoin incluindo Digibyte, Dogecoin, Bitcoin Cash, etc.) através da emenda do RPC. As trocas já fazem isso, e você pode ver isso quando você tenta procurar seu ID de transação em um explorador de cadeia de bloqueio. O que você pode acabar vendo é uma carteira enviando para várias carteiras diferentes. Nesse caso, é uma transação em lote.
A vantagem disso é que colocá-la em uma transação significa que 1) você só tem que pagar uma taxa de transação, e 2) você não tem que escrever uma transação completa que é, como descrevi anteriormente, aproximadamente 380 bytes, para cada transação. Na verdade, dos 380 bytes que a transação pode ser, apenas 34 bytes podem ser a informação da transação.