diff --git a/lib/blockchain/common.js b/lib/blockchain/common.js index 8ddc546e..d3da66c8 100644 --- a/lib/blockchain/common.js +++ b/lib/blockchain/common.js @@ -29,12 +29,12 @@ const BINARIES = { dir: 'bitcoin-23.1/bin' }, ETH: { - url: 'https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.11.5-a38f4108.tar.gz', - dir: 'geth-linux-amd64-1.11.5-a38f4108' + url: 'https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.11.6-ea9e62ca.tar.gz', + dir: 'geth-linux-amd64-1.11.6-ea9e62ca' }, ZEC: { - url: 'https://z.cash/downloads/zcash-5.4.2-linux64-debian-bullseye.tar.gz', - dir: 'zcash-5.4.2/bin' + url: 'https://z.cash/downloads/zcash-5.5.0-linux64-debian-bullseye.tar.gz', + dir: 'zcash-5.5.0/bin' }, DASH: { url: 'https://github.com/dashpay/dash/releases/download/v18.1.0/dashcore-18.1.0-x86_64-linux-gnu.tar.gz', @@ -52,8 +52,8 @@ const BINARIES = { files: [['bitcoind', 'bitcoincashd'], ['bitcoin-cli', 'bitcoincash-cli']] }, XMR: { - url: 'https://downloads.getmonero.org/cli/monero-linux-x64-v0.18.2.0.tar.bz2', - dir: 'monero-x86_64-linux-gnu-v0.18.2.0', + url: 'https://downloads.getmonero.org/cli/monero-linux-x64-v0.18.2.2.tar.bz2', + dir: 'monero-x86_64-linux-gnu-v0.18.2.2', files: [['monerod', 'monerod'], ['monero-wallet-rpc', 'monero-wallet-rpc']] } } diff --git a/lib/cash-in/cash-in-tx.js b/lib/cash-in/cash-in-tx.js index 6e3c0ae2..0e7b71ef 100644 --- a/lib/cash-in/cash-in-tx.js +++ b/lib/cash-in/cash-in-tx.js @@ -25,7 +25,7 @@ case else 'Pending' end` -module.exports = {post, monitorPending, cancel, PENDING_INTERVAL, TRANSACTION_STATES} +module.exports = { post, monitorPending, cancel, PENDING_INTERVAL, TRANSACTION_STATES } function post (machineTx, pi) { logger.silly('Updating cashin tx:', machineTx) @@ -51,12 +51,12 @@ function post (machineTx, pi) { } return postProcess(r, pi, blacklisted, addressReuse, walletScore) }) + .then(changes => _.set('walletScore', _.isNil(walletScore) ? null : walletScore.score, changes)) .then(changes => cashInLow.update(db, updatedTx, changes)) .then(tx => _.set('bills', machineTx.bills, tx)) .then(tx => _.set('blacklisted', blacklisted, tx)) .then(tx => _.set('addressReuse', addressReuse, tx)) .then(tx => _.set('validWalletScore', _.isNil(walletScore) ? true : walletScore.isValid, tx)) - .then(tx => _.set('walletScore', _.isNil(walletScore) ? null : walletScore.score, tx)) }) } @@ -180,9 +180,9 @@ function doesTxReuseAddress (tx) { } function getWalletScore (tx, pi) { - pi.isWalletScoringEnabled(tx) + return pi.isWalletScoringEnabled(tx) .then(isEnabled => { - if(!isEnabled) return null + if (!isEnabled) return null if (!tx.fiat || tx.fiat.isZero()) { return pi.rateWallet(tx.cryptoCode, tx.toAddress) } diff --git a/lib/cash-out/cash-out-tx.js b/lib/cash-out/cash-out-tx.js index b36135db..dd56aed4 100644 --- a/lib/cash-out/cash-out-tx.js +++ b/lib/cash-out/cash-out-tx.js @@ -115,22 +115,23 @@ function processTxStatus (tx, settings) { } function getWalletScore (tx, pi) { - const rejectEmpty = message => x => _.isNil(x) || _.isEmpty(x) ? Promise.reject({ message }) : x - const statuses = ['published', 'authorized', 'confirmed'] + const rejectEmpty = message => x => _.isNil(x) || _.isEmpty(x) ? Promise.reject(new Error(message)) : x + const statuses = ['published', 'authorized', 'confirmed', 'insufficientFunds'] - if (_.includes(tx.status, statuses) && _.isNil(tx.walletScore)) + if (!_.includes(tx.status, statuses) || !_.isNil(tx.walletScore)) { return tx + } - // Transaction shows up on the blockchain, we can request the sender address + // Transaction shows up on the blockchain, we can request the sender address return pi.isWalletScoringEnabled(tx) .then(isEnabled => { if (!isEnabled) return tx return pi.getTransactionHash(tx) - .then(rejectEmpty("No transaction hashes")) + .then(rejectEmpty('No transaction hashes')) .then(txHashes => pi.getInputAddresses(tx, txHashes)) - .then(rejectEmpty("No input addresses")) + .then(rejectEmpty('No input addresses')) .then(addresses => Promise.all(_.map(it => pi.rateWallet(tx.cryptoCode, it), addresses))) - .then(rejectEmpty("No score ratings")) + .then(rejectEmpty('No score ratings')) .then(_.maxBy(_.get(['score']))) .then(highestScore => // Conservatively assign the highest risk of all input addresses to the risk of this transaction diff --git a/lib/notifier/codes.js b/lib/notifier/codes.js index 10a68be4..105437e8 100644 --- a/lib/notifier/codes.js +++ b/lib/notifier/codes.js @@ -18,7 +18,7 @@ const CODES_DISPLAY = { CASHBOX_REMOVED: 'Cashbox removed' } -const NETWORK_DOWN_TIME = 1 * T.minute +const NETWORK_DOWN_TIME = 3 * T.minute const STALE_STATE = 7 * T.minute const ALERT_SEND_INTERVAL = T.hour diff --git a/package-lock.json b/package-lock.json index 7d5ed8a7..4fb99678 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "lamassu-server", - "version": "8.1.0-beta.3", + "version": "8.1.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 4dd998ef..b8679326 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "lamassu-server", "description": "bitcoin atm client server protocol module", "keywords": [], - "version": "8.1.0-beta.3", + "version": "8.1.0", "license": "Unlicense", "author": "Lamassu (https://lamassu.is)", "dependencies": {