diff options
-rw-r--r-- | src/wallet/coincontrol.h | 2 | ||||
-rw-r--r-- | src/wallet/spend.cpp | 7 |
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); |