|
|
|
@ -451,6 +451,11 @@ public:
|
|
|
|
|
class CWallet : public CCryptoKeyStore, public CValidationInterface
|
|
|
|
|
{
|
|
|
|
|
private:
|
|
|
|
|
/**
|
|
|
|
|
* Select a set of coins such that nValueRet >= nTargetValue and at least
|
|
|
|
|
* all coins from coinControl are selected; Never select unconfirmed coins
|
|
|
|
|
* if they are not ours
|
|
|
|
|
*/
|
|
|
|
|
bool SelectCoins(const CAmount& nTargetValue, std::set<std::pair<const CWalletTx*,unsigned int> >& setCoinsRet, CAmount& nValueRet, const CCoinControl *coinControl = NULL) const;
|
|
|
|
|
|
|
|
|
|
CWalletDB *pwalletdbEncryption;
|
|
|
|
@ -552,9 +557,12 @@ public:
|
|
|
|
|
* populate vCoins with vector of available COutputs.
|
|
|
|
|
*/
|
|
|
|
|
void AvailableCoins(std::vector<COutput>& vCoins, bool fOnlyConfirmed=true, const CCoinControl *coinControl = NULL, bool fIncludeZeroValue=false) const;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Select coins until nTargetValue is reached. Return the actual value
|
|
|
|
|
* and the corresponding coin set.
|
|
|
|
|
* 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
|
|
|
|
|
*/
|
|
|
|
|
bool SelectCoinsMinConf(const CAmount& nTargetValue, int nConfMine, int nConfTheirs, std::vector<COutput> vCoins, std::set<std::pair<const CWalletTx*,unsigned int> >& setCoinsRet, CAmount& nValueRet) const;
|
|
|
|
|
|
|
|
|
@ -638,7 +646,17 @@ public:
|
|
|
|
|
CAmount GetWatchOnlyBalance() const;
|
|
|
|
|
CAmount GetUnconfirmedWatchOnlyBalance() const;
|
|
|
|
|
CAmount GetImmatureWatchOnlyBalance() const;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Insert additional inputs into the transaction by
|
|
|
|
|
* calling CreateTransaction();
|
|
|
|
|
*/
|
|
|
|
|
bool FundTransaction(CMutableTransaction& tx, CAmount& nFeeRet, int& nChangePosRet, std::string& strFailReason, bool includeWatching);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Create a new transaction paying the recipients with a set of coins
|
|
|
|
|
* selected by SelectCoins(); Also create the change output, when needed
|
|
|
|
|
*/
|
|
|
|
|
bool CreateTransaction(const std::vector<CRecipient>& vecSend, CWalletTx& wtxNew, CReserveKey& reservekey, CAmount& nFeeRet, int& nChangePosRet,
|
|
|
|
|
std::string& strFailReason, const CCoinControl *coinControl = NULL, bool sign = true);
|
|
|
|
|
bool CommitTransaction(CWalletTx& wtxNew, CReserveKey& reservekey);
|
|
|
|
|