wallet: avoid extra IsSpentKey -> GetWalletTx lookups

This commit is contained in:
furszy 2022-04-27 11:04:31 -03:00
parent 3d8a282257
commit 4b83bf8dbc
No known key found for this signature in database
GPG Key ID: 5DD23CCC686AA623
3 changed files with 4 additions and 4 deletions

View File

@ -205,8 +205,8 @@ CAmount CachedTxGetAvailableCredit(const CWallet& wallet, const CWalletTx& wtx,
CAmount nCredit = 0;
uint256 hashTx = wtx.GetHash();
for (unsigned int i = 0; i < wtx.tx->vout.size(); i++) {
if (!wallet.IsSpent(COutPoint(hashTx, i)) && (allow_used_addresses || !wallet.IsSpentKey(hashTx, i))) {
const CTxOut &txout = wtx.tx->vout[i];
const CTxOut& txout = wtx.tx->vout[i];
if (!wallet.IsSpent(COutPoint(hashTx, i)) && (allow_used_addresses || !wallet.IsSpentKey(txout.scriptPubKey))) {
nCredit += OutputGetCredit(wallet, txout, filter);
if (!MoneyRange(nCredit))
throw std::runtime_error(std::string(__func__) + " : value out of range");

View File

@ -649,7 +649,7 @@ RPCHelpMan listunspent()
CTxDestination address;
const CScript& scriptPubKey = out.txout.scriptPubKey;
bool fValidAddress = ExtractDestination(scriptPubKey, address);
bool reused = avoid_reuse && pwallet->IsSpentKey(out.outpoint.hash, out.outpoint.n);
bool reused = avoid_reuse && pwallet->IsSpentKey(scriptPubKey);
if (destinations.size() && (!fValidAddress || !destinations.count(address)))
continue;

View File

@ -191,7 +191,7 @@ CoinsResult AvailableCoins(const CWallet& wallet,
continue;
}
if (!allow_used_addresses && wallet.IsSpentKey(wtxid, i)) {
if (!allow_used_addresses && wallet.IsSpentKey(output.scriptPubKey)) {
continue;
}