Uma mineradora do Bitcoin Cash (BCH) passou a minerar diversos blocos vazios, acabando por postergar a confirmação das transações dos usuários. Entenda como isso pode ter sido um ataque à rede.
Em 2017, quando as taxas do Bitcoin (BTC) alcançaram níveis altíssimos (mais de US$100 por transação), alguns usuários falavam que a rede poderia estar sofrendo um “ataque de spam”, que enchia os blocos com microtransações e congestionava a rede para o resto dos participantes.
Porém, não há como distinguir a motivação por trás das transações, para a rede o que seguir as regras de consenso é válido. Nesse sentido, há uma forma ainda mais eficiente de prejudicar um blockchain público e congestionar a rede: minerando blocos vazios.
E é isso que está acontecendo com o Bitcoin Cash hoje, com uma mineradora detentora de cerca de 17,36% do hashrate (poder computacional) produzindo quase que exclusivamente blocos de 0.25 kB.
Com isso, cerca de 17,36% dos blocos não estão confirmando as transações dos usuários, mas apenas pegando a recompensa em bitcoin cash de cada bloco.
Imaginando que a suposta atacante minerasse 6 blocos seguidos, os usuários ficariam por volta de uma hora sem ter confirmações das transações. Por isso esse tipo de coisa pode se tornar um problema, especialmente se a criptomoeda fosse amplamente usada.
Faz sentido minerar blocos vazios?
O principal motivo pelo qual os mineradores são desincentivados a minerar blocos vazios são as taxas de cada transação. É sempre melhor ganhar mais do que menos, então por que alguns fazem blocos apenas para coletar a recompensa do bloco?
Na verdade, até 2018 cerca de 19% dos blocos minerados no Bitcoin (BTC) eram vazios. Isso pode acontecer naturalmente porque quando um minerador recebe um bloco de um nó diferente, ele precisa validar as transações contidas nele para definir como ele vai minerar seu próximo bloco. Nesse curto intervalo de tempo, para não desperdiçar poder de computação, o minerador continua tentando minerar um novo bloco (sem transações) para não conflitar com o bloco anterior.
De lá para cá, houveram melhorias no código que amenizam essa situação, mas vez ou outra é possível perceber blocos vazios na rede.
Mas um outro possível motivo seria simplesmente atacar a criptomoeda. Abdicar do lucro das taxas das transações para congestionar propositadamente o blockchain. Não sabemos ainda se esse é o caso da HathorMM, inclusive um bitcoiner perguntou no subreddit da Hathor Network se eles estavam por trás de um ataque no BCH.
A Hathor é uma criptomoeda que permite a mineração conjunta com o Bitcoin ou Bitcoin Cash , assim, ao minerá-la você também recebe outra criptomoeda. Também não temos a certeza de que é realmente a HathorMM por trás de todos os blocos vazios, visto que sabemos apenas a assinatura deixada voluntariamente no bloco minerado.
Mas apesar da semelhança no nome, um usuário no Reddit afirmou que a pool de mineração é da EuroLine, sem nenhuma relação com a Hathor Network. “Você pode alcançar os donos da pool no discord: EuroLine#5553. Eu mesmo enviei uma mensagem.”, disse o anônimo.
Bitcoin Cash perto de virar o processamento de transações
O possível ataque vem em um momento em que a rede do “Bitcoin Cash” se aproxima das transações no “Bitcoin Core” (BTC).
Com taxas de transação 7.363 vezes menores que o BTC, o Bitcoin Cash é a escolha de muitos desenvolvedores e pessoas que precisam pagar taxas baixas.
Aplicações como a memo.cash, cashsuffle e doações para crianças carentes na Venezuela são apenas possíveis graças ao tamanho do bloco no BCH, que não é limitado artificialmente em cerca de 1 MB (que hoje supera um pouco devido ao SegWit) como no Bitcoin BTC.
Como solucionar o problema?
A comunidade está discutindo opções para superar esse problema. Dentre elas foram levantadas as seguintes opções:
- Abandonar os blocos da HathorMM: Esta solução precisa do apoio de boa parte da rede e é vista com péssimos olhos por parte dos usuários, pois para alguns significaria uma censura ao minerador que apenas está seguindo o protocolo.
- Abandonar apenas os blocos vazios da HathorMM: Em vez de censurar a pool, a ideia aqui é apenas punir os blocos vazios. Entretanto, esta ideia abre precedentes indesejados na rede e está a um passo de habilitar uma censura de blocos.
Outra solução foi proposta em 2016 por Pascal Gauthier – CEO da empresa de dados Kaito – a ideia é tecnicamente simples e consiste em incluir no hash da geração da coinbase atual (criação de moedas) o hash com todas as transações do cabeçalho da header do bloco anterior. Dessa forma, os blocos com apenas a Coinbase seriam necessariamente abandonados.
“O ponto da rede do Bitcoin é processar transações. Portanto, blocos vazios são geralmente criticados como um “comportamento negativo” pois ele está criando pouco valor para a rede e acelerando a desinflação e roubando de mineradores “honestos” “ – afirmou Gauthier.
Artigo escrito com a colaboração de Neto Guaraci.