From 65b3eda458221644616d0fdd6ba0fe01bdbce893 Mon Sep 17 00:00:00 2001 From: Karl-Johan Alm Date: Tue, 17 Jul 2018 16:56:06 +0900 Subject: [PATCH] wallet: Add input bytes to CInputCoin With nInputBytes, coin selection can execute without a reference to the COutput --- src/wallet/coinselection.h | 8 ++++++++ src/wallet/wallet.h | 5 +++++ 2 files changed, 13 insertions(+) diff --git a/src/wallet/coinselection.h b/src/wallet/coinselection.h index 64111f393..218d20fb4 100644 --- a/src/wallet/coinselection.h +++ b/src/wallet/coinselection.h @@ -28,12 +28,20 @@ public: effective_value = txout.nValue; } + CInputCoin(const CTransactionRef& tx, unsigned int i, int input_bytes) : CInputCoin(tx, i) + { + m_input_bytes = input_bytes; + } + COutPoint outpoint; CTxOut txout; CAmount effective_value; CAmount fee = 0; CAmount long_term_fee = 0; + /** 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 m_input_bytes{-1}; + bool operator<(const CInputCoin& rhs) const { return outpoint < rhs.outpoint; } diff --git a/src/wallet/wallet.h b/src/wallet/wallet.h index 173ebec53..4a3854514 100644 --- a/src/wallet/wallet.h +++ b/src/wallet/wallet.h @@ -525,6 +525,11 @@ public: } std::string ToString() const; + + inline CInputCoin GetInputCoin() const + { + return CInputCoin(tx->tx, i, nInputBytes); + } };