Bitcoin Core  22.99.0
P2P Digital Currency
Classes | Functions
spend.h File Reference
#include <wallet/coinselection.h>
#include <wallet/transaction.h>
#include <wallet/wallet.h>
Include dependency graph for spend.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  COutput
 
struct  TxSize
 

Functions

int GetTxSpendSize (const CWallet &wallet, const CWalletTx &wtx, unsigned int out, bool use_max_sig=false)
 Get the marginal bytes if spending the specified output from this transaction. More...
 
int CalculateMaximumSignedInputSize (const CTxOut &txout, const CWallet *pwallet, bool use_max_sig=false)
 
TxSize CalculateMaximumSignedTxSize (const CTransaction &tx, const CWallet *wallet, const std::vector< CTxOut > &txouts, bool use_max_sig=false)
 Calculate the size of the transaction assuming all signatures are max size Use DummySignatureCreator, which inserts 71 byte signatures everywhere. More...
 
TxSize CalculateMaximumSignedTxSize (const CTransaction &tx, const CWallet *wallet, bool use_max_sig=false) EXCLUSIVE_LOCKS_REQUIRED(wallet -> cs_wallet)
 
void AvailableCoins (const CWallet &wallet, std::vector< COutput > &vCoins, const CCoinControl *coinControl=nullptr, const CAmount &nMinimumAmount=1, const CAmount &nMaximumAmount=MAX_MONEY, const CAmount &nMinimumSumAmount=MAX_MONEY, const uint64_t nMaximumCount=0) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet)
 populate vCoins with vector of available COutputs. More...
 
CAmount GetAvailableBalance (const CWallet &wallet, const CCoinControl *coinControl=nullptr)
 
const CTxOutFindNonChangeParentOutput (const CWallet &wallet, const CTransaction &tx, int output) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet)
 Find non-change parent output. More...
 
std::map< CTxDestination, std::vector< COutput > > ListCoins (const CWallet &wallet) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet)
 Return list of available coins and locked coins grouped by non-change output address. More...
 
std::vector< OutputGroupGroupOutputs (const CWallet &wallet, const std::vector< COutput > &outputs, const CoinSelectionParams &coin_sel_params, const CoinEligibilityFilter &filter, bool positive_only)
 
bool AttemptSelection (const CWallet &wallet, const CAmount &nTargetValue, const CoinEligibilityFilter &eligibility_filter, std::vector< COutput > coins, std::set< CInputCoin > &setCoinsRet, CAmount &nValueRet, const CoinSelectionParams &coin_selection_params)
 Shuffle and select coins until nTargetValue is reached while avoiding small change; This method is stochastic for some inputs and upon completion the coin set and corresponding actual target value is assembled param@[in] coins Set of UTXOs to consider. More...
 
bool SelectCoins (const CWallet &wallet, const std::vector< COutput > &vAvailableCoins, const CAmount &nTargetValue, std::set< CInputCoin > &setCoinsRet, CAmount &nValueRet, const CCoinControl &coin_control, CoinSelectionParams &coin_selection_params) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet)
 Select a set of coins such that nValueRet >= nTargetValue and at least all coins from coin_control are selected; never select unconfirmed coins if they are not ours param@[out] setCoinsRet Populated with inputs including pre-selected inputs from coin_control and Coin Selection if successful. More...
 
bool CreateTransaction (CWallet &wallet, const std::vector< CRecipient > &vecSend, CTransactionRef &tx, CAmount &nFeeRet, int &nChangePosInOut, bilingual_str &error, const CCoinControl &coin_control, FeeCalculation &fee_calc_out, bool sign=true)
 Create a new transaction paying the recipients with a set of coins selected by SelectCoins(); Also create the change output, when needed. More...
 
bool FundTransaction (CWallet &wallet, CMutableTransaction &tx, CAmount &nFeeRet, int &nChangePosInOut, bilingual_str &error, bool lockUnspents, const std::set< int > &setSubtractFeeFromOutputs, CCoinControl)
 Insert additional inputs into the transaction by calling CreateTransaction();. More...
 

Function Documentation

◆ AttemptSelection()

bool AttemptSelection ( const CWallet wallet,
const CAmount nTargetValue,
const CoinEligibilityFilter eligibility_filter,
std::vector< COutput coins,
std::set< CInputCoin > &  setCoinsRet,
CAmount nValueRet,
const CoinSelectionParams coin_selection_params 
)

Shuffle and select coins until nTargetValue is reached while avoiding small change; This method is stochastic for some inputs and upon completion the coin set and corresponding actual target value is assembled param@[in] coins Set of UTXOs to consider.

These will be categorized into OutputGroups and filtered using eligibility_filter before selecting coins. param@[out] setCoinsRet Populated with the coins selected if successful. param@[out] nValueRet Used to return the total value of selected coins.

