From d2f6741f4007a9139ad2cf15e218d56a5986302b Mon Sep 17 00:00:00 2001 From: Mononaut Date: Tue, 17 Dec 2024 00:30:27 +0000 Subject: [PATCH] use new effective fee stat fields in frontend --- .../src/app/components/block/block-preview.component.html | 4 ++-- frontend/src/app/components/block/block.component.html | 6 +++--- frontend/src/app/components/block/block.component.ts | 6 ++++++ .../blockchain-blocks/blockchain-blocks.component.html | 2 +- .../blockchain-blocks/blockchain-blocks.component.ts | 6 ++++++ .../app/components/mempool-block/mempool-block.component.ts | 3 +++ .../components/mempool-blocks/mempool-blocks.component.ts | 2 ++ .../app/components/tx-fee-rating/tx-fee-rating.component.ts | 6 +++--- frontend/src/app/interfaces/node-api.interface.ts | 2 ++ frontend/src/app/interfaces/websocket.interface.ts | 2 ++ 10 files changed, 30 insertions(+), 9 deletions(-) diff --git a/frontend/src/app/components/block/block-preview.component.html b/frontend/src/app/components/block/block-preview.component.html index 036ab8399..8ec11524f 100644 --- a/frontend/src/app/components/block/block-preview.component.html +++ b/frontend/src/app/components/block/block-preview.component.html @@ -32,9 +32,9 @@ Weight - + Median fee - ~ + ~ diff --git a/frontend/src/app/components/block/block.component.html b/frontend/src/app/components/block/block.component.html index 105cdf31a..4683f4b12 100644 --- a/frontend/src/app/components/block/block.component.html +++ b/frontend/src/app/components/block/block.component.html @@ -132,11 +132,11 @@ Fee span - - + Median fee - ~ + ~ - diff --git a/frontend/src/app/components/block/block.component.ts b/frontend/src/app/components/block/block.component.ts index dab3c00fa..4c7d80f70 100644 --- a/frontend/src/app/components/block/block.component.ts +++ b/frontend/src/app/components/block/block.component.ts @@ -792,6 +792,9 @@ export class BlockComponent implements OnInit, OnDestroy { } getMinBlockFee(block: BlockExtended): number { + if (block?.extras?.effectiveFeeRange) { + return block.extras.effectiveFeeRange[0]; + } if (block?.extras?.feeRange) { // heuristic to check if feeRange is adjusted for effective rates if (block.extras.medianFee === block.extras.feeRange[3]) { @@ -804,6 +807,9 @@ export class BlockComponent implements OnInit, OnDestroy { } getMaxBlockFee(block: BlockExtended): number { + if (block?.extras?.effectiveFeeRange) { + return block.extras.effectiveFeeRange[block.extras.effectiveFeeRange.length - 1]; + } if (block?.extras?.feeRange) { return block.extras.feeRange[block.extras.feeRange.length - 1]; } diff --git a/frontend/src/app/components/blockchain-blocks/blockchain-blocks.component.html b/frontend/src/app/components/blockchain-blocks/blockchain-blocks.component.html index a782e9588..2013bb9fc 100644 --- a/frontend/src/app/components/blockchain-blocks/blockchain-blocks.component.html +++ b/frontend/src/app/components/blockchain-blocks/blockchain-blocks.component.html @@ -23,7 +23,7 @@
- ~ + ~
diff --git a/frontend/src/app/components/blockchain-blocks/blockchain-blocks.component.ts b/frontend/src/app/components/blockchain-blocks/blockchain-blocks.component.ts index 008ab1052..4a55614b1 100644 --- a/frontend/src/app/components/blockchain-blocks/blockchain-blocks.component.ts +++ b/frontend/src/app/components/blockchain-blocks/blockchain-blocks.component.ts @@ -414,6 +414,9 @@ export class BlockchainBlocksComponent implements OnInit, OnChanges, OnDestroy { } getMinBlockFee(block: BlockExtended): number { + if (block?.extras?.effectiveFeeRange) { + return block.extras.effectiveFeeRange[0]; + } if (block?.extras?.feeRange) { // heuristic to check if feeRange is adjusted for effective rates if (block.extras.medianFee === block.extras.feeRange[3]) { @@ -426,6 +429,9 @@ export class BlockchainBlocksComponent implements OnInit, OnChanges, OnDestroy { } getMaxBlockFee(block: BlockExtended): number { + if (block?.extras?.effectiveFeeRange) { + return block.extras.effectiveFeeRange[block.extras.effectiveFeeRange.length - 1]; + } if (block?.extras?.feeRange) { return block.extras.feeRange[block.extras.feeRange.length - 1]; } diff --git a/frontend/src/app/components/mempool-block/mempool-block.component.ts b/frontend/src/app/components/mempool-block/mempool-block.component.ts index 029f9c616..d1fe28191 100644 --- a/frontend/src/app/components/mempool-block/mempool-block.component.ts +++ b/frontend/src/app/components/mempool-block/mempool-block.component.ts @@ -57,6 +57,9 @@ export class MempoolBlockComponent implements OnInit, OnDestroy { this.mempoolBlockIndex--; } const ordinal = this.getOrdinal(mempoolBlocks[this.mempoolBlockIndex]); + // prefer effective fee stats if available + mempoolBlocks[this.mempoolBlockIndex].feeRange = mempoolBlocks[this.mempoolBlockIndex].effectiveFeeRange ?? mempoolBlocks[this.mempoolBlockIndex].feeRange; + mempoolBlocks[this.mempoolBlockIndex].medianFee = mempoolBlocks[this.mempoolBlockIndex].effectiveMedianFee ?? mempoolBlocks[this.mempoolBlockIndex].medianFee; this.ordinal$.next(ordinal); this.seoService.setTitle(ordinal); this.seoService.setDescription($localize`:@@meta.description.mempool-block:See stats for ${this.stateService.network==='liquid'||this.stateService.network==='liquidtestnet'?'Liquid':'Bitcoin'}${seoDescriptionNetwork(this.stateService.network)} transactions in the mempool: fee range, aggregate size, and more. Mempool blocks are updated in real-time as the network receives new transactions.`); diff --git a/frontend/src/app/components/mempool-blocks/mempool-blocks.component.ts b/frontend/src/app/components/mempool-blocks/mempool-blocks.component.ts index 3e429fa9f..e2dab4165 100644 --- a/frontend/src/app/components/mempool-blocks/mempool-blocks.component.ts +++ b/frontend/src/app/components/mempool-blocks/mempool-blocks.component.ts @@ -171,6 +171,8 @@ export class MempoolBlocksComponent implements OnInit, OnChanges, OnDestroy { block.index = this.blockIndex + i; block.height = lastBlock.height + i + 1; block.blink = specialBlocks[block.height]?.networks.includes(this.stateService.network || 'mainnet') ? true : false; + block.medianFee = block.effectiveMedianFee ?? block.medianFee; + block.feeRange = block.effectiveFeeRange ?? block.feeRange; }); const stringifiedBlocks = JSON.stringify(mempoolBlocks); diff --git a/frontend/src/app/components/tx-fee-rating/tx-fee-rating.component.ts b/frontend/src/app/components/tx-fee-rating/tx-fee-rating.component.ts index 5eec72800..3d417ab5a 100644 --- a/frontend/src/app/components/tx-fee-rating/tx-fee-rating.component.ts +++ b/frontend/src/app/components/tx-fee-rating/tx-fee-rating.component.ts @@ -30,7 +30,7 @@ export class TxFeeRatingComponent implements OnInit, OnChanges, OnDestroy { ngOnInit() { this.blocksSubscription = this.cacheService.loadedBlocks$.subscribe((block) => { - if (this.tx.status.confirmed && this.tx.status.block_height === block.height && block?.extras?.medianFee > 0) { + if (this.tx.status.confirmed && this.tx.status.block_height === block.height && (block?.extras?.effectiveMedianFee ?? block?.extras?.medianFee) > 0) { this.calculateRatings(block); this.cd.markForCheck(); } @@ -45,7 +45,7 @@ export class TxFeeRatingComponent implements OnInit, OnChanges, OnDestroy { this.cacheService.loadBlock(this.tx.status.block_height); const foundBlock = this.cacheService.getCachedBlock(this.tx.status.block_height) || null; - if (foundBlock && foundBlock?.extras?.medianFee > 0) { + if (foundBlock && (foundBlock?.extras?.effectiveMedianFee ?? foundBlock?.extras?.medianFee) > 0) { this.calculateRatings(foundBlock); } } @@ -56,7 +56,7 @@ export class TxFeeRatingComponent implements OnInit, OnChanges, OnDestroy { calculateRatings(block: BlockExtended) { const feePervByte = this.tx.effectiveFeePerVsize || this.tx.fee / (this.tx.weight / 4); - this.medianFeeNeeded = block?.extras?.medianFee; + this.medianFeeNeeded = block?.extras?.effectiveMedianFee ?? block?.extras?.medianFee; // Block not filled if (block.weight < this.stateService.env.BLOCK_WEIGHT_UNITS * 0.95) { diff --git a/frontend/src/app/interfaces/node-api.interface.ts b/frontend/src/app/interfaces/node-api.interface.ts index b39f8e0d3..14dc68542 100644 --- a/frontend/src/app/interfaces/node-api.interface.ts +++ b/frontend/src/app/interfaces/node-api.interface.ts @@ -196,6 +196,8 @@ export interface BlockExtension { minFee?: number; maxFee?: number; feeRange?: number[]; + effectiveMedianFee?: number; + effectiveFeeRange?: number[]; reward?: number; coinbaseRaw?: string; matchRate?: number; diff --git a/frontend/src/app/interfaces/websocket.interface.ts b/frontend/src/app/interfaces/websocket.interface.ts index d61610a2e..fee1b315b 100644 --- a/frontend/src/app/interfaces/websocket.interface.ts +++ b/frontend/src/app/interfaces/websocket.interface.ts @@ -61,8 +61,10 @@ export interface MempoolBlock { blockVSize: number; nTx: number; medianFee: number; + effectiveMedianFee?: number; totalFees: number; feeRange: number[]; + effectiveFeeRange?: number[]; index: number; isStack?: boolean; }