El 8 de enero de 2026, en el bloque 24.191.019 de Ethereum, el token TRU de Truebit colapsó tras una transacción que obligó el precio de compra del protocolo a cero. Esa única condición permitía acuñar ilimitadamente y una salida rápida a ETH. A continuación, más detalles.
El atacante llamaba getPurchasePrice, luego buyTRU (0xa0296215), acuñaba más TRU que la oferta total, repetía el ciclo y luego vendía a través de sellTRU. El coste total fue inferior a 40 dólares, y la transacción devolvió 8.535 ETH (unos 26 millones de dólares).
Solo el proxy de token TRU fue verificado en Sourcify, compilado con Solidity 0.5.3. Esa época es anterior a los controles de desbordamiento integrados y a muchas medidas de seguridad. El código antiguo puede ejecutarse durante años y luego fallar cuando un caso extremo solo cumple un mejor análisis.
Descompilamos el contrato de compra no verificado y rastreamos getPurchasePrice en una función interna (0x1446) que calcula el precio a partir de la oferta S, reserva R y THETA (75 en ese momento). Se usaron ayudantes matemáticos seguros en la mayor parte del camino.
El punto de fallo era la expresión final: v13 = _SafeDiv(v6, v12 + v9). Esa adición no se ha marcado y Solidity 0.5.3 no se revierte en el desbordamiento. Con una entrada lo suficientemente grande, se envolvió y la división entera devolvió cero.
Nuestro artículo completo cubre la causa raíz y las lecciones para los sistemas heredados:
4.99K