Send mempool effective fee rate changes to frontend & apply
This commit is contained in:
		
							parent
							
								
									3d5c156776
								
							
						
					
					
						commit
						4c569c0ded
					
				| @ -112,6 +112,7 @@ class MempoolBlocks { | ||||
|     for (let i = 0; i < Math.max(mempoolBlocks.length, prevBlocks.length); i++) { | ||||
|       let added: TransactionStripped[] = []; | ||||
|       let removed: string[] = []; | ||||
|       const changed: { txid: string, rate: number | undefined }[] = []; | ||||
|       if (mempoolBlocks[i] && !prevBlocks[i]) { | ||||
|         added = mempoolBlocks[i].transactions; | ||||
|       } else if (!mempoolBlocks[i] && prevBlocks[i]) { | ||||
| @ -120,7 +121,7 @@ class MempoolBlocks { | ||||
|         const prevIds = {}; | ||||
|         const newIds = {}; | ||||
|         prevBlocks[i].transactions.forEach(tx => { | ||||
|           prevIds[tx.txid] = true; | ||||
|           prevIds[tx.txid] = tx; | ||||
|         }); | ||||
|         mempoolBlocks[i].transactions.forEach(tx => { | ||||
|           newIds[tx.txid] = true; | ||||
| @ -133,12 +134,15 @@ class MempoolBlocks { | ||||
|         mempoolBlocks[i].transactions.forEach(tx => { | ||||
|           if (!prevIds[tx.txid]) { | ||||
|             added.push(tx); | ||||
|           } else if (tx.rate !== prevIds[tx.txid].rate) { | ||||
|             changed.push({ txid: tx.txid, rate: tx.rate }); | ||||
|           } | ||||
|         }); | ||||
|       } | ||||
|       mempoolBlockDeltas.push({ | ||||
|         added, | ||||
|         removed | ||||
|         removed, | ||||
|         changed, | ||||
|       }); | ||||
|     } | ||||
|     return mempoolBlockDeltas; | ||||
|  | ||||
| @ -58,6 +58,7 @@ export interface MempoolBlockWithTransactions extends MempoolBlock { | ||||
| export interface MempoolBlockDelta { | ||||
|   added: TransactionStripped[]; | ||||
|   removed: string[]; | ||||
|   changed: { txid: string, rate: number | undefined }[]; | ||||
| } | ||||
| 
 | ||||
| interface VinStrippedToScriptsig { | ||||
|  | ||||
| @ -132,9 +132,9 @@ export class BlockOverviewGraphComponent implements AfterViewInit, OnDestroy, On | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   update(add: TransactionStripped[], remove: string[], direction: string = 'left', resetLayout: boolean = false): void { | ||||
|   update(add: TransactionStripped[], remove: string[], change: { txid: string, rate: number | undefined }[], direction: string = 'left', resetLayout: boolean = false): void { | ||||
|     if (this.scene) { | ||||
|       this.scene.update(add, remove, direction, resetLayout); | ||||
|       this.scene.update(add, remove, change, direction, resetLayout); | ||||
|       this.start(); | ||||
|     } | ||||
|   } | ||||
|  | ||||
| @ -150,7 +150,7 @@ export default class BlockScene { | ||||
|     this.updateAll(startTime, 200, direction); | ||||
|   } | ||||
| 
 | ||||
|   update(add: TransactionStripped[], remove: string[], direction: string = 'left', resetLayout: boolean = false): void { | ||||
|   update(add: TransactionStripped[], remove: string[], change: { txid: string, rate: number | undefined }[], direction: string = 'left', resetLayout: boolean = false): void { | ||||
|     const startTime = performance.now(); | ||||
|     const removed = this.removeBatch(remove, startTime, direction); | ||||
| 
 | ||||
| @ -172,6 +172,15 @@ export default class BlockScene { | ||||
|         this.place(tx); | ||||
|       }); | ||||
|     } else { | ||||
|       // update effective rates
 | ||||
|       change.forEach(tx => { | ||||
|         if (this.txs[tx.txid]) { | ||||
|           this.txs[tx.txid].feerate = tx.rate || (this.txs[tx.txid].fee / this.txs[tx.txid].vsize); | ||||
|           this.txs[tx.txid].rate = tx.rate; | ||||
|           this.txs[tx.txid].dirty = true; | ||||
|         } | ||||
|       }); | ||||
| 
 | ||||
|       // try to insert new txs directly
 | ||||
|       const remaining = []; | ||||
|       add.map(tx => new TxView(tx, this)).sort(feeRateDescending).forEach(tx => { | ||||
|  | ||||
| @ -99,7 +99,7 @@ export class MempoolBlockOverviewComponent implements OnInit, OnDestroy, OnChang | ||||
|       const direction = (this.blockIndex == null || this.index < this.blockIndex) ? this.poolDirection : this.chainDirection; | ||||
|       this.blockGraph.replace(delta.added, direction); | ||||
|     } else { | ||||
|       this.blockGraph.update(delta.added, delta.removed, blockMined ? this.chainDirection : this.poolDirection, blockMined); | ||||
|       this.blockGraph.update(delta.added, delta.removed, delta.changed || [], blockMined ? this.chainDirection : this.poolDirection, blockMined); | ||||
|     } | ||||
| 
 | ||||
|     this.lastBlockHeight = this.stateService.latestBlockHeight; | ||||
|  | ||||
| @ -54,6 +54,7 @@ export interface MempoolBlockWithTransactions extends MempoolBlock { | ||||
| export interface MempoolBlockDelta { | ||||
|   added: TransactionStripped[], | ||||
|   removed: string[], | ||||
|   changed?: { txid: string, rate: number | undefined }[]; | ||||
| } | ||||
| 
 | ||||
| export interface MempoolInfo { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user