pub trait CoinSelectionAlgorithm: Debug {
// Required method
fn coin_select<R: RngCore>(
&self,
required_utxos: Vec<WeightedUtxo>,
optional_utxos: Vec<WeightedUtxo>,
fee_rate: FeeRate,
target_amount: u64,
drain_script: &Script,
rand: &mut R
) -> Result<CoinSelectionResult, InsufficientFunds>;
}
Expand description
Trait for generalized coin selection algorithms
This trait can be implemented to make the Wallet
use a customized coin
selection algorithm when it creates transactions.
For an example see this module’s documentation.
Required Methods§
sourcefn coin_select<R: RngCore>(
&self,
required_utxos: Vec<WeightedUtxo>,
optional_utxos: Vec<WeightedUtxo>,
fee_rate: FeeRate,
target_amount: u64,
drain_script: &Script,
rand: &mut R
) -> Result<CoinSelectionResult, InsufficientFunds>
fn coin_select<R: RngCore>( &self, required_utxos: Vec<WeightedUtxo>, optional_utxos: Vec<WeightedUtxo>, fee_rate: FeeRate, target_amount: u64, drain_script: &Script, rand: &mut R ) -> Result<CoinSelectionResult, InsufficientFunds>
Perform the coin selection
required_utxos
: the utxos that must be spent regardless oftarget_amount
with their weight costoptional_utxos
: the remaining available utxos to satisfytarget_amount
with their weight costfee_rate
: fee rate to usetarget_amount
: the outgoing amount in satoshis and the fees already accumulated from added outputs and transaction’s header.drain_script
: the script to use in case of changerand
: random number generated used by some coin selection algorithms such asSingleRandomDraw
Object Safety§
This trait is not object safe.