From eb5ad36322e41f2cf9488bfeb5ca5f17ef47e2aa Mon Sep 17 00:00:00 2001 From: Mononaut Date: Wed, 16 Jul 2025 13:18:51 +0000 Subject: [PATCH] reclassify txs after prevouts added --- backend/src/api/bitcoin/bitcoin-api.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/backend/src/api/bitcoin/bitcoin-api.ts b/backend/src/api/bitcoin/bitcoin-api.ts index b78c15bf2..5f2e2619a 100644 --- a/backend/src/api/bitcoin/bitcoin-api.ts +++ b/backend/src/api/bitcoin/bitcoin-api.ts @@ -6,6 +6,7 @@ import blocks from '../blocks'; import mempool from '../mempool'; import { TransactionExtended } from '../../mempool.interfaces'; import transactionUtils from '../transaction-utils'; +import { Common } from '../common'; class BitcoinApi implements AbstractBitcoinApi { private rawMempoolCache: IBitcoinApi.RawMempool | null = null; @@ -360,6 +361,7 @@ class BitcoinApi implements AbstractBitcoinApi { } protected async $addPrevouts(transaction: TransactionExtended): Promise { + let addedPrevouts = false; for (const vin of transaction.vin) { if (vin.prevout) { continue; @@ -367,6 +369,12 @@ class BitcoinApi implements AbstractBitcoinApi { const innerTx = await this.$getRawTransaction(vin.txid, false, false); vin.prevout = innerTx.vout[vin.vout]; transactionUtils.addInnerScriptsToVin(vin); + addedPrevouts = true; + } + if (addedPrevouts) { + // re-calculate transaction flags now that we have full prevout data + transaction.flags = undefined; // clear existing flags to force full classification + transaction.flags = Common.getTransactionFlags(transaction, transaction.status?.block_height ?? blocks.getCurrentBlockHeight()); } return transaction; }