O Bloco
Os blocos das criptomoedas são pacotes preenchidos de transações. Estas transações possuem entradas e saída onde a quantidade de moeda de entrada deve ser igual à de saída, exceto quando é previsto criação de moedas para investidores, desenvolvedores e/ou mineradores. Esta estrutura forma um livro razão chamado de ledger que mostra o histórico de transação desde o princípio da rede.
Um nó que deseja minerar um bloco deve monta-lo através de um armazenamento compartilhado de transações chamado de mempool, geralmente se escolhe as transações que pagam as melhores taxas. Este bloco é utilizado acompanhado de um incremento para montar um número através de um método chamado de função hash.
Por fim os nós competem para ser o primeiro a encontrar uma hash menor que um alvo específico. O vencedor espalha pela rede seu bloco válido e leva os ganhos da mineração. Assim que um concurso se encera, o novo bloco entra na blockchain e novamente se inicia um concurso, formando um ciclo.
Limitações
A Rede Bitcoin possui limites conhecidos. Um bloco demora em média 10 minutos para entrar na blockchain, chegando a possuir a 4000 transações, o que leva a um valor máximo aproximado de 6.67 transações por segundo.
Os forks e redes baseadas no bitcoin trazem alterações como o tamanho de bloco e tempo de processamento de bloco para maximizar a escalabilidade. Como exemplo temos a Bitcoin Cash que tem um tamanho de bloco de 8 MB e um tamanho médio de transação de 480 bytes, o que revela uma taxa máxima aproximada de 56 transações por segundo.
Outras variações tentam estratégias parecidas, porém não chegam perto das 65 mil transações por segundo da gigante de pagamentos VISA. Hoje as criptos que chegam a taxas muito altas utilizam outras formas de consenso, como o Proof of Stake, que está ganhando bastante popularidade com a criptomoeda EOS, porém existem muitas dúvidas quando a sua segurança, e não possuem a massiva validação experimental que a bitcoin deu ao Proof of Work.
As moedas que utilizam prova de trabalho não aumentam seu tamanho de bloco muito além dos 8 MB e não reduzem muito o tempo médio de entrada dos blocos pois podem ocorrer forks na blockchain.
Os forks acontecem quando dois nós geram um bloco válido no concurso quase simultaneamente, os dois transmitem para os nós vizinhos e a rede se divide baseado em qual bloco os nós recebem primeiro. Estes fenômenos acontecem com uma certa frequência mas felizmente existem algoritmos para decidir qual ledger será continuada, sem necessidade de intervenção.
Christian Decker e Roger Wattenhofer modelaram a probabilidade de forks acontecerem na blockchain do bitcoin. Está probabilidade está diretamente relacionada com o tamanho do bloco e o tempo médio para fechamento de um concurso.
Caso uma blockchain tenha blocos muito grandes e tempo médio de concurso muito baixo a rede gera forks mais rápido que os trata, sendo dividida a todo momento em várias sidechains com ledger próprias.
Também não é ideal que a taxa de surgimento de forks seja próxima a de tratamento. As pequenas forks podem ser quase inofensivas porém o problema passa a ser relevante quando ocorre a separação da rede em grandes forks e a blockchain pode acabar crescendo separadamente.
A única solução é a intervenção, onde apenas uma ledger será selecionada, as ledgers paralelas e suas transações vão desaparecer como se nunca tivessem ocorrido. Os prejuízos são colossais pois muito dinheiro acaba sendo circulado paralelamente e de forma súbita as transações são revertidas. Obviamente todo o dinheiro gasto nestas transações não sofre reversão junto da blockchain e boa parte não será recuperado.
Outra preocupação quanto a divisão da rede são ataques 51%. Quando a rede se divide o poder computacional também se divide, caso um grupo fique com mais de 50% do poder computacional do fork é possível realizar gastos duplos, algo que já foi realizado até na blockchain do bitcoin quando houve uma grande divisão em sidechains devido a problemas de atualização de versão.
Portanto problemas de estabilidade e segurança tornam inviável apenas alterar o tempo de entrada de bloco ou seu tamanho. A rede não chegaria perto de realizar as 65 mil transações por segundo da VISA sem se quebrar, e mesmo que fosse suficiente aumentar a velocidade da blockchain em duas ou três vezes, a propagação dos blocos na rede será proporcionalmente pior, ocorrendo apenas uma troca entre velocidade e segurança.
Para aumentar a escalabilidade até valores muito altos é preciso fazer mais que equilibrar variáveis. É necessário rever todos os processos da rede para encontrar desperdícios de poder computacional e reavaliar a necessidade de algumas etapas.