diff --git a/src/bitcoin-tx.cpp b/src/bitcoin-tx.cpp
--- a/src/bitcoin-tx.cpp
+++ b/src/bitcoin-tx.cpp
@@ -658,7 +658,7 @@
 
     // Sign what we can:
     for (size_t i = 0; i < mergedTx.vin.size(); i++) {
-        const CTxIn &txin = mergedTx.vin[i];
+        CTxIn &txin = mergedTx.vin[i];
         const Coin &coin = view.AccessCoin(txin.prevout);
         if (coin.IsSpent()) {
             continue;
@@ -682,7 +682,7 @@
             prevPubKey,
             MutableTransactionSignatureChecker(&mergedTx, i, amount), sigdata,
             DataFromTransaction(txv, i));
-        UpdateTransaction(mergedTx, i, sigdata);
+        UpdateInput(txin, sigdata);
     }
 
     tx = mergedTx;
diff --git a/src/rpc/rawtransaction.cpp b/src/rpc/rawtransaction.cpp
--- a/src/rpc/rawtransaction.cpp
+++ b/src/rpc/rawtransaction.cpp
@@ -819,7 +819,7 @@
             }
         }
 
-        UpdateTransaction(mergedTx, i, sigdata);
+        UpdateInput(txin, sigdata);
     }
 
     return EncodeHexTx(CTransaction(mergedTx));
@@ -996,7 +996,7 @@
             prevPubKey, TransactionSignatureChecker(&txConst, i, amount),
             sigdata, DataFromTransaction(mtx, i));
 
-        UpdateTransaction(mtx, i, sigdata);
+        UpdateInput(txin, sigdata);
 
         ScriptError serror = ScriptError::OK;
         if (!VerifyScript(
diff --git a/src/script/sign.h b/src/script/sign.h
--- a/src/script/sign.h
+++ b/src/script/sign.h
@@ -91,8 +91,6 @@
 /** Extract signature data from a transaction, and insert it. */
 SignatureData DataFromTransaction(const CMutableTransaction &tx,
                                   unsigned int nIn);
-void UpdateTransaction(CMutableTransaction &tx, unsigned int nIn,
-                       const SignatureData &data);
 void UpdateInput(CTxIn &input, const SignatureData &data);
 
 #endif // BITCOIN_SCRIPT_SIGN_H
diff --git a/src/script/sign.cpp b/src/script/sign.cpp
--- a/src/script/sign.cpp
+++ b/src/script/sign.cpp
@@ -165,12 +165,6 @@
     input.scriptSig = data.scriptSig;
 }
 
-void UpdateTransaction(CMutableTransaction &tx, unsigned int nIn,
-                       const SignatureData &data) {
-    assert(tx.vin.size() > nIn);
-    UpdateInput(tx.vin[nIn], data);
-}
-
 bool SignSignature(const SigningProvider &provider, const CScript &fromPubKey,
                    CMutableTransaction &txTo, unsigned int nIn,
                    const Amount amount, SigHashType sigHashType) {
@@ -180,7 +174,7 @@
 
     SignatureData sigdata;
     bool ret = ProduceSignature(provider, creator, fromPubKey, sigdata);
-    UpdateTransaction(txTo, nIn, sigdata);
+    UpdateInput(txTo.vin.at(nIn), sigdata);
     return ret;
 }
 
diff --git a/src/test/transaction_tests.cpp b/src/test/transaction_tests.cpp
--- a/src/test/transaction_tests.cpp
+++ b/src/test/transaction_tests.cpp
@@ -594,13 +594,12 @@
     CreateCreditAndSpend(keystore2, scriptMulti, output2, input2, false);
     CheckWithFlag(output2, input2, 0, false);
     BOOST_CHECK(*output1 == *output2);
-    UpdateTransaction(
-        input1, 0,
-        CombineSignatures(output1->vout[0].scriptPubKey,
-                          MutableTransactionSignatureChecker(
-                              &input1, 0, output1->vout[0].nValue),
-                          DataFromTransaction(input1, 0),
-                          DataFromTransaction(input2, 0)));
+    UpdateInput(input1.vin[0],
+                CombineSignatures(output1->vout[0].scriptPubKey,
+                                  MutableTransactionSignatureChecker(
+                                      &input1, 0, output1->vout[0].nValue),
+                                  DataFromTransaction(input1, 0),
+                                  DataFromTransaction(input2, 0)));
     CheckWithFlag(output1, input1, STANDARD_SCRIPT_VERIFY_FLAGS, true);
 
     // P2SH 2-of-2 multisig
@@ -615,13 +614,12 @@
     CheckWithFlag(output2, input2, 0, true);
     CheckWithFlag(output2, input2, SCRIPT_VERIFY_P2SH, false);
     BOOST_CHECK(*output1 == *output2);
-    UpdateTransaction(
-        input1, 0,
-        CombineSignatures(output1->vout[0].scriptPubKey,
-                          MutableTransactionSignatureChecker(
-                              &input1, 0, output1->vout[0].nValue),
-                          DataFromTransaction(input1, 0),
-                          DataFromTransaction(input2, 0)));
+    UpdateInput(input1.vin[0],
+                CombineSignatures(output1->vout[0].scriptPubKey,
+                                  MutableTransactionSignatureChecker(
+                                      &input1, 0, output1->vout[0].nValue),
+                                  DataFromTransaction(input1, 0),
+                                  DataFromTransaction(input2, 0)));
     CheckWithFlag(output1, input1, SCRIPT_VERIFY_P2SH, true);
     CheckWithFlag(output1, input1, STANDARD_SCRIPT_VERIFY_FLAGS, true);
 }
