@@ -227,9 +227,9 @@ class AnonWallet
227
227
CAmount &nFeeRet, const CCoinControl *coinControl, std::string &sError , bool fZerocoinInputs , CAmount nInputValue);
228
228
229
229
int AddBlindedInputs (CWalletTx &wtx, CTransactionRecord &rtx, std::vector<CTempRecipient> &vecSend, bool sign,
230
- CAmount &nFeeRet, const CCoinControl *coinControl, std::string &sError );
230
+ size_t nMaximumInputs, CAmount &nFeeRet, const CCoinControl *coinControl, std::string &sError );
231
231
int AddBlindedInputs_Inner (CWalletTx &wtx, CTransactionRecord &rtx, std::vector<CTempRecipient> &vecSend, bool sign,
232
- CAmount &nFeeRet, const CCoinControl *coinControl, std::string &sError );
232
+ size_t nMaximumInputs, CAmount &nFeeRet, const CCoinControl *coinControl, std::string &sError );
233
233
234
234
235
235
bool PlaceRealOutputs (std::vector<std::vector<int64_t > > &vMI, size_t &nSecretColumn, size_t nRingSize, std::set<int64_t > &setHave,
@@ -240,10 +240,10 @@ class AnonWallet
240
240
241
241
bool IsMyAnonInput (const CTxIn& txin, COutPoint& myOutpoint);
242
242
bool AddAnonInputs_Inner (CWalletTx &wtx, CTransactionRecord &rtx, std::vector<CTempRecipient> &vecSend,
243
- bool sign, size_t nRingSize, size_t nInputsPerSig, CAmount &nFeeRet,
243
+ bool sign, size_t nRingSize, size_t nInputsPerSig, size_t nMaximumInputs, CAmount &nFeeRet,
244
244
const CCoinControl *coinControl, std::string &sError , bool fZerocoinInputs , CAmount nInputValue);
245
245
bool AddAnonInputs (CWalletTx &wtx, CTransactionRecord &rtx, std::vector<CTempRecipient> &vecSend,
246
- bool sign, size_t nRingSize, size_t nInputsPerSig, CAmount &nFeeRet,
246
+ bool sign, size_t nRingSize, size_t nInputsPerSig, size_t nMaximumInputs, CAmount &nFeeRet,
247
247
const CCoinControl *coinControl, std::string &sError , bool fZerocoinInputs = false ,
248
248
CAmount nInputValue = 0 );
249
249
@@ -322,15 +322,23 @@ class AnonWallet
322
322
* populate vCoins with vector of available COutputs.
323
323
*/
324
324
void AvailableBlindedCoins (std::vector<COutputR>& vCoins, bool fOnlySafe =true , const CCoinControl *coinControl = nullptr , const CAmount& nMinimumAmount = 1 , const CAmount& nMaximumAmount = MAX_MONEY, const CAmount& nMinimumSumAmount = MAX_MONEY, const uint64_t & nMaximumCount = 0 , const int & nMinDepth = 0 , const int & nMaxDepth = 0x7FFFFFFF , bool fIncludeImmature =false ) const ;
325
- bool SelectBlindedCoins (const std::vector<COutputR>& vAvailableCoins, const CAmount& nTargetValue, std::vector<std::pair<MapRecords_t::const_iterator,unsigned int > > &setCoinsRet, CAmount &nValueRet, const CCoinControl *coinControl = nullptr ) const ;
325
+ /* *
326
+ * Returns a list of coins for a single transaction based on the target value and allowed number of inputs.
327
+ */
328
+ bool SelectBlindedCoins (const std::vector<COutputR>& vAvailableCoins, const CAmount& nTargetValue, size_t nMaximumCount, std::vector<std::pair<MapRecords_t::const_iterator,unsigned int > > &setCoinsRet, CAmount &nValueRet, const CCoinControl *coinControl = nullptr ) const ;
326
329
327
330
void AvailableAnonCoins (std::vector<COutputR> &vCoins, bool fOnlySafe =true , const CCoinControl *coinControl = nullptr , const CAmount& nMinimumAmount = 1 , const CAmount& nMaximumAmount = MAX_MONEY, const CAmount& nMinimumSumAmount = MAX_MONEY, const uint64_t & nMaximumCount = 0 , const int & nMinDepth = 0 , const int & nMaxDepth = 0x7FFFFFFF , bool fIncludeImmature =false ) const ;
328
331
329
332
/* *
330
333
* Return list of available coins and locked coins grouped by non-change output address.
331
334
*/
332
335
333
- bool SelectCoinsMinConf (const CAmount& nTargetValue, const CoinEligibilityFilter& eligibility_filter, std::vector<COutputR> vCoins, std::vector<std::pair<MapRecords_t::const_iterator,unsigned int > > &setCoinsRet, CAmount &nValueRet) const ;
336
+ bool SelectCoinsMinConf (const CAmount& nTargetValue, const CoinEligibilityFilter& eligibility_filter, std::vector<COutputR> &vCoins, std::vector<std::pair<MapRecords_t::const_iterator,unsigned int > > &setCoinsRet, CAmount &nValueRet) const ;
337
+ /* *
338
+ * Like SelectCoinsMinConf, but always selects at most nMaximumCount coins,
339
+ * with the intention of being put in a single tx that partially accomplishes the target to be sent.
340
+ */
341
+ bool SelectCoinsForOneTx (const CAmount& nTargetValue, const CoinEligibilityFilter& eligibility_filter, std::vector<COutputR> &vCoins, size_t nMaximumCount, std::vector<std::pair<MapRecords_t::const_iterator,unsigned int > > &setCoinsRet, CAmount &nValueRet) const ;
334
342
335
343
bool IsSpent (const uint256& hash, unsigned int n) const EXCLUSIVE_LOCKS_REQUIRED(cs_main);
336
344
0 commit comments