diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index 9050c4b1b..af9064d44 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -4065,13 +4065,17 @@ UniValue z_mergetoaddress(const UniValue& params, bool fHelp) contextInfo.push_back(Pair("fee", ValueFromAmount(nFee))); // Contextual transaction we will build on + int nextBlockHeight = chainActive.Height() + 1; CMutableTransaction contextualTx = CreateNewContextualCMutableTransaction( Params().GetConsensus(), - chainActive.Height() + 1); + nextBlockHeight); bool isShielded = numNotes > 0 || isToZaddr; if (contextualTx.nVersion == 1 && isShielded) { contextualTx.nVersion = 2; // Tx format should support vjoinsplit } + if (NetworkUpgradeActive(nextBlockHeight, Params().GetConsensus(), Consensus::UPGRADE_OVERWINTER)) { + contextualTx.nExpiryHeight = nextBlockHeight + expiryDelta; + } // Create operation and add to global queue std::shared_ptr q = getAsyncRPCQueue(); diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index 253eb6169..e2cd01637 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -2584,6 +2584,7 @@ bool CWallet::CreateTransaction(const vector& vecSend, CWalletTx& wt if (NetworkUpgradeActive(nextBlockHeight, Params().GetConsensus(), Consensus::UPGRADE_OVERWINTER)) { if (nextBlockHeight + expiryDelta >= TX_EXPIRY_HEIGHT_THRESHOLD){ strFailReason = _("nExpiryHeight must be less than TX_EXPIRY_HEIGHT_THRESHOLD."); + return false; } else { txNew.nExpiryHeight = nextBlockHeight + expiryDelta; }