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++; } }