d507c301bc
GetMinimumFee now passes the conservative argument into estimateSmartFee. Call CalculateEstimateType(mode) before calling GetMinimumFee or estimateSmartFee to determine the value of this argument. CCoinControl can now be used to control this mode.
86 lines
2.1 KiB
C++
86 lines
2.1 KiB
C++
// Copyright (c) 2011-2016 The Bitcoin Core developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#ifndef BITCOIN_WALLET_COINCONTROL_H
|
|
#define BITCOIN_WALLET_COINCONTROL_H
|
|
|
|
#include "policy/feerate.h"
|
|
#include "policy/fees.h"
|
|
#include "primitives/transaction.h"
|
|
#include "wallet/wallet.h"
|
|
|
|
/** Coin Control Features. */
|
|
class CCoinControl
|
|
{
|
|
public:
|
|
CTxDestination destChange;
|
|
//! If false, allows unselected inputs, but requires all selected inputs be used
|
|
bool fAllowOtherInputs;
|
|
//! Includes watch only addresses which match the ISMINE_WATCH_SOLVABLE criteria
|
|
bool fAllowWatchOnly;
|
|
//! Override estimated feerate
|
|
bool fOverrideFeeRate;
|
|
//! Feerate to use if overrideFeeRate is true
|
|
CFeeRate nFeeRate;
|
|
//! Override the default confirmation target, 0 = use default
|
|
int nConfirmTarget;
|
|
//! Signal BIP-125 replace by fee.
|
|
bool signalRbf;
|
|
//! Fee estimation mode to control arguments to estimateSmartFee
|
|
FeeEstimateMode m_fee_mode;
|
|
|
|
CCoinControl()
|
|
{
|
|
SetNull();
|
|
}
|
|
|
|
void SetNull()
|
|
{
|
|
destChange = CNoDestination();
|
|
fAllowOtherInputs = false;
|
|
fAllowWatchOnly = false;
|
|
setSelected.clear();
|
|
nFeeRate = CFeeRate(0);
|
|
fOverrideFeeRate = false;
|
|
nConfirmTarget = 0;
|
|
signalRbf = fWalletRbf;
|
|
m_fee_mode = FeeEstimateMode::UNSET;
|
|
}
|
|
|
|
bool HasSelected() const
|
|
{
|
|
return (setSelected.size() > 0);
|
|
}
|
|
|
|
bool IsSelected(const COutPoint& output) const
|
|
{
|
|
return (setSelected.count(output) > 0);
|
|
}
|
|
|
|
void Select(const COutPoint& output)
|
|
{
|
|
setSelected.insert(output);
|
|
}
|
|
|
|
void UnSelect(const COutPoint& output)
|
|
{
|
|
setSelected.erase(output);
|
|
}
|
|
|
|
void UnSelectAll()
|
|
{
|
|
setSelected.clear();
|
|
}
|
|
|
|
void ListSelected(std::vector<COutPoint>& vOutpoints) const
|
|
{
|
|
vOutpoints.assign(setSelected.begin(), setSelected.end());
|
|
}
|
|
|
|
private:
|
|
std::set<COutPoint> setSelected;
|
|
};
|
|
|
|
#endif // BITCOIN_WALLET_COINCONTROL_H
|