diff --git a/src/wallet/coincontrol.cpp b/src/wallet/coincontrol.cpp index e634826e9..8952003fe 100644 --- a/src/wallet/coincontrol.cpp +++ b/src/wallet/coincontrol.cpp @@ -1,20 +1,21 @@ // Copyright (c) 2018 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include #include void CCoinControl::SetNull() { destChange = CNoDestination(); m_change_type.reset(); fAllowOtherInputs = false; fAllowWatchOnly = false; m_avoid_partial_spends = gArgs.GetBoolArg("-avoidpartialspends", DEFAULT_AVOIDPARTIALSPENDS); + m_avoid_address_reuse = false; setSelected.clear(); m_feerate.reset(); fOverrideFeeRate = false; m_confirm_target.reset(); } diff --git a/src/wallet/coincontrol.h b/src/wallet/coincontrol.h index 93df63421..eaebd55c4 100644 --- a/src/wallet/coincontrol.h +++ b/src/wallet/coincontrol.h @@ -1,57 +1,59 @@ // 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 #include #include /** Coin Control Features. */ class CCoinControl { public: CTxDestination destChange; //! Override the default change type if set, ignored if destChange is set boost::optional m_change_type; //! If false, allows unselected inputs, but requires all selected inputs be //! used bool fAllowOtherInputs; //! Includes watch only addresses which are solvable bool fAllowWatchOnly; //! Override automatic min/max checks on fee, m_feerate must be set if true bool fOverrideFeeRate; //! Override the wallet's m_pay_tx_fee if set boost::optional m_feerate; //! Override the default confirmation target if set boost::optional m_confirm_target; //! Avoid partial use of funds sent to a given address bool m_avoid_partial_spends; + //! Forbids inclusion of dirty (previously used) addresses + bool m_avoid_address_reuse; CCoinControl() { SetNull(); } void SetNull(); 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 &vOutpoints) const { vOutpoints.assign(setSelected.begin(), setSelected.end()); } private: std::set setSelected; }; #endif // BITCOIN_WALLET_COINCONTROL_H diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index 1b51bd6bd..b12b0d39e 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -1,4804 +1,4818 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2009-2018 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include #include // for GetConsensus. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include