diff --git a/src/test/multisig_tests.cpp b/src/test/multisig_tests.cpp --- a/src/test/multisig_tests.cpp +++ b/src/test/multisig_tests.cpp @@ -20,10 +20,11 @@ BOOST_FIXTURE_TEST_SUITE(multisig_tests, BasicTestingSetup) -CScript sign_multisig(CScript scriptPubKey, std::vector keys, - CMutableTransaction mutableTransaction, int whichIn) { - uint256 hash = SignatureHash(scriptPubKey, CTransaction(mutableTransaction), - whichIn, SigHashType(), Amount::zero()); +CScript sign_multisig(const CScript &scriptPubKey, + const std::vector &keys, + const CMutableTransaction &tx, int whichIn) { + uint256 hash = SignatureHash(scriptPubKey, CTransaction(tx), whichIn, + SigHashType(), Amount::zero()); CScript result; // CHECKMULTISIG bug workaround diff --git a/src/test/script_tests.cpp b/src/test/script_tests.cpp --- a/src/test/script_tests.cpp +++ b/src/test/script_tests.cpp @@ -2550,8 +2550,9 @@ BOOST_CHECK_MESSAGE(err == SCRIPT_ERR_OK, ScriptErrorString(err)); } -CScript sign_multisig(CScript scriptPubKey, std::vector keys, - CTransaction transaction) { +CScript sign_multisig(const CScript &scriptPubKey, + const std::vector &keys, + const CTransaction &transaction) { uint256 hash = SignatureHash(scriptPubKey, transaction, 0, SigHashType(), Amount::zero()); @@ -2573,8 +2574,8 @@ return result; } -CScript sign_multisig(CScript scriptPubKey, const CKey &key, - CTransaction transaction) { +CScript sign_multisig(const CScript &scriptPubKey, const CKey &key, + const CTransaction &transaction) { std::vector keys; keys.push_back(key); return sign_multisig(scriptPubKey, keys, transaction); @@ -2645,11 +2646,9 @@ CMutableTransaction mutableTxTo23 = BuildSpendingTransaction(CScript(), txFrom23); - // after it has been set up, mutableTxTo23 does not change in this test, - // so we can convert it to readonly transaction and use - // TransactionSignatureChecker - // instead of MutableTransactionSignatureChecker - + // after it has been set up, mutableTxTo23 does not change in this test, so + // we can convert it to readonly transaction and use + // TransactionSignatureChecker instead of MutableTransactionSignatureChecker const CTransaction txTo23(mutableTxTo23); std::vector keys; @@ -2762,14 +2761,6 @@ CScript &scriptPubKey = txFrom.vout[0].scriptPubKey; CScript &scriptSig = txTo.vin[0].scriptSig; - // Although it looks like CMutableTransaction is not modified after it’s - // been set up (it is not passed as parameter to any non-const function), - // it is actually modified when new value is assigned to scriptPubKey, - // which points to mutableTxFrom.vout[0].scriptPubKey. Therefore we can - // not use single instance of CTransaction in this test. - // CTransaction creates a copy of CMutableTransaction and is not modified - // when scriptPubKey is assigned to. - SignatureData empty; SignatureData combined = CombineSignatures( scriptPubKey, MutableTransactionSignatureChecker(&txTo, 0, amount), @@ -2777,8 +2768,7 @@ BOOST_CHECK(combined.scriptSig.empty()); // Single signature case: - SignSignature(keystore, CTransaction(txFrom), txTo, 0, - SigHashType()); // changes scriptSig + SignSignature(keystore, CTransaction(txFrom), txTo, 0, SigHashType()); combined = CombineSignatures( scriptPubKey, MutableTransactionSignatureChecker(&txTo, 0, amount), SignatureData(scriptSig), empty);