wallet refactor: use CWalletTx member functions to determine tx state

This commit is contained in:
ishaanam 2023-03-01 13:46:23 -05:00
parent ffe5ff1fb6
commit d64922b590
4 changed files with 6 additions and 12 deletions

View File

@ -101,7 +101,7 @@ WalletTxStatus MakeWalletTxStatus(const CWallet& wallet, const CWalletTx& wtx)
result.is_trusted = CachedTxIsTrusted(wallet, wtx); result.is_trusted = CachedTxIsTrusted(wallet, wtx);
result.is_abandoned = wtx.isAbandoned(); result.is_abandoned = wtx.isAbandoned();
result.is_coinbase = wtx.IsCoinBase(); result.is_coinbase = wtx.IsCoinBase();
result.is_in_main_chain = wallet.IsTxInMainChain(wtx); result.is_in_main_chain = wtx.isConfirmed();
return result; return result;
} }

View File

@ -149,7 +149,7 @@ CAmount CachedTxGetImmatureCredit(const CWallet& wallet, const CWalletTx& wtx, c
{ {
AssertLockHeld(wallet.cs_wallet); AssertLockHeld(wallet.cs_wallet);
if (wallet.IsTxImmatureCoinBase(wtx) && wallet.IsTxInMainChain(wtx)) { if (wallet.IsTxImmatureCoinBase(wtx) && wtx.isConfirmed()) {
return GetCachableAmount(wallet, wtx, CWalletTx::IMMATURE_CREDIT, filter); return GetCachableAmount(wallet, wtx, CWalletTx::IMMATURE_CREDIT, filter);
} }
@ -256,9 +256,8 @@ bool CachedTxIsFromMe(const CWallet& wallet, const CWalletTx& wtx, const isminef
bool CachedTxIsTrusted(const CWallet& wallet, const CWalletTx& wtx, std::set<uint256>& trusted_parents) bool CachedTxIsTrusted(const CWallet& wallet, const CWalletTx& wtx, std::set<uint256>& trusted_parents)
{ {
AssertLockHeld(wallet.cs_wallet); AssertLockHeld(wallet.cs_wallet);
int nDepth = wallet.GetTxDepthInMainChain(wtx); if (wtx.isConfirmed()) return true;
if (nDepth >= 1) return true; if (wtx.isBlockConflicted()) return false;
if (nDepth < 0) return false;
// using wtx's cached debit // using wtx's cached debit
if (!wallet.m_spend_zero_conf_change || !CachedTxIsFromMe(wallet, wtx, ISMINE_ALL)) return false; if (!wallet.m_spend_zero_conf_change || !CachedTxIsFromMe(wallet, wtx, ISMINE_ALL)) return false;

View File

@ -752,8 +752,8 @@ bool CWallet::IsSpent(const COutPoint& outpoint) const
const uint256& wtxid = it->second; const uint256& wtxid = it->second;
const auto mit = mapWallet.find(wtxid); const auto mit = mapWallet.find(wtxid);
if (mit != mapWallet.end()) { if (mit != mapWallet.end()) {
int depth = GetTxDepthInMainChain(mit->second); const auto& wtx = mit->second;
if (depth > 0 || (depth == 0 && !mit->second.isAbandoned())) if (!wtx.isAbandoned() && !wtx.isBlockConflicted())
return true; // Spent return true; // Spent
} }
} }

View File

@ -515,11 +515,6 @@ public:
* referenced in transaction, and might cause assert failures. * referenced in transaction, and might cause assert failures.
*/ */
int GetTxDepthInMainChain(const CWalletTx& wtx) const EXCLUSIVE_LOCKS_REQUIRED(cs_wallet); int GetTxDepthInMainChain(const CWalletTx& wtx) const EXCLUSIVE_LOCKS_REQUIRED(cs_wallet);
bool IsTxInMainChain(const CWalletTx& wtx) const EXCLUSIVE_LOCKS_REQUIRED(cs_wallet)
{
AssertLockHeld(cs_wallet);
return GetTxDepthInMainChain(wtx) > 0;
}
/** /**
* @return number of blocks to maturity for this transaction: * @return number of blocks to maturity for this transaction: