![]() |
Bitcoin Core 22.99.0
P2P Digital Currency
|
#include <consensus/amount.h>#include <wallet/coinselection.h>#include <wallet/transaction.h>#include <wallet/wallet.h>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) |
| int | CalculateMaximumSignedInputSize (const CTxOut &txout, const SigningProvider *pwallet, bool use_max_sig=false) |
| TxSize | CalculateMaximumSignedTxSize (const CTransaction &tx, const CWallet *wallet, const std::vector< CTxOut > &txouts, const CCoinControl *coin_control=nullptr) |
| 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, const CCoinControl *coin_control=nullptr) 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 CTxOut & | FindNonChangeParentOutput (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< OutputGroup > | GroupOutputs (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... | |
| 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 376 of file spend.cpp.
| int CalculateMaximumSignedInputSize | ( | const CTxOut & | txout, |
| const SigningProvider * | pwallet, | ||
| bool | use_max_sig = false |
||
| ) |
| TxSize CalculateMaximumSignedTxSize | ( | const CTransaction & | tx, |
| const CWallet * | wallet, | ||
| const CCoinControl * | coin_control = nullptr |
||
| ) | -> cs_wallet) |
| TxSize CalculateMaximumSignedTxSize | ( | const CTransaction & | tx, |
| const CWallet * | wallet, | ||
| const std::vector< CTxOut > & | txouts, | ||
| const CCoinControl * | coin_control = nullptr |
||
| ) |
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 53 of file spend.cpp.
| 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.
Definition at line 941 of file spend.cpp.
| const CTxOut & FindNonChangeParentOutput | ( | const CWallet & | wallet, |
| const CTransaction & | tx, | ||
| int | output | ||
| ) |
| bool FundTransaction | ( | CWallet & | wallet, |
| CMutableTransaction & | tx, | ||
| CAmount & | 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 989 of file spend.cpp.
| CAmount GetAvailableBalance | ( | const CWallet & | wallet, |
| const CCoinControl * | coinControl = nullptr |
||
| ) |
| std::vector< OutputGroup > GroupOutputs | ( | const CWallet & | wallet, |
| const std::vector< COutput > & | outputs, | ||
| const CoinSelectionParams & | coin_sel_params, | ||
| const CoinEligibilityFilter & | filter, | ||
| bool | positive_only | ||
| ) |
| std::map< CTxDestination, std::vector< COutput > > ListCoins | ( | const CWallet & | wallet | ) |
| 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 430 of file spend.cpp.