aboutsummaryrefslogtreecommitdiff
path: root/src/wallet/spend.h
diff options
context:
space:
mode:
authorfurszy <matiasfurszyfer@protonmail.com>2022-11-22 11:51:33 -0300
committerfurszy <matiasfurszyfer@protonmail.com>2022-12-02 12:39:15 -0300
commitc4e3b7d6a154e82cdb902fd7bcb7b725aebde5ea (patch)
treee675087c7edfe2b57d071702e51b66cd0bfd6770 /src/wallet/spend.h
parentcac2725fd0f5baeb741dfe079a87332784c2adc7 (diff)
downloadbitcoin-c4e3b7d6a154e82cdb902fd7bcb7b725aebde5ea.tar.xz
wallet: SelectCoins, return early if wallet's UTXOs cannot cover the target
The CoinsResult class will now count the raw total amount and the effective total amount internally (inside the 'CoinsResult::Add' and 'CoinsResult::Erase' methods). So there is no discrepancy between what we add/erase and the total values. (which is what was happening on the coinselector_test because the 'CoinsResult' object is manually created there, and we were not keeping the total amount in sync with the outputs being added/removed).
Diffstat (limited to 'src/wallet/spend.h')
-rw-r--r--src/wallet/spend.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/wallet/spend.h b/src/wallet/spend.h
index df57fc1362..8612ce49ad 100644
--- a/src/wallet/spend.h
+++ b/src/wallet/spend.h
@@ -51,8 +51,10 @@ struct CoinsResult {
void Shuffle(FastRandomContext& rng_fast);
void Add(OutputType type, const COutput& out);
- /** Sum of all available coins */
+ /** Sum of all available coins raw value */
CAmount total_amount{0};
+ /** Sum of all available coins effective value (each output value minus fees required to spend it) */
+ std::optional<CAmount> total_effective_amount{0};
};
struct CoinFilterParams {