#include <wallet/coinselection.h>
#include <consensus/amount.h>
#include <policy/feerate.h>
#include <util/check.h>
#include <util/system.h>
#include <util/moneystr.h>
#include <numeric>
#include <optional>
Go to the source code of this file.
|
bool | SelectCoinsBnB (std::vector< OutputGroup > &utxo_pool, const CAmount &selection_target, const CAmount &cost_of_change, std::set< CInputCoin > &out_set, CAmount &value_ret) |
|
std::optional< std::pair< std::set< CInputCoin >, CAmount > > | SelectCoinsSRD (const std::vector< OutputGroup > &utxo_pool, CAmount target_value) |
| Select coins by Single Random Draw. More...
|
|
static void | ApproximateBestSubset (const std::vector< OutputGroup > &groups, const CAmount &nTotalLower, const CAmount &nTargetValue, std::vector< char > &vfBest, CAmount &nBest, int iterations=1000) |
|
bool | KnapsackSolver (const CAmount &nTargetValue, std::vector< OutputGroup > &groups, std::set< CInputCoin > &setCoinsRet, CAmount &nValueRet) |
|
CAmount | GetSelectionWaste (const std::set< CInputCoin > &inputs, CAmount change_cost, CAmount target, bool use_effective_value) |
| Compute the waste for this result given the cost of change and the opportunity cost of spending these inputs now vs in the future. More...
|
|
◆ ApproximateBestSubset()
static void ApproximateBestSubset |
( |
const std::vector< OutputGroup > & |
groups, |
|
|
const CAmount & |
nTotalLower, |
|
|
const CAmount & |
nTargetValue, |
|
|
std::vector< char > & |
vfBest, |
|
|
CAmount & |
nBest, |
|
|
int |
iterations = 1000 |
|
) |
| |
|
static |
◆ GetSelectionWaste()
Compute the waste for this result given the cost of change and the opportunity cost of spending these inputs now vs in the future.
If change exists, waste = change_cost + inputs * (effective_feerate - long_term_feerate) If no change, waste = excess + inputs * (effective_feerate - long_term_feerate) where excess = selected_effective_value - target change_cost = effective_feerate * change_output_size + long_term_feerate * change_spend_size
- Parameters
-
[in] | inputs | The selected inputs |
[in] | change_cost | The cost of creating change and spending it in the future. Only used if there is change, in which case it must be positive. Must be 0 if there is no change. |
[in] | target | The amount targeted by the coin selection algorithm. |
[in] | use_effective_value | Whether to use the input's effective value (when true) or the real value (when false). |
- Returns
- The waste
Definition at line 372 of file coinselection.cpp.
◆ KnapsackSolver()
◆ SelectCoinsBnB()
◆ SelectCoinsSRD()
Select coins by Single Random Draw.
OutputGroups are selected randomly from the eligible outputs until the target is satisfied
- Parameters
-
[in] | utxo_pool | The positive effective value OutputGroups eligible for selection |
[in] | target_value | The target value to select for |
- Returns
- If successful, a pair of set of outputs and total selected value, otherwise, std::nullopt
Definition at line 174 of file coinselection.cpp.
struct { ... } descending |
◆ TOTAL_TRIES
const size_t TOTAL_TRIES = 100000 |
|
static |