Tecnicamente falando, é impossível destruir um Bitcoin. Mas é possível enviar moedas para um endereço onde eles não podem ser gastos, tornando-as inúteis para todos os efeitos. Em outubro de 2011, foi exatamente isso que Mark Karpeles, ex-CEO da Mt.Gox, fez quando entregou 2.609 BTC ao esquecimento eterno devido a um erro de script. E esse erro é o tema da parte 17 da série Bitcoin History.
Apagando uma semana de lucros em um clique
Menos de quatro meses depois do primeiro ataque à Mt. Gox – relatado em capítulo anterior da série – seu CEO Mark Karpeles sofreria outro episódio embaraçoso quando eliminou todas as ofertas da semana que estavam listadas na exchange de Bitcoin.
Comparado a outras perdas que a Mt. Gox suportaria, essa foi uma gota no oceano e, portanto, foi amplamente esquecida pela história. O incidente merece uma revisão, no entanto, pois fornece um exemplo de advertência sobre os perigos de se intrometer no software Bitcoin e uma lição sobre como destruir moedas.
A maior parte da comunidade soube do evento através do fórum Bitcointalk, a principal fonte de informações da época. Em 29 de outubro de 2011, o usuário “genjix” iniciou um tópico intitulado “alguém estragou tudo e perdeu muito dinheiro”. Como explicação, eles publicaram o seguinte código:
Poucos leitores tinham ideia do que havia de errado em olhar para o código, mas o “genjix” estava à disposição para explicar. O script de transação padrão, que neste caso era “76a90088ac”, deveria ter “14” no lugar de “00”, “que na linguagem de script significa push 0 bytes”, observou genjix.
Confira nossas sugestões de Pre-Sales para investir agora
“É uma transmissão que não foi enviada para nada. Obviamente alguém estava hackeando o Bitcoin ou criando uma versão personalizada e estragou tudo – embora eu não tenha ideia do que estava fazendo com tanto dinheiro”, explicou o usuário
A resposta para essa última pergunta não demorou muito para chegar e veio pelo Internet Relay Chat (IRC). Através do perfil da Mt. Gox na ferramenta, Karpeles, também conhecido como “Magical Tux”, confessou ser o autor do script de transação que disparou 2.609 Bitcoins. Confira o diálogo abaixo:
MagicalTux: esse é um problema, mas não o pior problema que já enfrentamos.
MagicalTux: todas as retiradas interrompidas foram reemitidas.
MagicalTux: a perda equivaleu a uma semana de renda apenas com BTC.
“Para que não houvesse dúvida quanto à finalização da transação, o usuário do Bitcointalk “BTCurious” escreveu: “eles (os Bitcoins) se foram. Sem chance de recuperação”.
“A mãe de todas as perdas”
Enviar moedas para um endereço de Bitcoin errado ou inexistente é algo extremamente raro. Todos os endereços de Bitcoin possuem uma soma de verificação que reduz significativamente as chances de inserir inadvertidamente um endereço incorreto. No entanto, Karpeles estava mexendo com o cliente Bitcoin e escolheu uma transação valiosa como uma forma experimental. Como ele reconheceu no IRC:
MagicalTux: preciso limitar o número de entradas em um TX, parece que o bitcoin normal não gosta de um TX com 293 entradas.
“O protocolo Bitcoin suporta muito mais do que apenas enviar moedas de A para B, embora isso seja principalmente o que você vê no cliente normal atualmente. Os mineradores precisam aceitar “transações incomuns”, desde que sigam o protocolo do Bitcoin”, explicou BTCurious no Bitcointalk.
As reações ao erro
A reação ao erro de Karpeles foi mista, com um intenso debate no IRC sobre se as capacidades de script do Bitcoin deveriam ser limitadas para impedir que esse erro aconteça. Não foi tão simples quanto pareceu, no entanto. Gregory Maxwell, desenvolvedor do Bitcoin Core, explicou em um diálogo sobre o tema:
Glyph-Minus-229: o protocolo não impede o envio para endereços inválidos?
gmaxwell: Não, o protocolo possibilita MUITAS coisas.
gmaxwell: as transações são pequenos programas que governam seu resgate.
gmaxwell: Provavelmente não há tempo polinomial que possa identificar todas as transações não passíveis de pagamento.
Um usuário do IRC não estava disposto a descartar o incidente como azar, descrevendo-o como “mais um golpe na reputação tecnológica da Mt. Gox”.
“E este é o cara a quem 90% dos usuários de Bitcoin confiam em seu dinheiro”, escreveu o usuário Raoul Duke. Sobre Karpeles, ele escreveu: “Parece que ele está mais perto de perder o equilíbrio da Mt. Gox do que de abandonar tudo”. Ele também especulou sobre o que teria acontecido com o Bitcoin se Karpeles tivesse cometido esse erro ao enviar 442.000 BTC, como fez em uma transação recorde quatro meses antes. “Pensar nessas coisas me dá calafrios”.
Perdidos no limbo
Os 2.609 Bitcoins que Karpeles acidentalmente “destruiu” em outubro de 2011 não podem ser movidos, mas podem ser vistos na blockchain. Em defesa do ex-CEO, pode-se dizer que o Bitcoin era muito menos amigável de usar na época e a execução de transações complexas exigia mais ajustes do que hoje.
Como não poderão ser movidos, os Bitcoins permanecerão até o final dos tempos, no endereço de Bitcoin invulgarmente nomeado “s-272edf45031dd498e7b3ae89e11ff21b”. E a medida que o preço do Bitcoin aumentar, o erro de Karpeles ganhará um valor cada vez mais impactante.
Tentando resumir a impossibilidade de recuperar esses BTC, o usuário do fórum “etotheipi” escreveu: “Para gastar essas moedas, você deve forneça uma chave pública que, ao aplicar ripemd160 (sha256 (pubKey)), seja igual a “0x00”. Infelizmente, o ripemd160 produz apenas hashes de 20 bytes. Mesmo se você tivesse uma string que produz um hash tão impossível, boa sorte para encontrar a chave privada associada.”
Como o valor total dos Bitcoins era de US$8.300 na época, sua perda não representou um grande problema. Hoje, essas moedas valeriam US$26 milhões – uma fortuna visível, porém inacessível. O fato de terem residido no mesmo endereço nos últimos oito anos, intocados, é uma prova de que o Bitcoin é realmente seguro e imutável – até mesmo nos piores erros.
Leia também: A história do Bitcoin parte 16: o primeiro ataque à Mt. Gox