WIPP
This commit is contained in:
parent
d78eefff90
commit
134a016bbd
2 changed files with 15 additions and 14 deletions
|
|
@ -2,5 +2,5 @@ const BigNumber = require('bignumber.js')
|
||||||
|
|
||||||
BigNumber.config({ROUNDING_MODE: BigNumber.ROUND_HALF_EVEN})
|
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
|
module.exports = BN
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
const uuid = require('uuid')
|
const uuid = require('uuid')
|
||||||
const _ = require('lodash/fp')
|
const _ = require('lodash/fp')
|
||||||
const BigNumber = require('bignumber.js')
|
|
||||||
const argv = require('minimist')(process.argv.slice(2))
|
const argv = require('minimist')(process.argv.slice(2))
|
||||||
const crypto = require('crypto')
|
const crypto = require('crypto')
|
||||||
|
|
||||||
|
const BN = require('./bn')
|
||||||
const dbm = require('./postgresql_interface')
|
const dbm = require('./postgresql_interface')
|
||||||
const db = require('./db')
|
const db = require('./db')
|
||||||
const logger = require('./logger')
|
const logger = require('./logger')
|
||||||
|
|
@ -36,18 +36,19 @@ function plugins (settings, deviceId) {
|
||||||
const cryptoCodes = config.cryptoCurrencies
|
const cryptoCodes = config.cryptoCurrencies
|
||||||
const cashOut = config.cashOutEnabled
|
const cashOut = config.cashOutEnabled
|
||||||
|
|
||||||
const cashInCommission = new BigNumber(config.cashInCommission).div(100).plus(1)
|
const cashInCommission = BN(1).minus(BN(config.cashInCommission).div(100))
|
||||||
const cashOutCommission = cashOut && new BigNumber(config.cashOutCommission).div(100).plus(1)
|
const cashOutCommission = cashOut && BN(1).plus(BN(config.cashOutCommission).div(100))
|
||||||
|
|
||||||
const rates = {}
|
const rates = {}
|
||||||
|
|
||||||
console.log('DEBUG444: %j', tickers)
|
console.log('DEBUG444: %j', tickers)
|
||||||
|
console.log('DEBUG445: %j', [config.cashOutCommission, cashOutCommission])
|
||||||
cryptoCodes.forEach((cryptoCode, i) => {
|
cryptoCodes.forEach((cryptoCode, i) => {
|
||||||
const rateRec = tickers[i]
|
const rateRec = tickers[i]
|
||||||
if (Date.now() - rateRec.timestamp > STALE_TICKER) return logger.warn('Stale rate for ' + cryptoCode)
|
if (Date.now() - rateRec.timestamp > STALE_TICKER) return logger.warn('Stale rate for ' + cryptoCode)
|
||||||
const rate = rateRec.rates
|
const rate = rateRec.rates
|
||||||
rates[cryptoCode] = {
|
rates[cryptoCode] = {
|
||||||
cashIn: rate.ask.times(cashInCommission),
|
cashIn: rate.ask.div(cashInCommission),
|
||||||
cashOut: cashOut ? rate.bid.div(cashOutCommission) : undefined
|
cashOut: cashOut ? rate.bid.div(cashOutCommission) : undefined
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
@ -203,22 +204,22 @@ function plugins (settings, deviceId) {
|
||||||
])
|
])
|
||||||
.then(([rates, balanceRec]) => {
|
.then(([rates, balanceRec]) => {
|
||||||
const rawRate = rates.rates.ask
|
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
|
const balance = balanceRec.balance
|
||||||
|
|
||||||
if (!rawRate || !balance) return null
|
if (!rawRate || !balance) return null
|
||||||
|
|
||||||
// The rate is actually our commission times real rate.
|
const rate = rawRate.div(cashInCommission)
|
||||||
const rate = rawRate.times(commission)
|
|
||||||
|
|
||||||
// `lowBalanceMargin` is our safety net. It's a number > 1, and we divide
|
// `lowBalanceMargin` is our safety net. It's a number > 1, and we divide
|
||||||
// all our balances by it to provide a safety margin.
|
// 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 unitScale = BN(10).pow(coins[cryptoCode].unitScale)
|
||||||
const fiatTransferBalance = balance.div(unitScale).times(rate).div(lowBalanceMargin)
|
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
|
if (filtered.length === 0) return null
|
||||||
|
|
||||||
const cryptoAtoms = filtered
|
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)
|
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 () {
|
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) {
|
function getPhoneCode (phone) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue