fix audit highlightning and fee ranges
This commit is contained in:
		
							parent
							
								
									3838d947b1
								
							
						
					
					
						commit
						2a2aee21fb
					
				@ -461,7 +461,7 @@ export class Common {
 | 
			
		||||
    };
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  static calcEffectiveFeeStatistics(transactions: { weight: number, fee: number, effectiveFeePerVsize?: number, txid: string }[]): EffectiveFeeStats {
 | 
			
		||||
  static calcEffectiveFeeStatistics(transactions: { weight: number, fee: number, effectiveFeePerVsize?: number, txid: string, acceleration?: boolean }[]): EffectiveFeeStats {
 | 
			
		||||
    const sortedTxs = transactions.map(tx => { return { txid: tx.txid, weight: tx.weight, rate: tx.effectiveFeePerVsize || ((tx.fee || 0) / (tx.weight / 4)) }; }).sort((a, b) => a.rate - b.rate);
 | 
			
		||||
 | 
			
		||||
    let weightCount = 0;
 | 
			
		||||
 | 
			
		||||
@ -337,7 +337,8 @@ class MempoolBlocks {
 | 
			
		||||
    this.rustGbtGenerator = new GbtGenerator();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private async $rustMakeBlockTemplates(newMempool: { [txid: string]: MempoolTransactionExtended }, saveResults: boolean = false, useAccelerations: boolean = false, accelerationPool?: number): Promise<MempoolBlockWithTransactions[]> {
 | 
			
		||||
  public async $rustMakeBlockTemplates(newMempool: { [txid: string]: MempoolTransactionExtended }, saveResults: boolean = false, useAccelerations: boolean = false, accelerationPool?: number): Promise<MempoolBlockWithTransactions[]> {
 | 
			
		||||
    console.log('$rustMakeBlockTemplates');
 | 
			
		||||
    const start = Date.now();
 | 
			
		||||
 | 
			
		||||
    // reset mempool short ids
 | 
			
		||||
@ -569,7 +570,7 @@ class MempoolBlocks {
 | 
			
		||||
 | 
			
		||||
  private dataToMempoolBlocks(transactionIds: string[], transactions: MempoolTransactionExtended[], totalSize: number, totalWeight: number, totalFees: number, feeStats?: EffectiveFeeStats ): MempoolBlockWithTransactions {
 | 
			
		||||
    if (!feeStats) {
 | 
			
		||||
      feeStats = Common.calcEffectiveFeeStatistics(transactions);
 | 
			
		||||
      feeStats = Common.calcEffectiveFeeStatistics(transactions.filter(tx => !tx.acceleration));
 | 
			
		||||
    }
 | 
			
		||||
    return {
 | 
			
		||||
      blockSize: totalSize,
 | 
			
		||||
 | 
			
		||||
@ -397,7 +397,7 @@ class WebsocketHandler {
 | 
			
		||||
 | 
			
		||||
    if (config.MEMPOOL.ADVANCED_GBT_MEMPOOL) {
 | 
			
		||||
      if (config.MEMPOOL.RUST_GBT) {
 | 
			
		||||
        await mempoolBlocks.$rustUpdateBlockTemplates(newMempool, mempoolSize, newTransactions, deletedTransactions, true,);
 | 
			
		||||
        await mempoolBlocks.$rustUpdateBlockTemplates(newMempool, mempoolSize, newTransactions, deletedTransactions, config.MEMPOOL_SERVICES.ACCELERATIONS);
 | 
			
		||||
      } else {
 | 
			
		||||
        await mempoolBlocks.$updateBlockTemplates(newMempool, newTransactions, deletedTransactions, accelerationDelta, true, config.MEMPOOL_SERVICES.ACCELERATIONS);
 | 
			
		||||
      }
 | 
			
		||||
@ -661,7 +661,7 @@ class WebsocketHandler {
 | 
			
		||||
      const isAccelerated = config.MEMPOOL_SERVICES.ACCELERATIONS && accelerationApi.isAcceleratedBlock(block, Object.values(mempool.getAccelerations()));
 | 
			
		||||
      // template calculation functions have mempool side effects, so calculate audits using
 | 
			
		||||
      // a cloned copy of the mempool if we're running a different algorithm for mempool updates
 | 
			
		||||
      const separateAudit = config.MEMPOOL.ADVANCED_GBT_AUDIT !== config.MEMPOOL.ADVANCED_GBT_MEMPOOL;
 | 
			
		||||
      const separateAudit = config.MEMPOOL.ADVANCED_GBT_AUDIT !== config.MEMPOOL.ADVANCED_GBT_MEMPOOL || isAccelerated;
 | 
			
		||||
      if (separateAudit) {
 | 
			
		||||
        auditMempool = deepClone(_memPool);
 | 
			
		||||
        if (config.MEMPOOL.ADVANCED_GBT_AUDIT) {
 | 
			
		||||
@ -675,7 +675,7 @@ class WebsocketHandler {
 | 
			
		||||
        }
 | 
			
		||||
      } else {
 | 
			
		||||
        if ((config.MEMPOOL_SERVICES.ACCELERATIONS && !isAccelerated)) {
 | 
			
		||||
          projectedBlocks = await mempoolBlocks.$makeBlockTemplates(auditMempool, false, isAccelerated);
 | 
			
		||||
          projectedBlocks = await mempoolBlocks.$makeBlockTemplates(auditMempool, false, false);
 | 
			
		||||
        } else {
 | 
			
		||||
          projectedBlocks = mempoolBlocks.getMempoolBlocksWithTransactions();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -85,7 +85,6 @@ class BlocksAuditRepositories {
 | 
			
		||||
        rows[0].sigopTxs = JSON.parse(rows[0].sigopTxs);
 | 
			
		||||
        rows[0].fullrbfTxs = JSON.parse(rows[0].fullrbfTxs);
 | 
			
		||||
        rows[0].acceleratedTxs = JSON.parse(rows[0].acceleratedTxs);
 | 
			
		||||
        rows[0].transactions = JSON.parse(rows[0].transactions);
 | 
			
		||||
        rows[0].template = JSON.parse(rows[0].template);
 | 
			
		||||
 | 
			
		||||
        return rows[0];
 | 
			
		||||
 | 
			
		||||
@ -347,6 +347,9 @@ export class BlockComponent implements OnInit, OnDestroy {
 | 
			
		||||
        if (blockAudit?.template) {
 | 
			
		||||
          for (const tx of blockAudit.template) {
 | 
			
		||||
            inTemplate[tx.txid] = true;
 | 
			
		||||
            if (tx.acc) {
 | 
			
		||||
              isAccelerated[tx.txid] = true;
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
          for (const tx of transactions) {
 | 
			
		||||
            inBlock[tx.txid] = true;
 | 
			
		||||
 | 
			
		||||
@ -176,6 +176,7 @@ export interface TransactionStripped {
 | 
			
		||||
  vsize: number;
 | 
			
		||||
  value: number;
 | 
			
		||||
  rate?: number; // effective fee rate
 | 
			
		||||
  acc?: boolean;
 | 
			
		||||
  status?: 'found' | 'missing' | 'sigop' | 'fresh' | 'freshcpfp' | 'added' | 'censored' | 'selected' | 'rbf' | 'accelerated';
 | 
			
		||||
  context?: 'projected' | 'actual';
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user