From 4b778badba2dbccfad9a4447267117aaabb6527a Mon Sep 17 00:00:00 2001 From: CrypticaScriptura <7396812+CrypticaScriptura@users.noreply.github.com> Date: Wed, 16 Apr 2025 09:25:49 -0400 Subject: [PATCH 1/6] chore: v10.2.0-rc.1 (#1823) --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 15fa11a7..9642cefb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "lamassu-server", - "version": "10.2.0", + "version": "10.2.0-rc.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 9eedefdc..626e6981 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "lamassu-server", "description": "bitcoin atm client server protocol module", "keywords": [], - "version": "10.2.0", + "version": "10.2.0-rc.1", "license": "./LICENSE", "author": "Lamassu (https://lamassu.is)", "dependencies": { From c85f2c8902d2d08de426e46f6a55f111ea37b8f2 Mon Sep 17 00:00:00 2001 From: Rafael Taranto Date: Wed, 16 Apr 2025 15:31:30 +0100 Subject: [PATCH 2/6] fix: build process for ui --- build/ci.Dockerfile | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/build/ci.Dockerfile b/build/ci.Dockerfile index 8eeaf0a6..21e77319 100644 --- a/build/ci.Dockerfile +++ b/build/ci.Dockerfile @@ -1,3 +1,14 @@ +FROM node:22-alpine AS build-ui +RUN apk add --no-cache npm git curl build-base python3 + +COPY ["new-lamassu-admin/package.json", "new-lamassu-admin/package-lock.json", "./"] + +RUN npm version --allow-same-version --git-tag-version false --commit-hooks false 1.0.0 +RUN npm install + +COPY new-lamassu-admin/ ./ +RUN npm run build + FROM ubuntu:20.04 as base ARG VERSION @@ -25,9 +36,6 @@ RUN npm version --allow-same-version --git-tag-version false --commit-hooks fals RUN npm install --production COPY . ./ - -RUN cd new-lamassu-admin && npm install && npm run build -RUN mv new-lamassu-admin/build public/ -RUN rm -rf new-lamassu-admin/node_modules +COPY --from=build-ui /build /lamassu-server/public RUN cd .. && tar -zcvf lamassu-server.tar.gz ./lamassu-server From 8b1cbce86f9b149dfe6f07404c8f0bf436ef4b8f Mon Sep 17 00:00:00 2001 From: Rafael Taranto Date: Thu, 17 Apr 2025 07:32:19 +0100 Subject: [PATCH 3/6] fix: missing comma --- lib/blockchain/common.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/blockchain/common.js b/lib/blockchain/common.js index 97a08ab8..169deb45 100644 --- a/lib/blockchain/common.js +++ b/lib/blockchain/common.js @@ -50,7 +50,7 @@ const BINARIES = { defaultUrlHash: 'd89c2afd78183f3ee815adcccdff02098be0c982633889e7b1e9c9656fbef219', defaultDir: 'dashcore-18.1.0/bin', url: 'https://github.com/dashpay/dash/releases/download/v21.1.1/dashcore-21.1.1-x86_64-linux-gnu.tar.gz', - dir: 'dashcore-21.1.1/bin' + dir: 'dashcore-21.1.1/bin', urlHash: 'c3157d4a82a3cb7c904a68e827bd1e629854fefcc0dcaf1de4343a810a190bf5', }, LTC: { From adad60ba7c6b002c6499967eb0698d2856777362 Mon Sep 17 00:00:00 2001 From: Rafael Taranto Date: Fri, 18 Apr 2025 11:16:21 +0100 Subject: [PATCH 4/6] fix: mock exchange loading --- lib/exchange.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/exchange.js b/lib/exchange.js index ee325b2f..00316eae 100644 --- a/lib/exchange.js +++ b/lib/exchange.js @@ -16,6 +16,7 @@ function fetchExchange (settings, cryptoCode) { return Promise.resolve() .then(() => { const exchangeName = lookupExchange(settings, cryptoCode) + if (exchangeName === 'mock-exchange') return { exchangeName, account: { currencyMarket: 'EUR' } } if (!exchangeName) throw new Error('No exchange set') const account = settings.accounts[exchangeName] From 1a109465ea473dbddc026cf4c9e05b0594e44f91 Mon Sep 17 00:00:00 2001 From: Rafael Taranto Date: Fri, 18 Apr 2025 12:22:33 +0100 Subject: [PATCH 5/6] fix: trade errors out when no exchange is set --- lib/commission-math.js | 1 - lib/plugins.js | 51 ++++++++++++++++++++---------------------- 2 files changed, 24 insertions(+), 28 deletions(-) diff --git a/lib/commission-math.js b/lib/commission-math.js index c29a6af9..61103f2d 100644 --- a/lib/commission-math.js +++ b/lib/commission-math.js @@ -35,7 +35,6 @@ function getDiscountRate (discount, commission) { } module.exports = { - truncateCrypto, fiatToCrypto, getDiscountRate } diff --git a/lib/plugins.js b/lib/plugins.js index 9c9d1a29..0c71a515 100644 --- a/lib/plugins.js +++ b/lib/plugins.js @@ -467,6 +467,15 @@ function plugins (settings, deviceId) { * Trader functions */ + function toMarketString (fiatCode, cryptoCode) { + return [fiatCode, cryptoCode].join('-') + } + + function fromMarketString (market) { + const [fiatCode, cryptoCode] = market.split('-') + return { fiatCode, cryptoCode } + } + function buy (rec, tx) { return buyAndSell(rec, true, tx) } @@ -477,14 +486,14 @@ function plugins (settings, deviceId) { function buyAndSell (rec, doBuy, tx) { const cryptoCode = rec.cryptoCode + if (!exchange.active(settings, cryptoCode)) return + return exchange.fetchExchange(settings, cryptoCode) .then(_exchange => { const fiatCode = _exchange.account.currencyMarket const cryptoAtoms = doBuy ? commissionMath.fiatToCrypto(tx, rec, deviceId, settings.config) : rec.cryptoAtoms.negated() - const market = [fiatCode, cryptoCode].join('') - - if (!exchange.active(settings, cryptoCode)) return + const market = toMarketString(fiatCode, cryptoCode) const direction = doBuy ? 'cashIn' : 'cashOut' const internalTxId = tx ? tx.id : rec.id @@ -502,7 +511,7 @@ function plugins (settings, deviceId) { } function consolidateTrades (cryptoCode, fiatCode) { - const market = [fiatCode, cryptoCode].join('') + const market = toMarketString(fiatCode, cryptoCode) const marketTradesQueues = tradesQueues[market] if (!marketTradesQueues || marketTradesQueues.length === 0) return null @@ -550,35 +559,23 @@ function plugins (settings, deviceId) { } function executeTrades () { - return machineLoader.getMachines() - .then(devices => { - const deviceIds = devices.map(device => device.deviceId) - const lists = deviceIds.map(deviceId => { - const localeConfig = configManager.getLocale(deviceId, settings.config) - const cryptoCodes = localeConfig.cryptoCurrencies + const pairs = _.map(fromMarketString)(_.keys(tradesQueues)) + pairs.forEach(({ fiatCode, cryptoCode }) => { + try { + executeTradesForMarket(settings, fiatCode, cryptoCode) + } catch (err) { + logger.error(err) + } + }) - return Promise.all(cryptoCodes.map(cryptoCode => { - return exchange.fetchExchange(settings, cryptoCode) - .then(exchange => ({ - fiatCode: exchange.account.currencyMarket, - cryptoCode - })) - })) - }) - - return Promise.all(lists) - }) - .then(lists => { - return Promise.all(_.uniq(_.flatten(lists)) - .map(r => executeTradesForMarket(settings, r.fiatCode, r.cryptoCode))) - }) - .catch(logger.error) + // Poller expects a promise + return Promise.resolve() } function executeTradesForMarket (settings, fiatCode, cryptoCode) { if (!exchange.active(settings, cryptoCode)) return - const market = [fiatCode, cryptoCode].join('') + const market = toMarketString(fiatCode, cryptoCode) const tradeEntry = consolidateTrades(cryptoCode, fiatCode) if (tradeEntry === null || tradeEntry.cryptoAtoms.eq(0)) return From 5cee97858c5ceec46f7e517df7f3b474474d84a2 Mon Sep 17 00:00:00 2001 From: CrypticaScriptura <7396812+CrypticaScriptura@users.noreply.github.com> Date: Tue, 22 Apr 2025 16:02:13 -0400 Subject: [PATCH 6/6] v10.2.0-rc.2 (#1832) --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9642cefb..fce7fc39 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "lamassu-server", - "version": "10.2.0-rc.1", + "version": "10.2.0-rc.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 626e6981..91672bb1 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "lamassu-server", "description": "bitcoin atm client server protocol module", "keywords": [], - "version": "10.2.0-rc.1", + "version": "10.2.0-rc.2", "license": "./LICENSE", "author": "Lamassu (https://lamassu.is)", "dependencies": {