From d2be9a22d8e2b0d10ee7871dc2b39f0d95bad057 Mon Sep 17 00:00:00 2001 From: Ava Chow Date: Thu, 28 Aug 2025 13:39:46 -0700 Subject: [PATCH] wallet: Determine IsFromMe by checking for TXOs of inputs Instead of checking whether the total amount of inputs known by the wallet is greater than 0, we should be checking for whether the input is known by the wallet. This enables us to determine whether a transaction spends an of output with an amount of 0, which is necessary for marking 0-value dust outputs as spent. Github-Pull: #33268 Rebased-From: 39a7dbdd277d1dea9a70314d8cc5ae057999ee88 --- src/wallet/wallet.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index 6df74e848b8..b51e7d1109b 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -1634,7 +1634,11 @@ bool CWallet::IsMine(const COutPoint& outpoint) const bool CWallet::IsFromMe(const CTransaction& tx) const { - return (GetDebit(tx) > 0); + LOCK(cs_wallet); + for (const CTxIn& txin : tx.vin) { + if (GetTXO(txin.prevout)) return true; + } + return false; } CAmount CWallet::GetDebit(const CTransaction& tx) const