Merge pull request #1066 from mempool/simon/liquid-backend-detection-refactor

Refactoring the Liquid and LiquidTestnet check to a common function.
This commit is contained in:
softsimon 2022-01-01 12:54:39 +04:00 committed by GitHub
commit 990ab3da5f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 18 additions and 12 deletions

View File

@ -4,6 +4,11 @@ export class Common {
static nativeAssetId = config.MEMPOOL.NETWORK === 'liquidtestnet' ? static nativeAssetId = config.MEMPOOL.NETWORK === 'liquidtestnet' ?
'144c654344aa716d6f3abcc1ca90e5641e4e2a7f633bc09fe3baf64585819a49' '144c654344aa716d6f3abcc1ca90e5641e4e2a7f633bc09fe3baf64585819a49'
: '6f0279e9ed041c3d710a9f57d0c02928416460c4b722ae3457a11eec381c526d'; : '6f0279e9ed041c3d710a9f57d0c02928416460c4b722ae3457a11eec381c526d';
static _isLiquid = config.MEMPOOL.NETWORK === 'liquid' || config.MEMPOOL.NETWORK === 'liquidtestnet';
static isLiquid(): boolean {
return this._isLiquid;
}
static median(numbers: number[]) { static median(numbers: number[]) {
let medianNr = 0; let medianNr = 0;
@ -109,8 +114,7 @@ export class Common {
totalFees += tx.bestDescendant.fee; totalFees += tx.bestDescendant.fee;
} }
tx.effectiveFeePerVsize = Math.max(config.MEMPOOL.NETWORK === 'liquid' tx.effectiveFeePerVsize = Math.max(Common.isLiquid() ? 0.1 : 1, totalFees / (totalWeight / 4));
|| config.MEMPOOL.NETWORK === 'liquidtestnet' ? 0.1 : 1, totalFees / (totalWeight / 4));
tx.cpfpChecked = true; tx.cpfpChecked = true;
return { return {

View File

@ -1,12 +1,13 @@
import config from '../config'; import config from '../config';
import { MempoolBlock } from '../mempool.interfaces'; import { MempoolBlock } from '../mempool.interfaces';
import { Common } from './common';
import mempool from './mempool'; import mempool from './mempool';
import projectedBlocks from './mempool-blocks'; import projectedBlocks from './mempool-blocks';
class FeeApi { class FeeApi {
constructor() { } constructor() { }
defaultFee = config.MEMPOOL.NETWORK === 'liquid' || config.MEMPOOL.NETWORK === 'liquidtestnet' ? 0.1 : 1; defaultFee = Common.isLiquid() ? 0.1 : 1;
public getRecommendedFee() { public getRecommendedFee() {
const pBlocks = projectedBlocks.getMempoolBlocks(); const pBlocks = projectedBlocks.getMempoolBlocks();

View File

@ -4,6 +4,7 @@ import logger from '../logger';
import { Statistic, TransactionExtended, OptimizedStatistic } from '../mempool.interfaces'; import { Statistic, TransactionExtended, OptimizedStatistic } from '../mempool.interfaces';
import config from '../config'; import config from '../config';
import { Common } from './common';
class Statistics { class Statistics {
protected intervalTimer: NodeJS.Timer | undefined; protected intervalTimer: NodeJS.Timer | undefined;
@ -90,11 +91,9 @@ class Statistics {
memPoolArray.forEach((transaction) => { memPoolArray.forEach((transaction) => {
for (let i = 0; i < logFees.length; i++) { for (let i = 0; i < logFees.length; i++) {
if ( if (
((config.MEMPOOL.NETWORK === 'liquid' || config.MEMPOOL.NETWORK === 'liquidtestnet') (Common.isLiquid() && (i === lastItem || transaction.effectiveFeePerVsize * 10 < logFees[i + 1]))
&& (i === lastItem || transaction.effectiveFeePerVsize * 10 < logFees[i + 1]))
|| ||
((config.MEMPOOL.NETWORK !== 'liquid' && config.MEMPOOL.NETWORK !== 'liquidtestnet') (!Common.isLiquid() && (i === lastItem || transaction.effectiveFeePerVsize < logFees[i + 1]))
&& (i === lastItem || transaction.effectiveFeePerVsize < logFees[i + 1]))
) { ) {
if (weightVsizeFees[logFees[i]]) { if (weightVsizeFees[logFees[i]]) {
weightVsizeFees[logFees[i]] += transaction.vsize; weightVsizeFees[logFees[i]] += transaction.vsize;

View File

@ -2,6 +2,7 @@ import bitcoinApi from './bitcoin/bitcoin-api-factory';
import { TransactionExtended, TransactionMinerInfo } from '../mempool.interfaces'; import { TransactionExtended, TransactionMinerInfo } from '../mempool.interfaces';
import { IEsploraApi } from './bitcoin/esplora-api.interface'; import { IEsploraApi } from './bitcoin/esplora-api.interface';
import config from '../config'; import config from '../config';
import { Common } from './common';
class TransactionUtils { class TransactionUtils {
constructor() { } constructor() { }
@ -31,7 +32,7 @@ class TransactionUtils {
// @ts-ignore // @ts-ignore
return transaction; return transaction;
} }
const feePerVbytes = Math.max(config.MEMPOOL.NETWORK === 'liquid' || config.MEMPOOL.NETWORK === 'liquidtestnet' ? 0.1 : 1, const feePerVbytes = Math.max(Common.isLiquid() ? 0.1 : 1,
(transaction.fee || 0) / (transaction.weight / 4)); (transaction.fee || 0) / (transaction.weight / 4));
const transactionExtended: TransactionExtended = Object.assign({ const transactionExtended: TransactionExtended = Object.assign({
vsize: Math.round(transaction.weight / 4), vsize: Math.round(transaction.weight / 4),

View File

@ -24,6 +24,7 @@ import elementsParser from './api/liquid/elements-parser';
import databaseMigration from './api/database-migration'; import databaseMigration from './api/database-migration';
import syncAssets from './sync-assets'; import syncAssets from './sync-assets';
import icons from './api/liquid/icons'; import icons from './api/liquid/icons';
import { Common } from './api/common';
class Server { class Server {
private wss: WebSocket.Server | undefined; private wss: WebSocket.Server | undefined;
@ -96,7 +97,7 @@ class Server {
statistics.startStatistics(); statistics.startStatistics();
} }
if (config.MEMPOOL.NETWORK === 'liquid' || config.MEMPOOL.NETWORK === 'liquidtestnet') { if (Common.isLiquid()) {
icons.loadIcons(); icons.loadIcons();
} }
@ -156,7 +157,7 @@ class Server {
if (this.wss) { if (this.wss) {
websocketHandler.setWebsocketServer(this.wss); websocketHandler.setWebsocketServer(this.wss);
} }
if ((config.MEMPOOL.NETWORK === 'liquid' || config.MEMPOOL.NETWORK === 'liquidtestnet') && config.DATABASE.ENABLED) { if (Common.isLiquid() && config.DATABASE.ENABLED) {
blocks.setNewBlockCallback(async () => { blocks.setNewBlockCallback(async () => {
try { try {
await elementsParser.$parse(); await elementsParser.$parse();
@ -283,14 +284,14 @@ class Server {
; ;
} }
if (config.MEMPOOL.NETWORK === 'liquid' || config.MEMPOOL.NETWORK === 'liquidtestnet') { if (Common.isLiquid()) {
this.app this.app
.get(config.MEMPOOL.API_URL_PREFIX + 'assets/icons', routes.getAllLiquidIcon) .get(config.MEMPOOL.API_URL_PREFIX + 'assets/icons', routes.getAllLiquidIcon)
.get(config.MEMPOOL.API_URL_PREFIX + 'asset/:assetId/icon', routes.getLiquidIcon) .get(config.MEMPOOL.API_URL_PREFIX + 'asset/:assetId/icon', routes.getLiquidIcon)
; ;
} }
if ((config.MEMPOOL.NETWORK === 'liquid' || config.MEMPOOL.NETWORK === 'liquidtestnet') && config.DATABASE.ENABLED) { if (Common.isLiquid() && config.DATABASE.ENABLED) {
this.app this.app
.get(config.MEMPOOL.API_URL_PREFIX + 'liquid/pegs/month', routes.$getElementsPegsByMonth) .get(config.MEMPOOL.API_URL_PREFIX + 'liquid/pegs/month', routes.$getElementsPegsByMonth)
; ;