no satoshi rounding, this should be done in lamassu-machine

This commit is contained in:
Josh Harvey 2015-05-07 14:36:14 -04:00
parent 59ea29646d
commit 280fe0d6e8

View file

@ -180,36 +180,13 @@ function billsAndTxs(client, session, cb) {
}); });
} }
// TODO: these should broken out to a common library, they are used by both
// lamassu-machine and lamassu-server and need to stay in sync.
function bitcoinFractionalDigits(amount) {
var log = Math.floor(Math.log(amount) / Math.log(10));
if (log < -8) log = -8;
return (log > 0) ? 2 : 2 - log;
}
function truncateBitcoins(bitcoins) {
if (bitcoins < 0) logger.error('Negative amount in truncateBitcoins');
var decimalDigits = bitcoinFractionalDigits(bitcoins);
var adjuster = Math.pow(10, decimalDigits);
return (Math.round(bitcoins * adjuster) / adjuster);
}
function truncateSatoshis(satoshis) {
var bitcoins = satoshis / SATOSHI_FACTOR;
var truncated = truncateBitcoins(bitcoins);
return Math.round(truncated * SATOSHI_FACTOR);
}
// END TODO
function computeSendAmount(tx, totals) { function computeSendAmount(tx, totals) {
var fiatRemaining = (tx.fiat || totals.billsFiat) - totals.txFiat; var fiatRemaining = (tx.fiat || totals.billsFiat) - totals.txFiat;
var satoshisRemaining = (tx.satoshis || totals.billsSatoshis) - var satoshisRemaining = (tx.satoshis || totals.billsSatoshis) -
totals.txSatoshis; totals.txSatoshis;
var result = { var result = {
fiat: fiatRemaining, fiat: fiatRemaining,
satoshis: truncateSatoshis(satoshisRemaining) satoshis: satoshisRemaining
}; };
if (result.fiat < 0 || result.satoshis < 0) { if (result.fiat < 0 || result.satoshis < 0) {
logger.warn({tx: tx, totals: totals, result: result}, logger.warn({tx: tx, totals: totals, result: result},