From f0821230b8de2eec21a869d1edf9e2b9f502de25 Mon Sep 17 00:00:00 2001 From: Andrew Chow Date: Mon, 17 Jan 2022 16:13:02 -0500 Subject: [PATCH] moveonly: move COutput to coinselection.h --- src/wallet/coinselection.cpp | 5 ++++ src/wallet/coinselection.h | 58 ++++++++++++++++++++++++++++++++++++ src/wallet/spend.cpp | 5 ---- src/wallet/spend.h | 58 ------------------------------------ 4 files changed, 63 insertions(+), 63 deletions(-) diff --git a/src/wallet/coinselection.cpp b/src/wallet/coinselection.cpp index 513572da455..08c36de38a2 100644 --- a/src/wallet/coinselection.cpp +++ b/src/wallet/coinselection.cpp @@ -432,4 +432,9 @@ bool SelectionResult::operator<(SelectionResult other) const // As this operator is only used in std::min_element, we want the result that has more inputs when waste are equal. return *m_waste < *other.m_waste || (*m_waste == *other.m_waste && m_selected_inputs.size() > other.m_selected_inputs.size()); } + +std::string COutput::ToString() const +{ + return strprintf("COutput(%s, %d, %d) [%s]", outpoint.hash.ToString(), outpoint.n, depth, FormatMoney(txout.nValue)); +} } // namespace wallet diff --git a/src/wallet/coinselection.h b/src/wallet/coinselection.h index 496a0269991..7f375b6169c 100644 --- a/src/wallet/coinselection.h +++ b/src/wallet/coinselection.h @@ -72,6 +72,64 @@ public: } }; +class COutput +{ +public: + /** The outpoint identifying this UTXO */ + COutPoint outpoint; + + /** The output itself */ + CTxOut txout; + + /** + * Depth in block chain. + * If > 0: the tx is on chain and has this many confirmations. + * If = 0: the tx is waiting confirmation. + * If < 0: a conflicting tx is on chain and has this many confirmations. */ + int depth; + + /** Pre-computed estimated size of this output as a fully-signed input in a transaction. Can be -1 if it could not be calculated */ + int input_bytes; + + /** Whether we have the private keys to spend this output */ + bool spendable; + + /** Whether we know how to spend this output, ignoring the lack of keys */ + bool solvable; + + /** + * Whether this output is considered safe to spend. Unconfirmed transactions + * from outside keys and unconfirmed replacement transactions are considered + * unsafe and will not be used to fund new spending transactions. + */ + bool safe; + + /** The time of the transaction containing this output as determined by CWalletTx::nTimeSmart */ + int64_t time; + + /** Whether the transaction containing this output is sent from the owning wallet */ + bool from_me; + + COutput(const COutPoint& outpoint, const CTxOut& txout, int depth, int input_bytes, bool spendable, bool solvable, bool safe, int64_t time, bool from_me) + : outpoint(outpoint), + txout(txout), + depth(depth), + input_bytes(input_bytes), + spendable(spendable), + solvable(solvable), + safe(safe), + time(time), + from_me(from_me) + {} + + std::string ToString() const; + + inline CInputCoin GetInputCoin() const + { + return CInputCoin(outpoint, txout, input_bytes); + } +}; + /** Parameters for one iteration of Coin Selection. */ struct CoinSelectionParams { diff --git a/src/wallet/spend.cpp b/src/wallet/spend.cpp index 0094af7b2d8..356e2be80d6 100644 --- a/src/wallet/spend.cpp +++ b/src/wallet/spend.cpp @@ -29,11 +29,6 @@ int GetTxSpendSize(const CWallet& wallet, const CWalletTx& wtx, unsigned int out return CalculateMaximumSignedInputSize(wtx.tx->vout[out], &wallet, use_max_sig); } -std::string COutput::ToString() const -{ - return strprintf("COutput(%s, %d, %d) [%s]", outpoint.hash.ToString(), outpoint.n, depth, FormatMoney(txout.nValue)); -} - int CalculateMaximumSignedInputSize(const CTxOut& txout, const SigningProvider* provider, bool use_max_sig) { CMutableTransaction txn; diff --git a/src/wallet/spend.h b/src/wallet/spend.h index 42f1124b7e9..e43aac52733 100644 --- a/src/wallet/spend.h +++ b/src/wallet/spend.h @@ -16,64 +16,6 @@ namespace wallet { * size of the input spend. This should only be set when watch-only outputs are allowed */ int GetTxSpendSize(const CWallet& wallet, const CWalletTx& wtx, unsigned int out, bool use_max_sig = false); -class COutput -{ -public: - /** The outpoint identifying this UTXO */ - COutPoint outpoint; - - /** The output itself */ - CTxOut txout; - - /** - * Depth in block chain. - * If > 0: the tx is on chain and has this many confirmations. - * If = 0: the tx is waiting confirmation. - * If < 0: a conflicting tx is on chain and has this many confirmations. */ - int depth; - - /** Pre-computed estimated size of this output as a fully-signed input in a transaction. Can be -1 if it could not be calculated */ - int input_bytes; - - /** Whether we have the private keys to spend this output */ - bool spendable; - - /** Whether we know how to spend this output, ignoring the lack of keys */ - bool solvable; - - /** - * Whether this output is considered safe to spend. Unconfirmed transactions - * from outside keys and unconfirmed replacement transactions are considered - * unsafe and will not be used to fund new spending transactions. - */ - bool safe; - - /** The time of the transaction containing this output as determined by CWalletTx::nTimeSmart */ - int64_t time; - - /** Whether the transaction containing this output is sent from the owning wallet */ - bool from_me; - - COutput(const COutPoint& outpoint, const CTxOut& txout, int depth, int input_bytes, bool spendable, bool solvable, bool safe, int64_t time, bool from_me) - : outpoint(outpoint), - txout(txout), - depth(depth), - input_bytes(input_bytes), - spendable(spendable), - solvable(solvable), - safe(safe), - time(time), - from_me(from_me) - {} - - std::string ToString() const; - - inline CInputCoin GetInputCoin() const - { - return CInputCoin(outpoint, txout, input_bytes); - } -}; - //Get the marginal bytes of spending the specified output 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);