Bitcoin Core  26.1.0
P2P Digital Currency
Public Member Functions | Public Attributes | Private Attributes | List of all members
wallet::CCoinControl Class Reference

Coin Control Features. More...

#include <coincontrol.h>

Collaboration diagram for wallet::CCoinControl:
[legend]

Public Member Functions

 CCoinControl ()
 
bool HasSelected () const
 Returns true if there are pre-selected inputs. More...
 
bool IsSelected (const COutPoint &output) const
 Returns true if the given output is pre-selected. More...
 
bool IsExternalSelected (const COutPoint &output) const
 Returns true if the given output is selected as an external input. More...
 
std::optional< CTxOutGetExternalOutput (const COutPoint &outpoint) const
 Returns the external output for the given outpoint if it exists. More...
 
void Select (const COutPoint &output)
 Lock-in the given output for spending. More...
 
void SelectExternal (const COutPoint &outpoint, const CTxOut &txout)
 Lock-in the given output as an external input for spending because it is not in the wallet. More...
 
void UnSelect (const COutPoint &output)
 Unselects the given output. More...
 
void UnSelectAll ()
 Unselects all outputs. More...
 
std::vector< COutPointListSelected () const
 List the selected inputs. More...
 
void SetInputWeight (const COutPoint &outpoint, int64_t weight)
 Set an input's weight. More...
 
bool HasInputWeight (const COutPoint &outpoint) const
 Returns true if the input weight is set. More...
 
int64_t GetInputWeight (const COutPoint &outpoint) const
 Returns the input weight. More...
 

Public Attributes

CTxDestination destChange = CNoDestination()
 Custom change destination, if not set an address is generated. More...
 
std::optional< OutputTypem_change_type
 Override the default change type if set, ignored if destChange is set. More...
 
bool m_include_unsafe_inputs = false
 If false, only safe inputs will be used. More...
 
bool m_allow_other_inputs = true
 If true, the selection process can add extra unselected inputs from the wallet while requires all selected inputs be used. More...
 
bool fAllowWatchOnly = false
 Includes watch only addresses which are solvable. More...
 
bool fOverrideFeeRate = false
 Override automatic min/max checks on fee, m_feerate must be set if true. More...
 
std::optional< CFeeRatem_feerate
 Override the wallet's m_pay_tx_fee if set. More...
 
std::optional< unsigned int > m_confirm_target
 Override the default confirmation target if set. More...
 
std::optional< bool > m_signal_bip125_rbf
 Override the wallet's m_signal_rbf if set. More...
 
bool m_avoid_partial_spends = DEFAULT_AVOIDPARTIALSPENDS
 Avoid partial use of funds sent to a given address. More...
 
bool m_avoid_address_reuse = false
 Forbids inclusion of dirty (previously used) addresses. More...
 
FeeEstimateMode m_fee_mode = FeeEstimateMode::UNSET
 Fee estimation mode to control arguments to estimateSmartFee. More...
 
int m_min_depth = DEFAULT_MIN_DEPTH
 Minimum chain depth value for coin availability. More...
 
int m_max_depth = DEFAULT_MAX_DEPTH
 Maximum chain depth value for coin availability. More...
 
FlatSigningProvider m_external_provider
 SigningProvider that has pubkeys and scripts to do spend size estimation for external inputs. More...
 

Private Attributes

