Post
Topic
Board Español (Spanish)
Merits 1 from 1 user
Re: Cuando todos los BTC estén minados...
by
th3nolo
on 30/10/2019, 16:51:32 UTC
⭐ Merited by d5000 (1)
El ataque fue algo sofisticado, sin embargo buscando un poco encontramos la información técnica necesaria para comprenderlo:

https://en.bitcoin.it/wiki/Value_overflow_incident
https://nvd.nist.gov/vuln/detail/CVE-2010-5139
Discusión del bug: https://bitcointalk.org/index.php?topic=822.0
Patch de satoshi: https://bitcointalk.org/index.php?topic=827.0

Imagino que el bug puede ser replicado, sin embargo los nodos no aceptarían la transacción.


Con como lo hicieron, me refería al código.

Code:
// Check for negative or overflow input values
            if (txPrev.vout[prevout.n].nValue < 0)
                return error("ConnectInputs() : txin.nValue negative");
            if (txPrev.vout[prevout.n].nValue > MAX_MONEY)
                return error("ConnectInputs() : txin.nValue too high");
            if (nValueIn > MAX_MONEY)
                return error("ConnectInputs() : txin total too high");    

Traducción:
Code:
// Comprobador de valores negativos o valores de desborde.
Entonces.. Si( el valor de txPrev.vout[prevout.n].nValue es menor a 0)
retornar error "txin.nValue es negativo"
                Si( txPrev.vout[prevout.n].nValue es mayor a MAX_MONEY)
retornar error "txin.nValue es muy alto"
                 Si( nValueIn es mayor a MAX_MONEY)
retornar error "el total de txinn es demasiado alto"


Siendo MAX MONEY Los 21 Millones de bitcoins

Code:
static const int64 MAX_MONEY = 21000000 * COIN;

Por lo que con este FIX no podrías hacer un ataque de este tipo nuevamente, pero por en consenso los nodos y el mismo software desecharían la transacción como anómala

source: https://github.com/bitcoin/bitcoin/commit/d4c6b90ca3f9b47adb1b2724a0c3514f80635c84#diff-118fcbaaba162ba17933c7893247df3aR1013