Handle accelerations in v1 audit
This commit is contained in:
parent
67761230e3
commit
b9334c93f5
@ -21,6 +21,7 @@ class Audit {
|
|||||||
const accelerated: string[] = []; // prioritized by the mempool accelerator
|
const accelerated: string[] = []; // prioritized by the mempool accelerator
|
||||||
const isCensored = {}; // missing, without excuse
|
const isCensored = {}; // missing, without excuse
|
||||||
const isDisplaced = {};
|
const isDisplaced = {};
|
||||||
|
const isAccelerated = {};
|
||||||
let displacedWeight = 0;
|
let displacedWeight = 0;
|
||||||
let matchedWeight = 0;
|
let matchedWeight = 0;
|
||||||
let projectedWeight = 0;
|
let projectedWeight = 0;
|
||||||
@ -33,6 +34,7 @@ class Audit {
|
|||||||
inBlock[tx.txid] = tx;
|
inBlock[tx.txid] = tx;
|
||||||
if (mempool[tx.txid] && mempool[tx.txid].acceleration) {
|
if (mempool[tx.txid] && mempool[tx.txid].acceleration) {
|
||||||
accelerated.push(tx.txid);
|
accelerated.push(tx.txid);
|
||||||
|
isAccelerated[tx.txid] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// coinbase is always expected
|
// coinbase is always expected
|
||||||
@ -143,7 +145,8 @@ class Audit {
|
|||||||
// so exclude from the analysis.
|
// so exclude from the analysis.
|
||||||
if ((blockTx.effectiveFeePerVsize || 0) < lastEffectiveRate) {
|
if ((blockTx.effectiveFeePerVsize || 0) < lastEffectiveRate) {
|
||||||
prioritized.push(blockTx.txid);
|
prioritized.push(blockTx.txid);
|
||||||
} else {
|
// accelerated txs may or may not have their prioritized fee rate applied, so don't use them as a reference
|
||||||
|
} else if (!isAccelerated[blockTx.txid]) {
|
||||||
lastEffectiveRate = blockTx.effectiveFeePerVsize || 0;
|
lastEffectiveRate = blockTx.effectiveFeePerVsize || 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,7 @@ import AccelerationRepository from '../repositories/AccelerationRepository';
|
|||||||
import { calculateFastBlockCpfp, calculateGoodBlockCpfp } from './cpfp';
|
import { calculateFastBlockCpfp, calculateGoodBlockCpfp } from './cpfp';
|
||||||
import mempool from './mempool';
|
import mempool from './mempool';
|
||||||
import CpfpRepository from '../repositories/CpfpRepository';
|
import CpfpRepository from '../repositories/CpfpRepository';
|
||||||
|
import accelerationApi from './services/acceleration';
|
||||||
|
|
||||||
class Blocks {
|
class Blocks {
|
||||||
private blocks: BlockExtended[] = [];
|
private blocks: BlockExtended[] = [];
|
||||||
@ -904,7 +905,12 @@ class Blocks {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const cpfpSummary: CpfpSummary = calculateGoodBlockCpfp(block.height, transactions, Object.values(mempool.getAccelerations()).map(a => ({ txid: a.txid, max_bid: a.feeDelta })));
|
let accelerations = Object.values(mempool.getAccelerations());
|
||||||
|
if (accelerations?.length > 0) {
|
||||||
|
const pool = await this.$findBlockMiner(transactionUtils.stripCoinbaseTransaction(transactions[0]));
|
||||||
|
accelerations = accelerations.filter(a => a.pools.includes(pool.uniqueId));
|
||||||
|
}
|
||||||
|
const cpfpSummary: CpfpSummary = calculateGoodBlockCpfp(block.height, transactions, accelerations.map(a => ({ txid: a.txid, max_bid: a.feeDelta })));
|
||||||
const blockExtended: BlockExtended = await this.$getBlockExtended(block, cpfpSummary.transactions);
|
const blockExtended: BlockExtended = await this.$getBlockExtended(block, cpfpSummary.transactions);
|
||||||
const blockSummary: BlockSummary = this.summarizeBlockTransactions(block.id, cpfpSummary.transactions);
|
const blockSummary: BlockSummary = this.summarizeBlockTransactions(block.id, cpfpSummary.transactions);
|
||||||
this.updateTimerProgress(timer, `got block data for ${this.currentBlockHeight}`);
|
this.updateTimerProgress(timer, `got block data for ${this.currentBlockHeight}`);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user