Compartilhe este artigo

Transação desonesta prejudica usuários casuais de software Bitcoin

Um erro cometido por um desenvolvedor de carteira de Bitcoin impediu que as pessoas reiniciassem seu software cliente de Bitcoin esta semana.

rogue transaction

Várias versões do cliente Bitcoin começaram a falhar esta semana, depois que uma transação desonesta impediu que os usuários reiniciassem o software.

Os problemas surgiram pela primeira vez na manhã de segunda-feira, horário dos EUA, com umamensagem no fórum Bitcoin Talk.

A História Continua abaixo
Não perca outra história.Inscreva-se na Newsletter Crypto Daybook Americas hoje. Ver Todas as Newsletters
“Acabei de abrir meu laptop e iniciei o Bitcoin QT e recebi a mensagem blockchain corrupt, cliquei em OK e agora aparece "Reindexando blocos - 204 semanas", disse o autor. “Além disso, meus Bitcoins estão não confirmados. O que aconteceu, por que a mensagem?”

Outros rapidamente relataram o mesmo erro em vários computadores, executando diferentes versões do Bitcoin-QT, que é a versão padrão habilitada para interface gráfica de usuário (GUI) do cliente Bitcoin . Reindexar os blocos usando o cliente Bitcoin não conseguiu resolver o problema. O mesmo problema afetou o Bitcoind, que é a versão não baseada em GUI do cliente.

O problema foi resultado de um bug introduzido originalmente na versão 0.8.0 do cliente Bitcoin , que foi primeiro lançadoem fevereiro. Essa versão foi um grande lançamento, que trocou o banco de dados usado para armazenar a cadeia de blocos do Berkeley DB para o LevelDB, para resolver um problema de segurança.

“É um bug em nosso código que verifica inconsistências no banco de dados LevelDB introduzidas quando mudamos para o armazenamento LevelDB na versão 0.8.0, combinado com um bug que verifica o número da versão em transações”, disse Gavin Andresen, desenvolvedor chefe. “Uma transação com um número de versão ruim desencadeou o problema.”

Gregory Maxwell, outro membro da equipe CORE de desenvolvedores, postou uma solução alternativa para o problema ontem de manhã. Ele explicou ao CoinDesk que desde 0.8.0, o software armazenou transações com números de versão negativos incorretamente na versão local do blockchain.

"Esse comportamento incorreto é, por si só, inofensivo e até ontem não houve nenhuma transação com versão negativa."

No entanto, na segunda-feira, tal transação foi liberada e armazenada no cliente. Como o software impõe uma verificação rigorosa de consistência do banco de dados que é executada sempre que é iniciado, ele se recusou a iniciar depois que essas transações foram incluídas na cadeia, disse ele.

Nem Andresen nem Maxwell disseram ter visto qualquer evidência de interrupção significativa da rede. Andresen destacou que isso T afeta as maiores e mais críticas peças da infraestrutura de rede, como pools de mineração, comerciantes ou bolsas, porque eles tendem a KEEP seu software Bitcoin em execução, geralmente com múltiplos nós.

“Como o problema é facilmente contornado (depois de encontrar instruções), suspeito que isso signifique que é provavelmente uma fonte muito maior de frustração do que uma interrupção real”, disse Maxwell.

Então, de onde vieram as transações? Maxwell as rastreou até alguns endereços reutilizados. Ele apontou para um desenvolvedor de carteira de Bitcoin , cujo software estava falhando em inicializar a versão antes de enviar uma transação. "Este é um erro difícil de cometer, especialmente em código C", disse ele, acrescentando que a página do Github da carteira agora está offline. "Talvez ele a tenha tirado do ar devido a esse bug."

O bug pode ter sido meramente frustrante, mas também mostra como ataques de rede podem ser montados – mesmo inadvertidamente e não maliciosamente – simplesmente servindo uma transação que confunde o sistema graças a um bug de longa data. Neste caso, foi simplesmente uma transação malformada, distorcendo um pedaço de dados que não foi usado ativamente pelo cliente Bitcoin .

"Se o erro estivesse em algo que foi usado, teria sido um bug muito sério de criação de fork", disse Maxwell. Isso exigiria uma vulnerabilidade correspondente no código, no entanto.

A equipe de desenvolvimento CORE agora está trabalhando em uma correção. “Assim que estivermos confiantes de que temos uma boa correção e o problema T pode ser acionado de outra forma, lançaremos uma versão 0.8.5”, concluiu Andresen.

Danny Bradbury

Danny Bradbury é escritor profissional desde 1989 e trabalha como freelancer desde 1994. Ele cobre Tecnologia para publicações como o Guardian.

Picture of CoinDesk author Danny Bradbury