Add mempool position improvements to updateMempoolBlocks
This commit is contained in:
		
							parent
							
								
									3b8bcc4da5
								
							
						
					
					
						commit
						a22703d547
					
				@ -54,7 +54,14 @@ class MempoolBlocks {
 | 
				
			|||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // First sort
 | 
					    // First sort
 | 
				
			||||||
    memPoolArray.sort((a, b) => b.feePerVsize - a.feePerVsize);
 | 
					    memPoolArray.sort((a, b) => {
 | 
				
			||||||
 | 
					      if (a.feePerVsize === b.feePerVsize) {
 | 
				
			||||||
 | 
					        // tie-break by lexicographic txid order for stability
 | 
				
			||||||
 | 
					        return a.txid < b.txid ? -1 : 1;
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        return b.feePerVsize - a.feePerVsize;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Loop through and traverse all ancestors and sum up all the sizes + fees
 | 
					    // Loop through and traverse all ancestors and sum up all the sizes + fees
 | 
				
			||||||
    // Pass down size + fee to all unconfirmed children
 | 
					    // Pass down size + fee to all unconfirmed children
 | 
				
			||||||
@ -68,7 +75,14 @@ class MempoolBlocks {
 | 
				
			|||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Final sort, by effective fee
 | 
					    // Final sort, by effective fee
 | 
				
			||||||
    memPoolArray.sort((a, b) => b.effectiveFeePerVsize - a.effectiveFeePerVsize);
 | 
					    memPoolArray.sort((a, b) => {
 | 
				
			||||||
 | 
					      if (a.effectiveFeePerVsize === b.effectiveFeePerVsize) {
 | 
				
			||||||
 | 
					        // tie-break by lexicographic txid order for stability
 | 
				
			||||||
 | 
					        return a.txid < b.txid ? -1 : 1;
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        return b.effectiveFeePerVsize - a.effectiveFeePerVsize;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const end = new Date().getTime();
 | 
					    const end = new Date().getTime();
 | 
				
			||||||
    const time = end - start;
 | 
					    const time = end - start;
 | 
				
			||||||
@ -88,14 +102,26 @@ class MempoolBlocks {
 | 
				
			|||||||
  private calculateMempoolBlocks(transactionsSorted: TransactionExtended[]): MempoolBlockWithTransactions[] {
 | 
					  private calculateMempoolBlocks(transactionsSorted: TransactionExtended[]): MempoolBlockWithTransactions[] {
 | 
				
			||||||
    const mempoolBlocks: MempoolBlockWithTransactions[] = [];
 | 
					    const mempoolBlocks: MempoolBlockWithTransactions[] = [];
 | 
				
			||||||
    let blockWeight = 0;
 | 
					    let blockWeight = 0;
 | 
				
			||||||
 | 
					    let blockVsize = 0;
 | 
				
			||||||
    let transactions: TransactionExtended[] = [];
 | 
					    let transactions: TransactionExtended[] = [];
 | 
				
			||||||
    transactionsSorted.forEach((tx) => {
 | 
					    transactionsSorted.forEach((tx) => {
 | 
				
			||||||
      if (blockWeight + tx.weight <= config.MEMPOOL.BLOCK_WEIGHT_UNITS
 | 
					      if (blockWeight + tx.weight <= config.MEMPOOL.BLOCK_WEIGHT_UNITS
 | 
				
			||||||
        || mempoolBlocks.length === config.MEMPOOL.MEMPOOL_BLOCKS_AMOUNT - 1) {
 | 
					        || mempoolBlocks.length === config.MEMPOOL.MEMPOOL_BLOCKS_AMOUNT - 1) {
 | 
				
			||||||
 | 
					        tx.position = {
 | 
				
			||||||
 | 
					          block: mempoolBlocks.length,
 | 
				
			||||||
 | 
					          vsize: blockVsize + (tx.vsize / 2),
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
        blockWeight += tx.weight;
 | 
					        blockWeight += tx.weight;
 | 
				
			||||||
 | 
					        blockVsize += tx.vsize;
 | 
				
			||||||
        transactions.push(tx);
 | 
					        transactions.push(tx);
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        mempoolBlocks.push(this.dataToMempoolBlocks(transactions));
 | 
					        mempoolBlocks.push(this.dataToMempoolBlocks(transactions));
 | 
				
			||||||
 | 
					        blockVsize = 0;
 | 
				
			||||||
 | 
					        tx.position = {
 | 
				
			||||||
 | 
					          block: mempoolBlocks.length,
 | 
				
			||||||
 | 
					          vsize: blockVsize + (tx.vsize / 2),
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        blockVsize += tx.vsize;
 | 
				
			||||||
        blockWeight = tx.weight;
 | 
					        blockWeight = tx.weight;
 | 
				
			||||||
        transactions = [tx];
 | 
					        transactions = [tx];
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user