From 3d9133c47e5de24edc1a3a91ca797d2b81e3459b Mon Sep 17 00:00:00 2001 From: natsoni Date: Thu, 25 Jul 2024 11:52:55 +0200 Subject: [PATCH] Add fee delta to acceleration data --- backend/src/api/bitcoin/bitcoin.routes.ts | 1 + backend/src/api/mempool-blocks.ts | 2 ++ backend/src/api/websocket-handler.ts | 4 ++++ backend/src/mempool.interfaces.ts | 4 +++- .../src/app/components/transaction/transaction.component.ts | 1 + frontend/src/app/interfaces/electrs.interface.ts | 1 + frontend/src/app/interfaces/node-api.interface.ts | 1 + 7 files changed, 13 insertions(+), 1 deletion(-) diff --git a/backend/src/api/bitcoin/bitcoin.routes.ts b/backend/src/api/bitcoin/bitcoin.routes.ts index a65af3f19..6225a9c1d 100644 --- a/backend/src/api/bitcoin/bitcoin.routes.ts +++ b/backend/src/api/bitcoin/bitcoin.routes.ts @@ -165,6 +165,7 @@ class BitcoinRoutes { acceleration: tx.acceleration, acceleratedBy: tx.acceleratedBy || undefined, acceleratedAt: tx.acceleratedAt || undefined, + feeDelta: tx.feeDelta || undefined, }); return; } diff --git a/backend/src/api/mempool-blocks.ts b/backend/src/api/mempool-blocks.ts index e655601e5..5d9dcf8f4 100644 --- a/backend/src/api/mempool-blocks.ts +++ b/backend/src/api/mempool-blocks.ts @@ -453,6 +453,7 @@ class MempoolBlocks { mempoolTx.acceleration = true; mempoolTx.acceleratedBy = isAcceleratedBy[txid] || acceleration?.pools; mempoolTx.acceleratedAt = acceleration?.added; + mempoolTx.feeDelta = acceleration?.feeDelta; for (const ancestor of mempoolTx.ancestors || []) { if (!mempool[ancestor.txid].acceleration) { mempool[ancestor.txid].cpfpDirty = true; @@ -460,6 +461,7 @@ class MempoolBlocks { mempool[ancestor.txid].acceleration = true; mempool[ancestor.txid].acceleratedBy = mempoolTx.acceleratedBy; mempool[ancestor.txid].acceleratedAt = mempoolTx.acceleratedAt; + mempool[ancestor.txid].feeDelta = mempoolTx.feeDelta; isAcceleratedBy[ancestor.txid] = mempoolTx.acceleratedBy; } } else { diff --git a/backend/src/api/websocket-handler.ts b/backend/src/api/websocket-handler.ts index 32d306ad2..e57b8221b 100644 --- a/backend/src/api/websocket-handler.ts +++ b/backend/src/api/websocket-handler.ts @@ -823,6 +823,7 @@ class WebsocketHandler { accelerated: mempoolTx.acceleration || undefined, acceleratedBy: mempoolTx.acceleratedBy || undefined, acceleratedAt: mempoolTx.acceleratedAt || undefined, + feeDelta: mempoolTx.feeDelta || undefined, }, accelerationPositions: memPool.getAccelerationPositions(mempoolTx.txid), }; @@ -864,6 +865,7 @@ class WebsocketHandler { accelerated: mempoolTx.acceleration || undefined, acceleratedBy: mempoolTx.acceleratedBy || undefined, acceleratedAt: mempoolTx.acceleratedAt || undefined, + feeDelta: mempoolTx.feeDelta || undefined, }; if (!mempoolTx.cpfpChecked) { calculateMempoolTxCpfp(mempoolTx, newMempool); @@ -1138,6 +1140,7 @@ class WebsocketHandler { accelerated: mempoolTx.acceleration || undefined, acceleratedBy: mempoolTx.acceleratedBy || undefined, acceleratedAt: mempoolTx.acceleratedAt || undefined, + feeDelta: mempoolTx.feeDelta || undefined, }, accelerationPositions: memPool.getAccelerationPositions(mempoolTx.txid), }); @@ -1160,6 +1163,7 @@ class WebsocketHandler { accelerated: mempoolTx.acceleration || undefined, acceleratedBy: mempoolTx.acceleratedBy || undefined, acceleratedAt: mempoolTx.acceleratedAt || undefined, + feeDelta: mempoolTx.feeDelta || undefined, }; } } diff --git a/backend/src/mempool.interfaces.ts b/backend/src/mempool.interfaces.ts index 0ad60f4b9..2dd0f17dd 100644 --- a/backend/src/mempool.interfaces.ts +++ b/backend/src/mempool.interfaces.ts @@ -126,6 +126,7 @@ export interface TransactionExtended extends IEsploraApi.Transaction { acceleration?: boolean; acceleratedBy?: number[]; acceleratedAt?: number; + feeDelta?: number; replacement?: boolean; uid?: number; flags?: number; @@ -449,7 +450,7 @@ export interface OptimizedStatistic { export interface TxTrackingInfo { replacedBy?: string, - position?: { block: number, vsize: number, accelerated?: boolean, acceleratedBy?: number[], acceleratedAt?: number }, + position?: { block: number, vsize: number, accelerated?: boolean, acceleratedBy?: number[], acceleratedAt?: number, feeDelta?: number }, cpfp?: { ancestors?: Ancestor[], bestDescendant?: Ancestor | null, @@ -462,6 +463,7 @@ export interface TxTrackingInfo { accelerated?: boolean, acceleratedBy?: number[], acceleratedAt?: number, + feeDelta?: number, confirmed?: boolean } diff --git a/frontend/src/app/components/transaction/transaction.component.ts b/frontend/src/app/components/transaction/transaction.component.ts index 924addaa0..107e471fc 100644 --- a/frontend/src/app/components/transaction/transaction.component.ts +++ b/frontend/src/app/components/transaction/transaction.component.ts @@ -816,6 +816,7 @@ export class TransactionComponent implements OnInit, AfterViewInit, OnDestroy { this.tx.acceleration = cpfpInfo.acceleration; this.tx.acceleratedBy = cpfpInfo.acceleratedBy; this.tx.acceleratedAt = cpfpInfo.acceleratedAt; + this.tx.feeDelta = cpfpInfo.feeDelta; this.setIsAccelerated(firstCpfp); } diff --git a/frontend/src/app/interfaces/electrs.interface.ts b/frontend/src/app/interfaces/electrs.interface.ts index 942386d8f..2167099c2 100644 --- a/frontend/src/app/interfaces/electrs.interface.ts +++ b/frontend/src/app/interfaces/electrs.interface.ts @@ -22,6 +22,7 @@ export interface Transaction { acceleration?: boolean; acceleratedBy?: number[]; acceleratedAt?: number; + feeDelta?: number; deleteAfter?: number; _unblinded?: any; _deduced?: boolean; diff --git a/frontend/src/app/interfaces/node-api.interface.ts b/frontend/src/app/interfaces/node-api.interface.ts index 9a00faadc..077bfa775 100644 --- a/frontend/src/app/interfaces/node-api.interface.ts +++ b/frontend/src/app/interfaces/node-api.interface.ts @@ -31,6 +31,7 @@ export interface CpfpInfo { acceleration?: boolean; acceleratedBy?: number[]; acceleratedAt?: number; + feeDelta?: number; } export interface RbfInfo {