Too many bitcoins allowed as amount. (Issue #2401)
@ -60,7 +60,9 @@ bool BitcoinAmountField::validate()
bool valid = true;
if (amount->value() == 0.0)
valid = false;
if (valid && !BitcoinUnits::parse(currentUnit, text(), 0))
else if (!BitcoinUnits::parse(currentUnit, text(), 0))
else if (amount->value() > BitcoinUnits::maxAmount(currentUnit))
setValid(valid);
@ -63,6 +63,17 @@ qint64 BitcoinUnits::factor(int unit)
}
qint64 BitcoinUnits::maxAmount(int unit)
{
switch(unit)
case BTC: return Q_INT64_C(21000000);
case mBTC: return Q_INT64_C(21000000000);
case uBTC: return Q_INT64_C(21000000000000);
default: return 0;
int BitcoinUnits::amountDigits(int unit)
@ -38,6 +38,8 @@ public:
static QString description(int unit);
//! Number of Satoshis (1e-8) per unit
static qint64 factor(int unit);
//! Max amount per unit
static qint64 maxAmount(int unit);
//! Number of amount digits (to represent max number of coins)
static int amountDigits(int unit);
//! Number of decimals left