From eff4d2c8cd5c8ecf040bb2e41c22b30e44226549 Mon Sep 17 00:00:00 2001 From: softsimon Date: Fri, 15 Jan 2021 22:23:32 +0700 Subject: [PATCH] Optionally support second CoreRPC instance as source for the minimum fee. --- backend/mempool-config.sample.json | 7 +++++++ backend/src/api/bitcoin/bitcoin-base.api.ts | 22 +++++++++++++++++++++ backend/src/config.ts | 16 +++++++++++++++ 3 files changed, 45 insertions(+) diff --git a/backend/mempool-config.sample.json b/backend/mempool-config.sample.json index 9b55905f4..7f10a4d14 100644 --- a/backend/mempool-config.sample.json +++ b/backend/mempool-config.sample.json @@ -22,6 +22,13 @@ "ESPLORA": { "REST_API_URL": "http://127.0.0.1:3000" }, + "CORE_RPC_MINFEE": { + "ENABLED": false, + "HOST": "127.0.0.1", + "PORT": 8332, + "USERNAME": "mempool", + "PASSWORD": "mempool" + }, "DATABASE": { "ENABLED": true, "HOST": "127.0.0.1", diff --git a/backend/src/api/bitcoin/bitcoin-base.api.ts b/backend/src/api/bitcoin/bitcoin-base.api.ts index 71e7c9093..4be018211 100644 --- a/backend/src/api/bitcoin/bitcoin-base.api.ts +++ b/backend/src/api/bitcoin/bitcoin-base.api.ts @@ -4,6 +4,7 @@ import { IBitcoinApi } from './bitcoin-api.interface'; class BitcoinBaseApi { bitcoindClient: any; + bitcoindClientMempoolInfo: any; constructor() { this.bitcoindClient = new bitcoin.Client({ @@ -13,9 +14,30 @@ class BitcoinBaseApi { pass: config.CORE_RPC.PASSWORD, timeout: 60000, }); + + if (config.CORE_RPC_MINFEE.ENABLED) { + this.bitcoindClientMempoolInfo = new bitcoin.Client({ + host: config.CORE_RPC_MINFEE.HOST, + port: config.CORE_RPC_MINFEE.PORT, + user: config.CORE_RPC_MINFEE.USERNAME, + pass: config.CORE_RPC_MINFEE.PASSWORD, + timeout: 60000, + }); + } } $getMempoolInfo(): Promise { + if (config.CORE_RPC_MINFEE.ENABLED) { + return Promise.all([ + this.bitcoindClient.getMempoolInfo(), + this.bitcoindClientMempoolInfo.getMempoolInfo() + ]).then(([mempoolInfo, secondMempoolInfo]) => { + mempoolInfo.maxmempool = secondMempoolInfo.maxmempool; + mempoolInfo.mempoolminfee = secondMempoolInfo.mempoolminfee; + mempoolInfo.minrelaytxfee = secondMempoolInfo.minrelaytxfee; + return mempoolInfo; + }); + } return this.bitcoindClient.getMempoolInfo(); } diff --git a/backend/src/config.ts b/backend/src/config.ts index 2b7367507..7c559026f 100644 --- a/backend/src/config.ts +++ b/backend/src/config.ts @@ -24,6 +24,13 @@ interface IConfig { USERNAME: string; PASSWORD: string; }; + CORE_RPC_MINFEE: { + ENABLED: boolean; + HOST: string; + PORT: number; + USERNAME: string; + PASSWORD: string; + }; DATABASE: { ENABLED: boolean; HOST: string, @@ -77,6 +84,13 @@ const defaults: IConfig = { 'USERNAME': 'mempool', 'PASSWORD': 'mempool' }, + 'CORE_RPC_MINFEE': { + 'ENABLED': false, + 'HOST': '127.0.0.1', + 'PORT': 8332, + 'USERNAME': 'mempool', + 'PASSWORD': 'mempool' + }, 'DATABASE': { 'ENABLED': true, 'HOST': 'localhost', @@ -111,6 +125,7 @@ class Config implements IConfig { ESPLORA: IConfig['ESPLORA']; ELECTRUM: IConfig['ELECTRUM']; CORE_RPC: IConfig['CORE_RPC']; + CORE_RPC_MINFEE: IConfig['CORE_RPC_MINFEE']; DATABASE: IConfig['DATABASE']; STATISTICS: IConfig['STATISTICS']; BISQ_BLOCKS: IConfig['BISQ_BLOCKS']; @@ -123,6 +138,7 @@ class Config implements IConfig { this.ESPLORA = configs.ESPLORA; this.ELECTRUM = configs.ELECTRUM; this.CORE_RPC = configs.CORE_RPC; + this.CORE_RPC_MINFEE = configs.CORE_RPC_MINFEE; this.DATABASE = configs.DATABASE; this.STATISTICS = configs.STATISTICS; this.BISQ_BLOCKS = configs.BISQ_BLOCKS;