aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/wallet/coincontrol.h2
-rw-r--r--src/wallet/spend.cpp7
2 files changed, 9 insertions, 0 deletions
diff --git a/src/wallet/coincontrol.h b/src/wallet/coincontrol.h
index c99a3bfd0f..66f9dcb53c 100644
--- a/src/wallet/coincontrol.h
+++ b/src/wallet/coincontrol.h
@@ -93,6 +93,8 @@ public:
FlatSigningProvider m_external_provider;
//! Locktime
std::optional<uint32_t> m_locktime;
+ //! Version
+ std::optional<uint32_t> m_version;
CCoinControl();
diff --git a/src/wallet/spend.cpp b/src/wallet/spend.cpp
index 9dfc8c2879..c560c71137 100644
--- a/src/wallet/spend.cpp
+++ b/src/wallet/spend.cpp
@@ -977,6 +977,10 @@ static util::Result<CreatedTransactionResult> CreateTransactionInternal(
FastRandomContext rng_fast;
CMutableTransaction txNew; // The resulting transaction that we make
+ if (coin_control.m_version) {
+ txNew.nVersion = coin_control.m_version.value();
+ }
+
CoinSelectionParams coin_selection_params{rng_fast}; // Parameters for coin selection, init with dummy
coin_selection_params.m_avoid_partial_spends = coin_control.m_avoid_partial_spends;
coin_selection_params.m_include_unsafe_inputs = coin_control.m_include_unsafe_inputs;
@@ -1349,6 +1353,9 @@ bool FundTransaction(CWallet& wallet, CMutableTransaction& tx, CAmount& nFeeRet,
// Set the user desired locktime
coinControl.m_locktime = tx.nLockTime;
+ // Set the user desired version
+ coinControl.m_version = tx.nVersion;
+
// Acquire the locks to prevent races to the new locked unspents between the
// CreateTransaction call and LockCoin calls (when lockUnspents is true).
LOCK(wallet.cs_wallet);