Definition at line 360 of file spend.cpp.

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

◆ AvailableCoins()

void AvailableCoins ( const CWallet wallet,
std::vector< COutput > &  vCoins,
const CCoinControl coinControl = nullptr,
const CAmount nMinimumAmount = 1,
const CAmount nMaximumAmount = MAX_MONEY,
const CAmount nMinimumSumAmount = MAX_MONEY,
const uint64_t  nMaximumCount = 0 
)

populate vCoins with vector of available COutputs.

Definition at line 72 of file spend.cpp.

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

◆ CalculateMaximumSignedInputSize()

int CalculateMaximumSignedInputSize ( const CTxOut txout,
const CWallet pwallet,
bool  use_max_sig = false 
)

Definition at line 34 of file spend.cpp.

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

◆ CalculateMaximumSignedTxSize() [1/2]

TxSize CalculateMaximumSignedTxSize ( const CTransaction tx,
const CWallet wallet,
bool  use_max_sig = false 
) -> cs_wallet)

Definition at line 57 of file spend.cpp.

Here is the call graph for this function:

◆ CalculateMaximumSignedTxSize() [2/2]

TxSize CalculateMaximumSignedTxSize ( const CTransaction tx,
const CWallet wallet,
const std::vector< CTxOut > &  txouts,
bool  use_max_sig = false 
)

Calculate the size of the transaction assuming all signatures are max size Use DummySignatureCreator, which inserts 71 byte signatures everywhere.

NOTE: this requires that all inputs must be in mapWallet (eg the tx should be AllInputsMine).

Definition at line 45 of file spend.cpp.

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

◆ CreateTransaction()

bool CreateTransaction ( CWallet wallet,
const std::vector< CRecipient > &  vecSend,
CTransactionRef tx,
CAmount nFeeRet,
int &  nChangePosInOut,
bilingual_str error,
const CCoinControl coin_control,
FeeCalculation fee_calc_out,
bool  sign = true 
)

Create a new transaction paying the recipients with a set of coins selected by SelectCoins(); Also create the change output, when needed.

Note
passing nChangePosInOut as -1 will result in setting a random position

Definition at line 908 of file spend.cpp.

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

◆ FindNonChangeParentOutput()

const CTxOut& FindNonChangeParentOutput ( const CWallet wallet,
const CTransaction tx,
int  output 
)

Find non-change parent output.

Definition at line 215 of file spend.cpp.

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

◆ FundTransaction()

bool FundTransaction ( CWallet wallet,
CMutableTransaction tx,
CAmount nFeeRet,
int &  nChangePosInOut,
bilingual_str error,
bool  lockUnspents,
const std::set< int > &  setSubtractFeeFromOutputs,
CCoinControl   
)

Insert additional inputs into the transaction by calling CreateTransaction();.

Definition at line 956 of file spend.cpp.

Here is the call graph for this function:

◆ GetAvailableBalance()

CAmount GetAvailableBalance ( const CWallet wallet,
const CCoinControl coinControl = nullptr 
)

Definition at line 200 of file spend.cpp.

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

◆ GetTxSpendSize()

int GetTxSpendSize ( const CWallet wallet,
const CWalletTx wtx,
unsigned int  out,
bool  use_max_sig = false 
)

Get the marginal bytes if spending the specified output from this transaction.

Definition at line 24 of file spend.cpp.

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

◆ GroupOutputs()

std::vector<OutputGroup> GroupOutputs ( const CWallet wallet,
const std::vector< COutput > &  outputs,
const CoinSelectionParams coin_sel_params,
const CoinEligibilityFilter filter,
bool  positive_only 
)

Definition at line 274 of file spend.cpp.

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

◆ ListCoins()

std::map<CTxDestination, std::vector<COutput> > ListCoins ( const CWallet wallet)

Return list of available coins and locked coins grouped by non-change output address.

Definition at line 233 of file spend.cpp.

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

◆ SelectCoins()

bool SelectCoins ( const CWallet wallet,
const std::vector< COutput > &  vAvailableCoins,
const CAmount nTargetValue,
std::set< CInputCoin > &  setCoinsRet,
CAmount nValueRet,
const CCoinControl coin_control,
CoinSelectionParams coin_selection_params 
)

Select a set of coins such that nValueRet >= nTargetValue and at least all coins from coin_control are selected; never select unconfirmed coins if they are not ours param@[out] setCoinsRet Populated with inputs including pre-selected inputs from coin_control and Coin Selection if successful.

param@[out] nValueRet Total value of selected coins including pre-selected ones from coin_control and Coin Selection if successful.

Definition at line 405 of file spend.cpp.

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