Data pipeline for projected mempool block overview

This commit is contained in:
Mononaut
2022-05-30 17:29:30 +00:00
parent f83a03859f
commit 9dacb8dac1
10 changed files with 107 additions and 2 deletions

View File

@@ -112,6 +112,7 @@ class MempoolBlocks {
medianFee: Common.percentile(transactions.map((tx) => tx.effectiveFeePerVsize), config.MEMPOOL.RECOMMENDED_FEE_PERCENTILE),
feeRange: Common.getFeesInRange(transactions, rangeLength),
transactionIds: transactions.map((tx) => tx.txid),
transactions: transactions.map((tx) => Common.stripTransaction(tx)),
};
}
}

View File

@@ -111,6 +111,22 @@ class WebsocketHandler {
}
}
if (parsedMessage && parsedMessage['track-mempool-block'] != null) {
if (Number.isInteger(parsedMessage['track-mempool-block']) && parsedMessage['track-mempool-block'] >= 0) {
const index = parsedMessage['track-mempool-block'];
client['track-mempool-block'] = index;
const mBlocksWithTransactions = mempoolBlocks.getMempoolBlocksWithTransactions();
if (mBlocksWithTransactions[index]) {
response['projected-mempool-block'] = {
index: index,
block: mBlocksWithTransactions[index],
};
}
} else {
client['track-mempool-block'] = null;
}
}
if (parsedMessage.action === 'init') {
const _blocks = blocks.getBlocks().slice(-config.MEMPOOL.INITIAL_BLOCKS_AMOUNT);
if (!_blocks) {
@@ -233,6 +249,7 @@ class WebsocketHandler {
mempoolBlocks.updateMempoolBlocks(newMempool);
const mBlocks = mempoolBlocks.getMempoolBlocks();
const mBlocksWithTransactions = mempoolBlocks.getMempoolBlocksWithTransactions();
const mempoolInfo = memPool.getMempoolInfo();
const vBytesPerSecond = memPool.getVBytesPerSecond();
const rbfTransactions = Common.findRbfTransactions(newTransactions, deletedTransactions);
@@ -370,6 +387,16 @@ class WebsocketHandler {
}
}
if (client['track-mempool-block'] >= 0) {
const index = client['track-mempool-block'];
if (mBlocksWithTransactions[index]) {
response['projected-mempool-block'] = {
index: index,
block: mBlocksWithTransactions[index],
};
}
}
if (Object.keys(response).length) {
client.send(JSON.stringify(response));
}