Glosario · en profundidad

Desbordamiento de enteros

Un fallo en el que un número crece más allá del mayor valor que puede contener una variable del ordenador y da la vuelta a un valor erróneo.

Los ordenadores guardan números en ranuras de tamaño fijo. Un entero con signo de 64 bits llega como máximo a unos 9,22×1018. Suma por encima de eso y el valor da la vuelta, a menudo a un número negativo.

En Bitcoin

Los importes se almacenan en satoshis como enteros de 64 bits. En agosto de 2010 una transacción en el bloque 74.638 tenía dos salidas de 92.233.720.368,54 BTC cada una; su suma desbordó, así que la comprobación del código antiguo «las salidas no deben exceder las entradas» pasó (CVE-2010-5139).

La corrección

Hoy Core comprueba cada salida y el total acumulado contra MAX_MONEY (21 millones de BTC) antes de hacer nada más.