From 9a43aea6eee43b6b10a29d0038d89b4f32861e37 Mon Sep 17 00:00:00 2001 From: bernd2022 <104787072+bernd2022@users.noreply.github.com> Date: Fri, 27 Feb 2026 09:23:16 +0100 Subject: [PATCH 1/3] fix: stabilize Firo node config to prevent RPC deadlocks (#3282) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Restrict to IPv4-only to eliminate hanging IPv6 connections, reduce max peer connections (125→40), increase RPC work queue (16→32), and lower dbcache (1024→512) for more frequent flushes. --- infrastructure/config/firo/firo.conf | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/infrastructure/config/firo/firo.conf b/infrastructure/config/firo/firo.conf index 5f3e0c79a9..f5f85522f3 100644 --- a/infrastructure/config/firo/firo.conf +++ b/infrastructure/config/firo/firo.conf @@ -20,7 +20,11 @@ addressindex=0 timestampindex=0 spentindex=0 +# Network +onlynet=ipv4 + # Performance -dbcache=1024 -maxconnections=125 +dbcache=512 +maxconnections=40 rpcthreads=8 +rpcworkqueue=32 From f3d7bcb1cf75d661cf239b8179a1e2a91aada8b9 Mon Sep 17 00:00:00 2001 From: David May <85513542+davidleomay@users.noreply.github.com> Date: Fri, 27 Feb 2026 10:28:16 +0100 Subject: [PATCH 2/3] fix: save fallback remittance info to fiat output (#3285) --- .../supporting/fiat-output/fiat-output-job.service.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/subdomains/supporting/fiat-output/fiat-output-job.service.ts b/src/subdomains/supporting/fiat-output/fiat-output-job.service.ts index a0a3494d16..fb90d6cd98 100644 --- a/src/subdomains/supporting/fiat-output/fiat-output-job.service.ts +++ b/src/subdomains/supporting/fiat-output/fiat-output-job.service.ts @@ -379,6 +379,7 @@ export class FiatOutputJobService { try { const msgId = `YAPEAL-${entity.id}-${Date.now()}`; const endToEndId = entity.endToEndId ?? `E2E-${entity.id}`; + const remittanceInfo = entity.remittanceInfo ?? `DFX Payout ${entity.id}`; const payment: Pain001Payment = { messageId: msgId, @@ -400,13 +401,14 @@ export class FiatOutputJobService { iban: entity.iban, bic: entity.bic, }, - remittanceInfo: entity.remittanceInfo, + remittanceInfo, }; await this.yapealService.sendPayment(payment); await this.fiatOutputRepo.update(entity.id, { yapealMsgId: msgId, endToEndId, + remittanceInfo, isTransmittedDate: new Date(), isApprovedDate: new Date(), ...(entity.info?.startsWith('YAPEAL error') && { info: null }), @@ -440,6 +442,8 @@ export class FiatOutputJobService { for (const entity of entities) { try { + const remittanceInfo = entity.remittanceInfo ?? `DFX Payout ${entity.id}`; + // create recipient const recipient = await this.olkypayService.getOrCreateRecipient({ iban: entity.iban, @@ -455,7 +459,7 @@ export class FiatOutputJobService { // send payment order const orderResponse = await this.olkypayService.createPaymentOrder({ clientId: +recipient.olkyPayerId, - comment: entity.remittanceInfo ?? `DFX Payout ${entity.id}`, + comment: remittanceInfo, currencyCode: entity.currency, executionDate: Util.isoDate(new Date()), externalId: `${entity.id}`, @@ -467,6 +471,7 @@ export class FiatOutputJobService { await this.fiatOutputRepo.update(entity.id, { olkyOrderId: orderResponse.id, isTransmittedDate: new Date(), + remittanceInfo, ...(entity.info?.startsWith('OLKYPAY error') && { info: null }), }); From 5cf0b2fd2f45b25d4e7986a894623a28e4d82919 Mon Sep 17 00:00:00 2001 From: bernd2022 <104787072+bernd2022@users.noreply.github.com> Date: Fri, 27 Feb 2026 10:36:56 +0100 Subject: [PATCH 3/3] feat: add RangeKeeper container infrastructure (#3284) - Add Bicep parameter files for RangeKeeper (dev + prd) - Change containerCPU type from int to string to support decimal values - Add RangeKeeper to deploy.sh instance options - Update README with RangeKeeper documentation --- .../bicep/container-groups/README.md | 6 +- .../bicep/container-groups/deploy.sh | 3 +- .../bicep/container-groups/main.bicep | 4 +- .../modules/containerGroup.bicep | 4 +- .../parameters/dev-hb-deps-usdt.json | 76 +++++++++---------- .../parameters/dev-hb-deuro-usdt.json | 76 +++++++++---------- .../container-groups/parameters/dev-rk.json | 38 ++++++++++ .../parameters/prd-hb-deps-usdt.json | 76 +++++++++---------- .../parameters/prd-hb-deuro-usdt.json | 76 +++++++++---------- .../container-groups/parameters/prd-rk.json | 38 ++++++++++ 10 files changed, 239 insertions(+), 158 deletions(-) mode change 100644 => 100755 infrastructure/bicep/container-groups/deploy.sh create mode 100644 infrastructure/bicep/container-groups/parameters/dev-rk.json create mode 100644 infrastructure/bicep/container-groups/parameters/prd-rk.json diff --git a/infrastructure/bicep/container-groups/README.md b/infrastructure/bicep/container-groups/README.md index f5657828d7..11c498676c 100644 --- a/infrastructure/bicep/container-groups/README.md +++ b/infrastructure/bicep/container-groups/README.md @@ -12,10 +12,14 @@ Container Instances are: - hb-deuro-usdt: Hummingbot (dEURO/USDT) - hb-deps-usdt: Hummingbot (dEPS/USDT) +- rk: RangeKeeper Liquidity Bot ### Fileshare -Each Container Instance uses its own fileshare, which is mounted to `/mnt/hummingbot`. +Each Container Instance uses its own fileshare: + +- Hummingbot instances: mounted to `/mnt/hummingbot` +- RangeKeeper: mounted to `/app/data` (contains `.env` with sensitive config and `state.json` for persistence) ### Entrypoint diff --git a/infrastructure/bicep/container-groups/deploy.sh b/infrastructure/bicep/container-groups/deploy.sh old mode 100644 new mode 100755 index aa7f0b45be..e811415cca --- a/infrastructure/bicep/container-groups/deploy.sh +++ b/infrastructure/bicep/container-groups/deploy.sh @@ -10,7 +10,8 @@ environmentOptions=("loc" "dev" "prd") # "hb-deuro-usdt": Hummingbot (dEURO/USDT) # "hb-deps-usdt": Hummingbot (dEPS/USDT) -instanceNameOptions=("hb-deuro-usdt" "hb-deps-usdt") +# "rk": RangeKeeper Liquidity Bot +instanceNameOptions=("hb-deuro-usdt" "hb-deps-usdt" "rk") # --- ARGUMENTS --- # DOCKER_USERNAME= diff --git a/infrastructure/bicep/container-groups/main.bicep b/infrastructure/bicep/container-groups/main.bicep index 28630d812f..19fd86b3ed 100644 --- a/infrastructure/bicep/container-groups/main.bicep +++ b/infrastructure/bicep/container-groups/main.bicep @@ -20,8 +20,8 @@ param containerEnv array @description('Command of the container') param containerCommand array -@description('Container CPU resource') -param containerCPU int +@description('Container CPU resource (supports decimal, e.g. 0.5)') +param containerCPU string @description('Container memory resource') param containerMemory int diff --git a/infrastructure/bicep/container-groups/modules/containerGroup.bicep b/infrastructure/bicep/container-groups/modules/containerGroup.bicep index 6f24316d2a..3e89e17202 100644 --- a/infrastructure/bicep/container-groups/modules/containerGroup.bicep +++ b/infrastructure/bicep/container-groups/modules/containerGroup.bicep @@ -21,7 +21,7 @@ param containerEnv array param containerCommand array @description('Container CPU resource') -param containerCPU int +param containerCPU string @description('Container memory resource') param containerMemory int @@ -66,7 +66,7 @@ resource containerGroup 'Microsoft.ContainerInstance/containerGroups@2023-05-01' image: containerImage resources: { requests: { - cpu: containerCPU + cpu: json(containerCPU) memoryInGB: containerMemory } } diff --git a/infrastructure/bicep/container-groups/parameters/dev-hb-deps-usdt.json b/infrastructure/bicep/container-groups/parameters/dev-hb-deps-usdt.json index df1dd08608..8a6d68cc45 100644 --- a/infrastructure/bicep/container-groups/parameters/dev-hb-deps-usdt.json +++ b/infrastructure/bicep/container-groups/parameters/dev-hb-deps-usdt.json @@ -1,42 +1,42 @@ { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "fileShareQuota": { - "value": 100 - }, - "containerImage": { - "value": "dfxswiss/hummingbot:beta" - }, - "containerVolumeMounts": { - "value": [ - { - "name": "volume", - "mountPath": "/mnt/hummingbot", - "readOnly": false - } - ] - }, - "containerCPU": { - "value": 0.5 - }, - "containerMemory": { - "value": 1 - }, - "containerEnv": { - "value": [ - { - "name": "BOT_DIR", - "value": "deps-usdt-dev" - }, - { - "name": "STRATEGY_FILE", - "value": "deps-usdt-conf_pure_mm.yml" - } - ] + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "fileShareQuota": { + "value": 100 + }, + "containerImage": { + "value": "dfxswiss/hummingbot:beta" + }, + "containerVolumeMounts": { + "value": [ + { + "name": "volume", + "mountPath": "/mnt/hummingbot", + "readOnly": false + } + ] + }, + "containerCPU": { + "value": "0.5" + }, + "containerMemory": { + "value": 1 + }, + "containerEnv": { + "value": [ + { + "name": "BOT_DIR", + "value": "deps-usdt-dev" }, - "containerCommand": { - "value": [] + { + "name": "STRATEGY_FILE", + "value": "deps-usdt-conf_pure_mm.yml" } + ] + }, + "containerCommand": { + "value": [] } -} \ No newline at end of file + } +} diff --git a/infrastructure/bicep/container-groups/parameters/dev-hb-deuro-usdt.json b/infrastructure/bicep/container-groups/parameters/dev-hb-deuro-usdt.json index 76abcf5d9b..7263618b64 100644 --- a/infrastructure/bicep/container-groups/parameters/dev-hb-deuro-usdt.json +++ b/infrastructure/bicep/container-groups/parameters/dev-hb-deuro-usdt.json @@ -1,42 +1,42 @@ { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "fileShareQuota": { - "value": 100 - }, - "containerImage": { - "value": "dfxswiss/hummingbot:beta" - }, - "containerVolumeMounts": { - "value": [ - { - "name": "volume", - "mountPath": "/mnt/hummingbot", - "readOnly": false - } - ] - }, - "containerCPU": { - "value": 0.5 - }, - "containerMemory": { - "value": 1 - }, - "containerEnv": { - "value": [ - { - "name": "BOT_DIR", - "value": "deuro-usdt-dev" - }, - { - "name": "STRATEGY_FILE", - "value": "deuro-usdt-conf_pure_mm.yml" - } - ] + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "fileShareQuota": { + "value": 100 + }, + "containerImage": { + "value": "dfxswiss/hummingbot:beta" + }, + "containerVolumeMounts": { + "value": [ + { + "name": "volume", + "mountPath": "/mnt/hummingbot", + "readOnly": false + } + ] + }, + "containerCPU": { + "value": "0.5" + }, + "containerMemory": { + "value": 1 + }, + "containerEnv": { + "value": [ + { + "name": "BOT_DIR", + "value": "deuro-usdt-dev" }, - "containerCommand": { - "value": [] + { + "name": "STRATEGY_FILE", + "value": "deuro-usdt-conf_pure_mm.yml" } + ] + }, + "containerCommand": { + "value": [] } -} \ No newline at end of file + } +} diff --git a/infrastructure/bicep/container-groups/parameters/dev-rk.json b/infrastructure/bicep/container-groups/parameters/dev-rk.json new file mode 100644 index 0000000000..09f63e62b4 --- /dev/null +++ b/infrastructure/bicep/container-groups/parameters/dev-rk.json @@ -0,0 +1,38 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "fileShareQuota": { + "value": 100 + }, + "containerImage": { + "value": "dfxswiss/rangekeeper:beta" + }, + "containerVolumeMounts": { + "value": [ + { + "name": "volume", + "mountPath": "/app/data", + "readOnly": false + } + ] + }, + "containerCPU": { + "value": "0.5" + }, + "containerMemory": { + "value": 1 + }, + "containerEnv": { + "value": [ + { + "name": "DEPLOY_INFO", + "value": "" + } + ] + }, + "containerCommand": { + "value": [] + } + } +} diff --git a/infrastructure/bicep/container-groups/parameters/prd-hb-deps-usdt.json b/infrastructure/bicep/container-groups/parameters/prd-hb-deps-usdt.json index 03ddc278ee..ffc29221c6 100644 --- a/infrastructure/bicep/container-groups/parameters/prd-hb-deps-usdt.json +++ b/infrastructure/bicep/container-groups/parameters/prd-hb-deps-usdt.json @@ -1,42 +1,42 @@ { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "fileShareQuota": { - "value": 100 - }, - "containerImage": { - "value": "dfxswiss/hummingbot:latest" - }, - "containerVolumeMounts": { - "value": [ - { - "name": "volume", - "mountPath": "/mnt/hummingbot", - "readOnly": false - } - ] - }, - "containerCPU": { - "value": 0.5 - }, - "containerMemory": { - "value": 1 - }, - "containerEnv": { - "value": [ - { - "name": "BOT_DIR", - "value": "deps-usdt" - }, - { - "name": "STRATEGY_FILE", - "value": "deps-usdt-conf_pure_mm.yml" - } - ] + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "fileShareQuota": { + "value": 100 + }, + "containerImage": { + "value": "dfxswiss/hummingbot:latest" + }, + "containerVolumeMounts": { + "value": [ + { + "name": "volume", + "mountPath": "/mnt/hummingbot", + "readOnly": false + } + ] + }, + "containerCPU": { + "value": "0.5" + }, + "containerMemory": { + "value": 1 + }, + "containerEnv": { + "value": [ + { + "name": "BOT_DIR", + "value": "deps-usdt" }, - "containerCommand": { - "value": [] + { + "name": "STRATEGY_FILE", + "value": "deps-usdt-conf_pure_mm.yml" } + ] + }, + "containerCommand": { + "value": [] } -} \ No newline at end of file + } +} diff --git a/infrastructure/bicep/container-groups/parameters/prd-hb-deuro-usdt.json b/infrastructure/bicep/container-groups/parameters/prd-hb-deuro-usdt.json index 21bf293349..96f27427ad 100644 --- a/infrastructure/bicep/container-groups/parameters/prd-hb-deuro-usdt.json +++ b/infrastructure/bicep/container-groups/parameters/prd-hb-deuro-usdt.json @@ -1,42 +1,42 @@ { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "fileShareQuota": { - "value": 100 - }, - "containerImage": { - "value": "dfxswiss/hummingbot:latest" - }, - "containerVolumeMounts": { - "value": [ - { - "name": "volume", - "mountPath": "/mnt/hummingbot", - "readOnly": false - } - ] - }, - "containerCPU": { - "value": 0.5 - }, - "containerMemory": { - "value": 1 - }, - "containerEnv": { - "value": [ - { - "name": "BOT_DIR", - "value": "deuro-usdt" - }, - { - "name": "STRATEGY_FILE", - "value": "deuro-usdt-conf_pure_mm.yml" - } - ] + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "fileShareQuota": { + "value": 100 + }, + "containerImage": { + "value": "dfxswiss/hummingbot:latest" + }, + "containerVolumeMounts": { + "value": [ + { + "name": "volume", + "mountPath": "/mnt/hummingbot", + "readOnly": false + } + ] + }, + "containerCPU": { + "value": "0.5" + }, + "containerMemory": { + "value": 1 + }, + "containerEnv": { + "value": [ + { + "name": "BOT_DIR", + "value": "deuro-usdt" }, - "containerCommand": { - "value": [] + { + "name": "STRATEGY_FILE", + "value": "deuro-usdt-conf_pure_mm.yml" } + ] + }, + "containerCommand": { + "value": [] } -} \ No newline at end of file + } +} diff --git a/infrastructure/bicep/container-groups/parameters/prd-rk.json b/infrastructure/bicep/container-groups/parameters/prd-rk.json new file mode 100644 index 0000000000..3caca31ba1 --- /dev/null +++ b/infrastructure/bicep/container-groups/parameters/prd-rk.json @@ -0,0 +1,38 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "fileShareQuota": { + "value": 100 + }, + "containerImage": { + "value": "dfxswiss/rangekeeper:latest" + }, + "containerVolumeMounts": { + "value": [ + { + "name": "volume", + "mountPath": "/app/data", + "readOnly": false + } + ] + }, + "containerCPU": { + "value": "0.5" + }, + "containerMemory": { + "value": 1 + }, + "containerEnv": { + "value": [ + { + "name": "DEPLOY_INFO", + "value": "" + } + ] + }, + "containerCommand": { + "value": [] + } + } +}