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§

source

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 of target_amount with their weight cost
  • optional_utxos: the remaining available utxos to satisfy target_amount with their weight cost
  • fee_rate: fee rate to use
  • target_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 change
  • rand: random number generated used by some coin selection algorithms such as SingleRandomDraw

Object Safety§

This trait is not object safe.

Implementors§