Imagen cortesía de Cypherbits.net
El 15 de agosto del 2010 una persona aprovechó un bug en el código de Bitcoin (BTC) para crear 184.467 millones de BTC.
La criptomoneda, que tenía 1 año y 8 meses de vida, se encontraba todavía en su etapa inicial. Satoshi Nakamoto y sus colaboradores trabajaban muchas veces a prueba y error, para que Bitcoin cumpliera los estándares que ellos mismos se imponían.
Ese domingo de agosto, Jeff Garzik, quien colaboró en el desarrollo de Bitcoin desde los primeros años, escribió en el foro Bitcointalk: “El valor de salida en el bloque 74.638 es bastante extraño”.
El bloque mostraba que se estaban produciendo salidas que llegaban a un total de 184.467 millones de BTC. Esto es un valor casi 8.800 veces superior al suministro máximo fijado para esta criptomoneda.
Un usuario, bajo el pseudónimo «LFM», dijo que una persona realizó una modificación personalizada del software para generar una transacción que explotara una vulnerabilidad presente en el código e inflar artificialmente el suministro.
LFM agregó a su explicación sobre esta debilidad del programa, que el código verificaba la salida de cada transacción en busca de números individualmente, pero “se olvidó” de verificar si la suma de dos salidas resultaba en un número negativo.
Nakamoto y el desarrollador Gavin Andresen, tan solo 2 horas y 21 minutos después de que Garzik hiciera el anuncio, publicaron un parche para el código que solucionaba este problema en futuras transacciones. Una hora más tarde, el parche ya estaba subido al repositorio.
5 horas después de haberse iniciado el ataque, Satoshi Nakamoto y Gavin Andresen tenían listo el parche que solucionó el bug.
La solución fue una bifurcación suave (soft fork) de la blockchain mediante la cual se revirtió la transacción problemática y todas las posteriores. Los mineros aceptaron la propuesta y la nueva blockchain superó a la vieja en el bloque 74.691, 19 horas después del incidente.
Pocos meses después del incidente, Nakamoto publicó su último mensaje en Bitcointalk. Fue una corrección para evitar ataques de denegación de servicio (DoS).