std::set< COutPointm_selected_inputs
 Selected inputs (inputs that will be used, regardless of whether they're optimal or not) More...
 
std::map< COutPoint, CTxOutm_external_txouts
 Map of external inputs to include in the transaction These are not in the wallet, so we need to track them separately. More...
 
std::map< COutPoint, int64_t > m_input_weights
 Map of COutPoints to the maximum weight for that input. More...
 

Detailed Description

Coin Control Features.

Definition at line 28 of file coincontrol.h.

Constructor & Destructor Documentation

◆ CCoinControl()

wallet::CCoinControl::CCoinControl ( )

Definition at line 10 of file coincontrol.cpp.

Here is the call graph for this function:

Member Function Documentation

◆ GetExternalOutput()

std::optional< CTxOut > wallet::CCoinControl::GetExternalOutput ( const COutPoint outpoint) const

Returns the external output for the given outpoint if it exists.

Definition at line 30 of file coincontrol.cpp.

Here is the caller graph for this function:

◆ GetInputWeight()

int64_t wallet::CCoinControl::GetInputWeight ( const COutPoint outpoint) const

Returns the input weight.

Definition at line 76 of file coincontrol.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ HasInputWeight()

bool wallet::CCoinControl::HasInputWeight ( const COutPoint outpoint) const

Returns true if the input weight is set.

Definition at line 71 of file coincontrol.cpp.

Here is the caller graph for this function:

◆ HasSelected()

bool wallet::CCoinControl::HasSelected ( ) const

Returns true if there are pre-selected inputs.

Definition at line 15 of file coincontrol.cpp.

Here is the caller graph for this function:

◆ IsExternalSelected()

bool wallet::CCoinControl::IsExternalSelected ( const COutPoint output) const

Returns true if the given output is selected as an external input.

Definition at line 25 of file coincontrol.cpp.

Here is the caller graph for this function:

◆ IsSelected()

bool wallet::CCoinControl::IsSelected ( const COutPoint output) const

Returns true if the given output is pre-selected.

Definition at line 20 of file coincontrol.cpp.

Here is the caller graph for this function:

◆ ListSelected()

std::vector< COutPoint > wallet::CCoinControl::ListSelected ( ) const

List the selected inputs.

Definition at line 61 of file coincontrol.cpp.

Here is the caller graph for this function:

◆ Select()

void wallet::CCoinControl::Select ( const COutPoint output)

Lock-in the given output for spending.

The output will be included in the transaction even if it's not the most optimal choice.

Definition at line 40 of file coincontrol.cpp.

Here is the caller graph for this function:

◆ SelectExternal()

void wallet::CCoinControl::SelectExternal ( const COutPoint outpoint,
const CTxOut txout 
)

Lock-in the given output as an external input for spending because it is not in the wallet.

The output will be included in the transaction even if it's not the most optimal choice.

Definition at line 45 of file coincontrol.cpp.

Here is the caller graph for this function:

◆ SetInputWeight()

void wallet::CCoinControl::SetInputWeight ( const COutPoint outpoint,
int64_t  weight 
)

Set an input's weight.

Definition at line 66 of file coincontrol.cpp.

Here is the caller graph for this function:

◆ UnSelect()

void wallet::CCoinControl::UnSelect ( const COutPoint output)

Unselects the given output.

Definition at line 51 of file coincontrol.cpp.

Here is the caller graph for this function:

◆ UnSelectAll()

void wallet::CCoinControl::UnSelectAll ( )

Unselects all outputs.

Definition at line 56 of file coincontrol.cpp.

Here is the caller graph for this function:

Member Data Documentation

◆ destChange

CTxDestination wallet::CCoinControl::destChange = CNoDestination()

Custom change destination, if not set an address is generated.

Definition at line 32 of file coincontrol.h.

◆ fAllowWatchOnly

bool wallet::CCoinControl::fAllowWatchOnly = false

Includes watch only addresses which are solvable.

Definition at line 41 of file coincontrol.h.

◆ fOverrideFeeRate

bool wallet::CCoinControl::fOverrideFeeRate = false

Override automatic min/max checks on fee, m_feerate must be set if true.

Definition at line 43 of file coincontrol.h.

◆ m_allow_other_inputs

bool wallet::CCoinControl::m_allow_other_inputs = true

If true, the selection process can add extra unselected inputs from the wallet while requires all selected inputs be used.

Definition at line 39 of file coincontrol.h.

◆ m_avoid_address_reuse

bool wallet::CCoinControl::m_avoid_address_reuse = false

Forbids inclusion of dirty (previously used) addresses.

Definition at line 53 of file coincontrol.h.

◆ m_avoid_partial_spends

bool wallet::CCoinControl::m_avoid_partial_spends = DEFAULT_AVOIDPARTIALSPENDS

Avoid partial use of funds sent to a given address.

Definition at line 51 of file coincontrol.h.

◆ m_change_type

std::optional<OutputType> wallet::CCoinControl::m_change_type

Override the default change type if set, ignored if destChange is set.

Definition at line 34 of file coincontrol.h.

◆ m_confirm_target

std::optional<unsigned int> wallet::CCoinControl::m_confirm_target

Override the default confirmation target if set.

Definition at line 47 of file coincontrol.h.

◆ m_external_provider

FlatSigningProvider wallet::CCoinControl::m_external_provider

SigningProvider that has pubkeys and scripts to do spend size estimation for external inputs.

Definition at line 61 of file coincontrol.h.

◆ m_external_txouts

std::map<COutPoint, CTxOut> wallet::CCoinControl::m_external_txouts
private

Map of external inputs to include in the transaction These are not in the wallet, so we need to track them separately.

Definition at line 121 of file coincontrol.h.

◆ m_fee_mode

FeeEstimateMode wallet::CCoinControl::m_fee_mode = FeeEstimateMode::UNSET

Fee estimation mode to control arguments to estimateSmartFee.

Definition at line 55 of file coincontrol.h.

◆ m_feerate

std::optional<CFeeRate> wallet::CCoinControl::m_feerate

Override the wallet's m_pay_tx_fee if set.

Definition at line 45 of file coincontrol.h.

◆ m_include_unsafe_inputs

bool wallet::CCoinControl::m_include_unsafe_inputs = false

If false, only safe inputs will be used.

Definition at line 36 of file coincontrol.h.

◆ m_input_weights

std::map<COutPoint, int64_t> wallet::CCoinControl::m_input_weights
private

Map of COutPoints to the maximum weight for that input.

Definition at line 123 of file coincontrol.h.

◆ m_max_depth

int wallet::CCoinControl::m_max_depth = DEFAULT_MAX_DEPTH

Maximum chain depth value for coin availability.

Definition at line 59 of file coincontrol.h.

◆ m_min_depth

int wallet::CCoinControl::m_min_depth = DEFAULT_MIN_DEPTH

Minimum chain depth value for coin availability.

Definition at line 57 of file coincontrol.h.

◆ m_selected_inputs

std::set<COutPoint> wallet::CCoinControl::m_selected_inputs
private

Selected inputs (inputs that will be used, regardless of whether they're optimal or not)

Definition at line 118 of file coincontrol.h.

◆ m_signal_bip125_rbf

std::optional<bool> wallet::CCoinControl::m_signal_bip125_rbf

Override the wallet's m_signal_rbf if set.

Definition at line 49 of file coincontrol.h.


The documentation for this class was generated from the following files: