Add recommended fee percentile config (#394)
This commit is contained in:
		
							parent
							
								
									151516214b
								
							
						
					
					
						commit
						cdb992fcf3
					
				@ -7,7 +7,8 @@
 | 
			
		||||
    "API_URL_PREFIX": "/api/v1/",
 | 
			
		||||
    "POLL_RATE_MS": 2000,
 | 
			
		||||
    "CACHE_DIR": "./cache",
 | 
			
		||||
    "CLEAR_PROTECTION_MINUTES": 20
 | 
			
		||||
    "CLEAR_PROTECTION_MINUTES": 20,
 | 
			
		||||
    "RECOMMENDED_FEE_PERCENTILE": 50
 | 
			
		||||
  },
 | 
			
		||||
  "CORE_RPC": {
 | 
			
		||||
    "HOST": "127.0.0.1",
 | 
			
		||||
 | 
			
		||||
@ -12,6 +12,13 @@ export class Common {
 | 
			
		||||
    return medianNr;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  static percentile(numbers: number[], percentile: number) {
 | 
			
		||||
    if (percentile === 50) return this.median(numbers);
 | 
			
		||||
    const index = Math.ceil(numbers.length * (100 - percentile) * 1e-2);
 | 
			
		||||
    if (index < 0 || index > numbers.length - 1) return 0;
 | 
			
		||||
    return numbers[index];
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  static getFeesInRange(transactions: TransactionExtended[], rangeLength: number) {
 | 
			
		||||
    const arr = [transactions[transactions.length - 1].feePerVsize];
 | 
			
		||||
    const chunk = 1 / (rangeLength - 1);
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,6 @@
 | 
			
		||||
import { MempoolBlock, TransactionExtended, MempoolBlockWithTransactions } from '../mempool.interfaces';
 | 
			
		||||
import { Common } from './common';
 | 
			
		||||
import config from '../config';
 | 
			
		||||
 | 
			
		||||
class MempoolBlocks {
 | 
			
		||||
  private static DEFAULT_PROJECTED_BLOCKS_AMOUNT = 8;
 | 
			
		||||
@ -76,7 +77,7 @@ class MempoolBlocks {
 | 
			
		||||
      blockVSize: blockVSize,
 | 
			
		||||
      nTx: transactions.length,
 | 
			
		||||
      totalFees: transactions.reduce((acc, cur) => acc + cur.fee, 0),
 | 
			
		||||
      medianFee: Common.median(transactions.map((tx) => tx.feePerVsize)),
 | 
			
		||||
      medianFee: Common.percentile(transactions.map((tx) => tx.feePerVsize), config.MEMPOOL.RECOMMENDED_FEE_PERCENTILE),
 | 
			
		||||
      feeRange: Common.getFeesInRange(transactions, rangeLength),
 | 
			
		||||
      transactionIds: transactions.map((tx) => tx.txid),
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
@ -10,6 +10,7 @@ interface IConfig {
 | 
			
		||||
    POLL_RATE_MS: number;
 | 
			
		||||
    CACHE_DIR: string;
 | 
			
		||||
    CLEAR_PROTECTION_MINUTES: number;
 | 
			
		||||
    RECOMMENDED_FEE_PERCENTILE: number;
 | 
			
		||||
  };
 | 
			
		||||
  ESPLORA: {
 | 
			
		||||
    REST_API_URL: string;
 | 
			
		||||
@ -64,6 +65,7 @@ const defaults: IConfig = {
 | 
			
		||||
    'POLL_RATE_MS': 2000,
 | 
			
		||||
    'CACHE_DIR': './cache',
 | 
			
		||||
    'CLEAR_PROTECTION_MINUTES': 20,
 | 
			
		||||
    'RECOMMENDED_FEE_PERCENTILE': 50,
 | 
			
		||||
  },
 | 
			
		||||
  'ESPLORA': {
 | 
			
		||||
    'REST_API_URL': 'http://127.0.0.1:3000',
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user