diff options
author | furszy <matiasfurszyfer@protonmail.com> | 2022-11-22 11:51:33 -0300 |
---|---|---|
committer | furszy <matiasfurszyfer@protonmail.com> | 2022-12-02 12:39:15 -0300 |
commit | c4e3b7d6a154e82cdb902fd7bcb7b725aebde5ea (patch) | |
tree | e675087c7edfe2b57d071702e51b66cd0bfd6770 /src/wallet/spend.h | |
parent | cac2725fd0f5baeb741dfe079a87332784c2adc7 (diff) | |
download | bitcoin-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.h | 4 |
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 { |