[wallet] deduplicate GetAvailableCredit logic
This commit is contained in:
parent
ef7bc8893c
commit
7110c830f8
1 changed files with 4 additions and 25 deletions
|
@ -1983,6 +1983,9 @@ CAmount CWalletTx::GetAvailableCredit(bool fUseCache, const isminefilter& filter
|
||||||
if (filter == ISMINE_SPENDABLE) {
|
if (filter == ISMINE_SPENDABLE) {
|
||||||
cache = &nAvailableCreditCached;
|
cache = &nAvailableCreditCached;
|
||||||
cache_used = &fAvailableCreditCached;
|
cache_used = &fAvailableCreditCached;
|
||||||
|
} else if (filter == ISMINE_WATCH_ONLY) {
|
||||||
|
cache = &nAvailableWatchCreditCached;
|
||||||
|
cache_used = &fAvailableWatchCreditCached;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fUseCache && cache_used && *cache_used) {
|
if (fUseCache && cache_used && *cache_used) {
|
||||||
|
@ -2025,31 +2028,7 @@ CAmount CWalletTx::GetImmatureWatchOnlyCredit(const bool fUseCache) const
|
||||||
|
|
||||||
CAmount CWalletTx::GetAvailableWatchOnlyCredit(const bool fUseCache) const
|
CAmount CWalletTx::GetAvailableWatchOnlyCredit(const bool fUseCache) const
|
||||||
{
|
{
|
||||||
if (pwallet == nullptr)
|
return GetAvailableCredit(fUseCache, ISMINE_WATCH_ONLY);
|
||||||
return 0;
|
|
||||||
|
|
||||||
// Must wait until coinbase is safely deep enough in the chain before valuing it
|
|
||||||
if (IsCoinBase() && GetBlocksToMaturity() > 0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (fUseCache && fAvailableWatchCreditCached)
|
|
||||||
return nAvailableWatchCreditCached;
|
|
||||||
|
|
||||||
CAmount nCredit = 0;
|
|
||||||
for (unsigned int i = 0; i < tx->vout.size(); i++)
|
|
||||||
{
|
|
||||||
if (!pwallet->IsSpent(GetHash(), i))
|
|
||||||
{
|
|
||||||
const CTxOut &txout = tx->vout[i];
|
|
||||||
nCredit += pwallet->GetCredit(txout, ISMINE_WATCH_ONLY);
|
|
||||||
if (!MoneyRange(nCredit))
|
|
||||||
throw std::runtime_error(std::string(__func__) + ": value out of range");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
nAvailableWatchCreditCached = nCredit;
|
|
||||||
fAvailableWatchCreditCached = true;
|
|
||||||
return nCredit;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CAmount CWalletTx::GetChange() const
|
CAmount CWalletTx::GetChange() const
|
||||||
|
|
Loading…
Reference in a new issue