Changeset View
Changeset View
Standalone View
Standalone View
src/test/transaction_tests.cpp
Show First 20 Lines • Show All 118 Lines • ▼ Show 20 Lines | for (size_t idx = 0; idx < tests.size(); idx++) { | ||||
Amount amount = Amount::zero(); | Amount amount = Amount::zero(); | ||||
if (mapprevOutValues.count(tx.vin[i].prevout)) { | if (mapprevOutValues.count(tx.vin[i].prevout)) { | ||||
amount = mapprevOutValues[tx.vin[i].prevout]; | amount = mapprevOutValues[tx.vin[i].prevout]; | ||||
} | } | ||||
uint32_t verify_flags = ParseScriptFlags(test[2].get_str()); | uint32_t verify_flags = ParseScriptFlags(test[2].get_str()); | ||||
BOOST_CHECK_MESSAGE( | BOOST_CHECK_MESSAGE( | ||||
VerifyScript(tx.vin[i].scriptSig, | VerifyScript( | ||||
tx.vin[i].scriptSig, | |||||
mapprevOutScriptPubKeys[tx.vin[i].prevout], | mapprevOutScriptPubKeys[tx.vin[i].prevout], | ||||
verify_flags, TransactionSignatureChecker( | verify_flags, | ||||
&tx, i, amount, txdata), | TransactionSignatureChecker(&tx, i, amount, txdata), | ||||
&err), | &err), | ||||
strTest); | strTest); | ||||
BOOST_CHECK_MESSAGE(err == SCRIPT_ERR_OK, | BOOST_CHECK_MESSAGE(err == SCRIPT_ERR_OK, | ||||
ScriptErrorString(err)); | ScriptErrorString(err)); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
} | } | ||||
▲ Show 20 Lines • Show All 439 Lines • ▼ Show 20 Lines | BOOST_AUTO_TEST_CASE(test_witness) { | ||||
// Normal 2-of-2 multisig | // Normal 2-of-2 multisig | ||||
CreateCreditAndSpend(keystore, scriptMulti, output1, input1, false); | CreateCreditAndSpend(keystore, scriptMulti, output1, input1, false); | ||||
CheckWithFlag(output1, input1, 0, false); | CheckWithFlag(output1, input1, 0, false); | ||||
CreateCreditAndSpend(keystore2, scriptMulti, output2, input2, false); | CreateCreditAndSpend(keystore2, scriptMulti, output2, input2, false); | ||||
CheckWithFlag(output2, input2, 0, false); | CheckWithFlag(output2, input2, 0, false); | ||||
BOOST_CHECK(*output1 == *output2); | BOOST_CHECK(*output1 == *output2); | ||||
UpdateTransaction( | UpdateTransaction( | ||||
input1, 0, CombineSignatures(output1->vout[0].scriptPubKey, | input1, 0, | ||||
CombineSignatures(output1->vout[0].scriptPubKey, | |||||
MutableTransactionSignatureChecker( | MutableTransactionSignatureChecker( | ||||
&input1, 0, output1->vout[0].nValue), | &input1, 0, output1->vout[0].nValue), | ||||
DataFromTransaction(input1, 0), | DataFromTransaction(input1, 0), | ||||
DataFromTransaction(input2, 0))); | DataFromTransaction(input2, 0))); | ||||
CheckWithFlag(output1, input1, STANDARD_SCRIPT_VERIFY_FLAGS, true); | CheckWithFlag(output1, input1, STANDARD_SCRIPT_VERIFY_FLAGS, true); | ||||
// P2SH 2-of-2 multisig | // P2SH 2-of-2 multisig | ||||
CreateCreditAndSpend(keystore, | CreateCreditAndSpend(keystore, | ||||
GetScriptForDestination(CScriptID(scriptMulti)), | GetScriptForDestination(CScriptID(scriptMulti)), | ||||
output1, input1, false); | output1, input1, false); | ||||
CheckWithFlag(output1, input1, 0, true); | CheckWithFlag(output1, input1, 0, true); | ||||
CheckWithFlag(output1, input1, SCRIPT_VERIFY_P2SH, false); | CheckWithFlag(output1, input1, SCRIPT_VERIFY_P2SH, false); | ||||
CreateCreditAndSpend(keystore2, | CreateCreditAndSpend(keystore2, | ||||
GetScriptForDestination(CScriptID(scriptMulti)), | GetScriptForDestination(CScriptID(scriptMulti)), | ||||
output2, input2, false); | output2, input2, false); | ||||
CheckWithFlag(output2, input2, 0, true); | CheckWithFlag(output2, input2, 0, true); | ||||
CheckWithFlag(output2, input2, SCRIPT_VERIFY_P2SH, false); | CheckWithFlag(output2, input2, SCRIPT_VERIFY_P2SH, false); | ||||
BOOST_CHECK(*output1 == *output2); | BOOST_CHECK(*output1 == *output2); | ||||
UpdateTransaction( | UpdateTransaction( | ||||
input1, 0, CombineSignatures(output1->vout[0].scriptPubKey, | input1, 0, | ||||
CombineSignatures(output1->vout[0].scriptPubKey, | |||||
MutableTransactionSignatureChecker( | MutableTransactionSignatureChecker( | ||||
&input1, 0, output1->vout[0].nValue), | &input1, 0, output1->vout[0].nValue), | ||||
DataFromTransaction(input1, 0), | DataFromTransaction(input1, 0), | ||||
DataFromTransaction(input2, 0))); | DataFromTransaction(input2, 0))); | ||||
CheckWithFlag(output1, input1, SCRIPT_VERIFY_P2SH, true); | CheckWithFlag(output1, input1, SCRIPT_VERIFY_P2SH, true); | ||||
CheckWithFlag(output1, input1, STANDARD_SCRIPT_VERIFY_FLAGS, true); | CheckWithFlag(output1, input1, STANDARD_SCRIPT_VERIFY_FLAGS, true); | ||||
} | } | ||||
BOOST_AUTO_TEST_CASE(test_IsStandard) { | BOOST_AUTO_TEST_CASE(test_IsStandard) { | ||||
LOCK(cs_main); | LOCK(cs_main); | ||||
CBasicKeyStore keystore; | CBasicKeyStore keystore; | ||||
CCoinsView coinsDummy; | CCoinsView coinsDummy; | ||||
▲ Show 20 Lines • Show All 191 Lines • Show Last 20 Lines |