Duplicate code fix.
This commit is contained in:
parent
f4117df63d
commit
4d2fcf96c6
@ -2,6 +2,7 @@ const config = require('../../mempool-config.json');
|
|||||||
import bitcoinApi from './bitcoin/electrs-api';
|
import bitcoinApi from './bitcoin/electrs-api';
|
||||||
import memPool from './mempool';
|
import memPool from './mempool';
|
||||||
import { Block, TransactionExtended } from '../interfaces';
|
import { Block, TransactionExtended } from '../interfaces';
|
||||||
|
import { Common } from './common';
|
||||||
|
|
||||||
class Blocks {
|
class Blocks {
|
||||||
private blocks: Block[] = [];
|
private blocks: Block[] = [];
|
||||||
@ -73,8 +74,8 @@ class Blocks {
|
|||||||
|
|
||||||
block.reward = transactions[0].vout.reduce((acc, curr) => acc + curr.value, 0);
|
block.reward = transactions[0].vout.reduce((acc, curr) => acc + curr.value, 0);
|
||||||
transactions.sort((a, b) => b.feePerVsize - a.feePerVsize);
|
transactions.sort((a, b) => b.feePerVsize - a.feePerVsize);
|
||||||
block.medianFee = transactions.length > 1 ? this.median(transactions.map((tx) => tx.feePerVsize)) : 0;
|
block.medianFee = transactions.length > 1 ? Common.median(transactions.map((tx) => tx.feePerVsize)) : 0;
|
||||||
block.feeRange = transactions.length > 1 ? this.getFeesInRange(transactions, 8) : [0, 0];
|
block.feeRange = transactions.length > 1 ? Common.getFeesInRange(transactions, 8) : [0, 0];
|
||||||
block.coinbaseTx = transactions[0];
|
block.coinbaseTx = transactions[0];
|
||||||
|
|
||||||
this.blocks.push(block);
|
this.blocks.push(block);
|
||||||
@ -89,31 +90,6 @@ class Blocks {
|
|||||||
console.log('updateBlocks error', err);
|
console.log('updateBlocks error', err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private median(numbers: number[]) {
|
|
||||||
let medianNr = 0;
|
|
||||||
const numsLen = numbers.length;
|
|
||||||
if (numsLen % 2 === 0) {
|
|
||||||
medianNr = (numbers[numsLen / 2 - 1] + numbers[numsLen / 2]) / 2;
|
|
||||||
} else {
|
|
||||||
medianNr = numbers[(numsLen - 1) / 2];
|
|
||||||
}
|
|
||||||
return medianNr;
|
|
||||||
}
|
|
||||||
|
|
||||||
private getFeesInRange(transactions: any[], rangeLength: number) {
|
|
||||||
const arr = [transactions[transactions.length - 1].feePerVsize];
|
|
||||||
const chunk = 1 / (rangeLength - 1);
|
|
||||||
let itemsToAdd = rangeLength - 2;
|
|
||||||
|
|
||||||
while (itemsToAdd > 0) {
|
|
||||||
arr.push(transactions[Math.floor(transactions.length * chunk * itemsToAdd)].feePerVsize);
|
|
||||||
itemsToAdd--;
|
|
||||||
}
|
|
||||||
|
|
||||||
arr.push(transactions[1].feePerVsize);
|
|
||||||
return arr;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default new Blocks();
|
export default new Blocks();
|
||||||
|
28
backend/src/api/common.ts
Normal file
28
backend/src/api/common.ts
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
import { TransactionExtended } from '../interfaces';
|
||||||
|
|
||||||
|
export class Common {
|
||||||
|
static median(numbers: number[]) {
|
||||||
|
let medianNr = 0;
|
||||||
|
const numsLen = numbers.length;
|
||||||
|
if (numsLen % 2 === 0) {
|
||||||
|
medianNr = (numbers[numsLen / 2 - 1] + numbers[numsLen / 2]) / 2;
|
||||||
|
} else {
|
||||||
|
medianNr = numbers[(numsLen - 1) / 2];
|
||||||
|
}
|
||||||
|
return medianNr;
|
||||||
|
}
|
||||||
|
|
||||||
|
static getFeesInRange(transactions: TransactionExtended[], rangeLength: number) {
|
||||||
|
const arr = [transactions[transactions.length - 1].feePerVsize];
|
||||||
|
const chunk = 1 / (rangeLength - 1);
|
||||||
|
let itemsToAdd = rangeLength - 2;
|
||||||
|
|
||||||
|
while (itemsToAdd > 0) {
|
||||||
|
arr.push(transactions[Math.floor(transactions.length * chunk * itemsToAdd)].feePerVsize);
|
||||||
|
itemsToAdd--;
|
||||||
|
}
|
||||||
|
|
||||||
|
arr.push(transactions[1].feePerVsize);
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,6 @@
|
|||||||
const config = require('../../mempool-config.json');
|
const config = require('../../mempool-config.json');
|
||||||
import { MempoolBlock, TransactionExtended } from '../interfaces';
|
import { MempoolBlock, TransactionExtended } from '../interfaces';
|
||||||
|
import { Common } from './common';
|
||||||
|
|
||||||
class MempoolBlocks {
|
class MempoolBlocks {
|
||||||
private mempoolBlocks: MempoolBlock[] = [];
|
private mempoolBlocks: MempoolBlock[] = [];
|
||||||
@ -46,7 +47,8 @@ class MempoolBlocks {
|
|||||||
return mempoolBlocks;
|
return mempoolBlocks;
|
||||||
}
|
}
|
||||||
|
|
||||||
private dataToMempoolBlocks(transactions: TransactionExtended[], blockSize: number, blockVSize: number, blocksIndex: number): MempoolBlock {
|
private dataToMempoolBlocks(transactions: TransactionExtended[],
|
||||||
|
blockSize: number, blockVSize: number, blocksIndex: number): MempoolBlock {
|
||||||
let rangeLength = 4;
|
let rangeLength = 4;
|
||||||
if (blocksIndex === 0) {
|
if (blocksIndex === 0) {
|
||||||
rangeLength = 8;
|
rangeLength = 8;
|
||||||
@ -61,35 +63,10 @@ class MempoolBlocks {
|
|||||||
blockVSize: blockVSize,
|
blockVSize: blockVSize,
|
||||||
nTx: transactions.length,
|
nTx: transactions.length,
|
||||||
totalFees: transactions.reduce((acc, cur) => acc + cur.fee, 0),
|
totalFees: transactions.reduce((acc, cur) => acc + cur.fee, 0),
|
||||||
medianFee: this.median(transactions.map((tx) => tx.feePerVsize)),
|
medianFee: Common.median(transactions.map((tx) => tx.feePerVsize)),
|
||||||
feeRange: this.getFeesInRange(transactions, rangeLength),
|
feeRange: Common.getFeesInRange(transactions, rangeLength),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private median(numbers: number[]) {
|
|
||||||
let medianNr = 0;
|
|
||||||
const numsLen = numbers.length;
|
|
||||||
if (numsLen % 2 === 0) {
|
|
||||||
medianNr = (numbers[numsLen / 2 - 1] + numbers[numsLen / 2]) / 2;
|
|
||||||
} else {
|
|
||||||
medianNr = numbers[(numsLen - 1) / 2];
|
|
||||||
}
|
|
||||||
return medianNr;
|
|
||||||
}
|
|
||||||
|
|
||||||
private getFeesInRange(transactions: TransactionExtended[], rangeLength: number) {
|
|
||||||
const arr = [transactions[transactions.length - 1].feePerVsize];
|
|
||||||
const chunk = 1 / (rangeLength - 1);
|
|
||||||
let itemsToAdd = rangeLength - 2;
|
|
||||||
|
|
||||||
while (itemsToAdd > 0) {
|
|
||||||
arr.push(transactions[Math.floor(transactions.length * chunk * itemsToAdd)].feePerVsize);
|
|
||||||
itemsToAdd--;
|
|
||||||
}
|
|
||||||
|
|
||||||
arr.push(transactions[0].feePerVsize);
|
|
||||||
return arr;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default new MempoolBlocks();
|
export default new MempoolBlocks();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user