diff --git a/src/test/txvalidationcache_tests.cpp b/src/test/txvalidationcache_tests.cpp
--- a/src/test/txvalidationcache_tests.cpp
+++ b/src/test/txvalidationcache_tests.cpp
@@ -398,12 +398,12 @@
                          MutableTransactionSignatureCreator(
                              &tx, 0, 11 * CENT, SigHashType().withForkId()),
                          spend_tx.vout[0].scriptPubKey, sigdata);
-        UpdateTransaction(tx, 0, sigdata);
+        UpdateInput(tx.vin[0], sigdata);
         ProduceSignature(keystore,
                          MutableTransactionSignatureCreator(
                              &tx, 1, 11 * CENT, SigHashType().withForkId()),
                          spend_tx.vout[3].scriptPubKey, sigdata);
-        UpdateTransaction(tx, 1, sigdata);
+        UpdateInput(tx.vin[1], sigdata);
 
         // This should be valid under all script flags
         ValidateCheckInputsForAllFlags(CTransaction(tx), 0, true, false);
diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp
--- a/src/wallet/wallet.cpp
+++ b/src/wallet/wallet.cpp
@@ -2788,7 +2788,7 @@
 bool CWallet::SignTransaction(CMutableTransaction &tx) {
     // sign the new tx
     int nIn = 0;
-    for (const auto &input : tx.vin) {
+    for (CTxIn &input : tx.vin) {
         auto mi = mapWallet.find(input.prevout.GetTxId());
         if (mi == mapWallet.end() ||
             input.prevout.GetN() >= mi->second.tx->vout.size()) {
@@ -2805,7 +2805,7 @@
                               scriptPubKey, sigdata)) {
             return false;
         }
-        UpdateTransaction(tx, nIn, sigdata);
+        UpdateInput(input, sigdata);
         nIn++;
     }
     return true;
@@ -3266,7 +3266,7 @@
                     return false;
                 }
 
-                UpdateTransaction(txNew, nIn, sigdata);
+                UpdateInput(txNew.vin.at(nIn), sigdata);
                 nIn++;
             }
         }