This commit is contained in:
Josh Harvey 2017-03-16 17:32:57 +02:00
parent d78eefff90
commit 134a016bbd
2 changed files with 15 additions and 14 deletions

View file

@ -2,5 +2,5 @@ const BigNumber = require('bignumber.js')
BigNumber.config({ROUNDING_MODE: BigNumber.ROUND_HALF_EVEN})
function BN (s) { return new BigNumber(s) }
function BN (s, radix) { return new BigNumber(s, radix) }
module.exports = BN

View file

@ -1,9 +1,9 @@
const uuid = require('uuid')
const _ = require('lodash/fp')
const BigNumber = require('bignumber.js')
const argv = require('minimist')(process.argv.slice(2))
const crypto = require('crypto')
const BN = require('./bn')
const dbm = require('./postgresql_interface')
const db = require('./db')
const logger = require('./logger')
@ -36,18 +36,19 @@ function plugins (settings, deviceId) {
const cryptoCodes = config.cryptoCurrencies
const cashOut = config.cashOutEnabled
const cashInCommission = new BigNumber(config.cashInCommission).div(100).plus(1)
const cashOutCommission = cashOut && new BigNumber(config.cashOutCommission).div(100).plus(1)
const cashInCommission = BN(1).minus(BN(config.cashInCommission).div(100))
const cashOutCommission = cashOut && BN(1).plus(BN(config.cashOutCommission).div(100))
const rates = {}
console.log('DEBUG444: %j', tickers)
console.log('DEBUG445: %j', [config.cashOutCommission, cashOutCommission])
cryptoCodes.forEach((cryptoCode, i) => {
const rateRec = tickers[i]
if (Date.now() - rateRec.timestamp > STALE_TICKER) return logger.warn('Stale rate for ' + cryptoCode)
const rate = rateRec.rates
rates[cryptoCode] = {
cashIn: rate.ask.times(cashInCommission),
cashIn: rate.ask.div(cashInCommission),
cashOut: cashOut ? rate.bid.div(cashOutCommission) : undefined
}
})
@ -203,22 +204,22 @@ function plugins (settings, deviceId) {
])
.then(([rates, balanceRec]) => {
const rawRate = rates.rates.ask
const commission = (new BigNumber(config.cashInCommission).div(100)).plus(1)
const cashInCommission = BN(1).minus(BN(config.cashInCommission).div(100))
const balance = balanceRec.balance
if (!rawRate || !balance) return null
// The rate is actually our commission times real rate.
const rate = rawRate.times(commission)
const rate = rawRate.div(cashInCommission)
// `lowBalanceMargin` is our safety net. It's a number > 1, and we divide
// all our balances by it to provide a safety margin.
const lowBalanceMargin = (new BigNumber(config.lowBalanceMargin).div(100)).plus(1)
const lowBalanceMargin = (BN(config.lowBalanceMargin).div(100)).plus(1)
const unitScale = new BigNumber(10).pow(coins[cryptoCode].unitScale)
const fiatTransferBalance = balance.div(unitScale).times(rate).div(lowBalanceMargin)
const unitScale = BN(10).pow(coins[cryptoCode].unitScale)
const fiatTransferBalance = balance.mul(rate.div(unitScale)).div(lowBalanceMargin)
return {timestamp: balanceRec.timestamp, balance: fiatTransferBalance.round(3).toNumber()}
console.log('DEBUG444: %s', fiatTransferBalance)
return {timestamp: balanceRec.timestamp, balance: fiatTransferBalance.truncated().toString()}
})
}
@ -308,7 +309,7 @@ function plugins (settings, deviceId) {
if (filtered.length === 0) return null
const cryptoAtoms = filtered
.reduce((prev, current) => prev.plus(current.cryptoAtoms), new BigNumber(0))
.reduce((prev, current) => prev.plus(current.cryptoAtoms), BN(0))
const timestamp = filtered.map(r => r.timestamp).reduce((acc, r) => Math.max(acc, r), 0)
@ -425,7 +426,7 @@ function plugins (settings, deviceId) {
}
function randomCode () {
return new BigNumber(crypto.randomBytes(3).toString('hex'), 16).shift(-6).toFixed(6).slice(-6)
return BN(crypto.randomBytes(3).toString('hex'), 16).shift(-6).toFixed(6).slice(-6)
}
function getPhoneCode (phone) {