Bitcoin e Escalabilidade: compreender os básicos

andre-francois-557614-unsplash

A escalabilidade do protocolo Bitcoin é um tópico que, de certa forma, paira na cabeça de qualquer pessoa interessada na tecnologia blockchain.

Afinal, escalabilidade é fundamental para a adopção em massa de qualquer tecnologia e tornou-se, por isso, um tema sensível na comunidade Bitcoin – e de qualquer outra criptomoeda.

Contudo, a questão da escalabilidade surge apenas nos dois últimos anos. Até lá, o protocolo Bitcoin funcionava relativamente bem. O número de usuários e transações era consideravelmente inferior ao que observamos hoje.

Explicando de forma muito simples, existem problemas de escalabilidade quando os blocos (blocks) da blockchain estão cheios e as transações demoram mais tempo para ser validadas.

No meu artigo sobre Mining e Puzzles Criptográficos, dividido em duas partes, vimos como os miners do protocolo Bitcoin validavam transações e ainda o que acontecia depois das transações serem validadas. Aconselho a leitura para quem quiser aprofundar o conhecimento sobre o tema, ou tiver dificuldade em acompanhar este texto.

Os sintomas do problema de escalabilidade do protocolo Bitcoin são claros: aumento do tempo de confirmação das transações e consequente aumento dos seus fees.

Importa, antes de mais, perceber porque isso acontece.

No protocolo Bitcoin o tamanho de cada bloco é de 1 Megabyte, isto é, um bloco não pode conter mais do que 1 Megabyte de dados ou, neste caso, transações.

Além disso, cada novo bloco é produzido a cada 10 minutos, o chamado block interval.

O que significa que na prática apenas se pode acrescentar 1 Megabyte de transações a cada 10 minutos.

Se existem muitas pessoas a fazer transações, os blocos ficarão naturalmente cheios mais rápido e algumas pessoas estarão dispostas a pagar fees mais altas para as suas transações serem validadas primeiro.

Para melhor compreenderem como funciona este ecossistema, aconselho a leitura dos dois artigos que partilhei acima, bem como o meu artigo “Ecossistema Bitcoin simplificado: miners, nodes, fees e transações.

Mas afinal, a solução para esta questão da escalabilidade parece fácil. Porque não se aumenta simplesmente o tamanho dos blocos, certo?

Do ponto de vista técnico, aumentar o tamanho dos blocos é até simples. Requer simplesmente uma pequena alteração de um parâmetro no source-code (código fonte) do protocolo.

Contudo, essa alteração levanta três questões críticas:

  1. Requer um Hard Fork
  2. Não é uma solução de longo prazo
  3. Pode conduzir à centralização

(Se não sabem ainda o que é um Hard Fork, sugiro que leiam o meu ultimo artigo sobre o tema, explicado para que todos consigam entender).

Em meados de 2017 a questão da escalabilidade era tão ou mais sensível do que hoje.

Independentemente das consequências, o aumento do tamanho dos blocos era defendido por parte da comunidade. Alegavam que a gravidade da situação – elevados fees e tempo de validação das transações – era insustentável e que era necessário uma solução imediata.

Mesmo que esta envolvesse uma potencial divisão da comunidade e mesmo que ela não fosse uma solução de longo prazo.

Afinal, como poderia a Bitcoin aspirar a ser uma moeda do dia a dia quando os seus fees ascendiam aos 20 e 30 dollars?

E assim, em Agosto de 2017, nasce o protocolo Bitcoin Cash, um Hard Fork do protocolo Bitcoin, onde cada bloco passa a ter uma dimensão de 2 Megabytes.

A outra parte da comunidade que se manteve fiel aos blocos de 1 Megabyte, defendia que mais cedo ou mais tarde, a mesma situação voltaria a acontecer

E que por isso, a solução passava por soluções de layer dois. Isto é, soluções que atuassem numa segunda camada do protocolo e não no seu epicentro, evitando um Hard Fork.

Além disso, defendiam que blocos de 2 Megabytes conduziriam à centralização do protocolo, lembrando que o propósito do protocolo Bitcoin era que qualquer pessoa pudesse “correr” um node nos seus computadores.

Se se continuasse a aumentar o tamanho dos blocos, em breve os blocos seriam tão grandes, que seria impossível para uma pessoa normal “correr” um desses nodes.

A questão que se segue é obvia, para os mais atentos: porque não se alterou então o intervalo dos blocos?

Isto é, porque não se reduziu o tempo entre cada bloco de 10 minutos, para 5, 2 ou até menos? Seria assim possível validar mais transações num menor espaço de tempo.

Num artigo anterior falei do termo Stale Blocks, ou blocos obsoletos, e de como era importante que a rede tivesse tempo para propagar informação ou, neste caso, transações.

Se a informação não é propagada suficientemente e, se novas transações são registadas antes das anteriores se terem propagado, rapidamente se gerarão inconsistências na rede.

A informação não será sincronizada em todos os nodes. Diferentes nodes, guardarão diferente versões da blockchain.

Por isso, aumentar o intervalo entre blocos seria demasiado arriscado. Aumentaria a instabilidade da rede e o risco de Stale Blocks.

No próximo artigo abordaremos as soluções alternativas propostas pela comunidade Bitcoin, que se manteve fiel aos blocos de 1 Megabyte. Falaremos de Lightning Network, SegWit e Transaction Malleability.

 

Uma opinião sobre “Bitcoin e Escalabilidade: compreender os básicos

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Google photo

Está a comentar usando a sua conta Google Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s

search previous next tag category expand menu location phone mail time cart zoom edit close