mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-09 10:43:19 -05:00
wallet refactor: use CWalletTx member functions to determine tx state
This commit is contained in:
parent
ffe5ff1fb6
commit
d64922b590
4 changed files with 6 additions and 12 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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:
|
||||||
|
|
Loading…
Add table
Reference in a new issue