Changeset View
Changeset View
Standalone View
Standalone View
src/test/transaction_tests.cpp
Show First 20 Lines • Show All 493 Lines • ▼ Show 20 Lines | BOOST_AUTO_TEST_CASE(test_big_transaction) { | ||||
bool controlCheck = control.Wait(); | bool controlCheck = control.Wait(); | ||||
BOOST_CHECK(controlCheck); | BOOST_CHECK(controlCheck); | ||||
threadGroup.interrupt_all(); | threadGroup.interrupt_all(); | ||||
threadGroup.join_all(); | threadGroup.join_all(); | ||||
} | } | ||||
SignatureData CombineSignatures(const CMutableTransaction &input1, | |||||
const CMutableTransaction &input2, | |||||
const CTransactionRef tx) { | |||||
SignatureData sigdata; | |||||
sigdata = DataFromTransaction(input1, 0, tx->vout[0]); | |||||
sigdata.MergeSignatureData(DataFromTransaction(input2, 0, tx->vout[0])); | |||||
ProduceSignature( | |||||
DUMMY_SIGNING_PROVIDER, | |||||
MutableTransactionSignatureCreator(&input1, 0, tx->vout[0].nValue), | |||||
tx->vout[0].scriptPubKey, sigdata); | |||||
return sigdata; | |||||
} | |||||
BOOST_AUTO_TEST_CASE(test_witness) { | BOOST_AUTO_TEST_CASE(test_witness) { | ||||
CBasicKeyStore keystore, keystore2; | CBasicKeyStore keystore, keystore2; | ||||
CKey key1, key2, key3, key1L, key2L; | CKey key1, key2, key3, key1L, key2L; | ||||
CPubKey pubkey1, pubkey2, pubkey3, pubkey1L, pubkey2L; | CPubKey pubkey1, pubkey2, pubkey3, pubkey1L, pubkey2L; | ||||
key1.MakeNewKey(true); | key1.MakeNewKey(true); | ||||
key2.MakeNewKey(true); | key2.MakeNewKey(true); | ||||
key3.MakeNewKey(true); | key3.MakeNewKey(true); | ||||
key1L.MakeNewKey(false); | key1L.MakeNewKey(false); | ||||
▲ Show 20 Lines • Show All 79 Lines • ▼ Show 20 Lines | BOOST_AUTO_TEST_CASE(test_witness) { | ||||
CheckWithFlag(output1, input2, STANDARD_SCRIPT_VERIFY_FLAGS, false); | CheckWithFlag(output1, input2, STANDARD_SCRIPT_VERIFY_FLAGS, false); | ||||
// 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); | ||||
UpdateInput( | UpdateInput(input1.vin[0], CombineSignatures(input1, input2, output1)); | ||||
input1.vin[0], | |||||
CombineSignatures(output1->vout[0].scriptPubKey, | |||||
MutableTransactionSignatureChecker( | |||||
&input1, 0, output1->vout[0].nValue), | |||||
DataFromTransaction(input1, 0, output1->vout[0]), | |||||
DataFromTransaction(input2, 0, output1->vout[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); | ||||
UpdateInput( | UpdateInput(input1.vin[0], CombineSignatures(input1, input2, output1)); | ||||
input1.vin[0], | |||||
CombineSignatures(output1->vout[0].scriptPubKey, | |||||
MutableTransactionSignatureChecker( | |||||
&input1, 0, output1->vout[0].nValue), | |||||
DataFromTransaction(input1, 0, output1->vout[0]), | |||||
DataFromTransaction(input2, 0, output1->vout[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 172 Lines • Show Last 20 Lines |