Bitcoin ABC  0.28.12
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
 

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)
 Get the marginal bytes of spending the specified output. More...
 
int64_t 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...
 
int64_t 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 Amount nMinimumAmount=SATOSHI, const Amount nMaximumAmount=MAX_MONEY, const Amount nMinimumSumAmount=MAX_MONEY, const uint64_t nMaximumCount=0) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet)
 populate vCoins with vector of available COutputs. More...
 
Amount 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, bool separate_coins, const CFeeRate &effective_feerate, const CFeeRate &long_term_feerate, const CoinEligibilityFilter &filter, bool positive_only)
 
bool SelectCoinsMinConf (const CWallet &wallet, const Amount nTargetValue, const CoinEligibilityFilter &eligibility_filter, std::vector< COutput > coins, std::set< CInputCoin > &setCoinsRet, Amount &nValueRet, const CoinSelectionParams &coin_selection_params, bool &bnb_used)
 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] groups Set of UTXOs to consider. More...
 
bool SelectCoins (const CWallet &wallet, const std::vector< COutput > &vAvailableCoins, const Amount nTargetValue, std::set< CInputCoin > &setCoinsRet, Amount &nValueRet, const CCoinControl &coin_control, CoinSelectionParams &coin_selection_params, bool &bnb_used) 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, Amount &nFeeRet, int &nChangePosInOut, bilingual_str &error, const CCoinControl &coin_control, 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, Amount &nFeeRet, int &nChangePosInOut, bilingual_str &error, bool lockUnspents, const std::set< int > &setSubtractFeeFromOutputs, CCoinControl coinControl)
 Insert additional inputs into the transaction by calling CreateTransaction();. More...
 

Function Documentation

◆ AvailableCoins()

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

populate vCoins with vector of available COutputs.

Definition at line 70 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 
)

Get the marginal bytes of spending the specified output.

Definition at line 33 of file spend.cpp.

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

◆ CalculateMaximumSignedTxSize() [1/2]

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

Definition at line 55 of file spend.cpp.

Here is the call graph for this function:

◆ CalculateMaximumSignedTxSize() [2/2]

int64_t 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 44 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,
Amount nFeeRet,
int &  nChangePosInOut,
bilingual_str error,
const CCoinControl coin_control,
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 990 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 229 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,
Amount nFeeRet,
int &  nChangePosInOut,
bilingual_str error,
bool  lockUnspents,
const std::set< int > &  setSubtractFeeFromOutputs,
CCoinControl  coinControl 
)

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

Definition at line 1029 of file spend.cpp.

Here is the call graph for this function:

◆ GetAvailableBalance()

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

Definition at line 214 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 23 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,
bool  separate_coins,
const CFeeRate effective_feerate,
const CFeeRate long_term_feerate,
const CoinEligibilityFilter filter,
bool  positive_only 
)

Definition at line 304 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 249 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 Amount  nTargetValue,
std::set< CInputCoin > &  setCoinsRet,
Amount nValueRet,
const CCoinControl coin_control,
CoinSelectionParams coin_selection_params,
bool &  bnb_used 
)

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 471 of file spend.cpp.

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

◆ SelectCoinsMinConf()

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

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] groups 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 419 of file spend.cpp.

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