Changeset View
Changeset View
Standalone View
Standalone View
src/test/script_P2SH_tests.cpp
Show First 20 Lines • Show All 407 Lines • ▼ Show 20 Lines | BOOST_AUTO_TEST_CASE(AreInputsStandard) { | ||||
txTo.vin[3].scriptSig << OP_11 << OP_11 | txTo.vin[3].scriptSig << OP_11 << OP_11 | ||||
<< std::vector<uint8_t>(oneAndTwo.begin(), | << std::vector<uint8_t>(oneAndTwo.begin(), | ||||
oneAndTwo.end()); | oneAndTwo.end()); | ||||
txTo.vin[4].scriptSig << std::vector<uint8_t>(fifteenSigops.begin(), | txTo.vin[4].scriptSig << std::vector<uint8_t>(fifteenSigops.begin(), | ||||
fifteenSigops.end()); | fifteenSigops.end()); | ||||
BOOST_CHECK(::AreInputsStandard(CTransaction(txTo), coins)); | BOOST_CHECK(::AreInputsStandard(CTransaction(txTo), coins)); | ||||
// 22 P2SH sigops for all inputs (1 for vin[0], 6 for vin[3], 15 for vin[4] | // 22 P2SH sigops for all inputs (1 for vin[0], 6 for vin[3], 15 for vin[4] | ||||
BOOST_CHECK_EQUAL(GetP2SHSigOpCount(CTransaction(txTo), coins), 22U); | BOOST_CHECK_EQUAL(GetP2SHSigOpCount(CTransaction(txTo), coins, | ||||
STANDARD_CHECKDATASIG_VERIFY_FLAGS), | |||||
22U); | |||||
// Check that no sigops show up when P2SH is not activated. | |||||
BOOST_CHECK_EQUAL( | |||||
GetP2SHSigOpCount(CTransaction(txTo), coins, SCRIPT_VERIFY_NONE), 0); | |||||
CMutableTransaction txToNonStd1; | CMutableTransaction txToNonStd1; | ||||
txToNonStd1.vout.resize(1); | txToNonStd1.vout.resize(1); | ||||
txToNonStd1.vout[0].scriptPubKey = | txToNonStd1.vout[0].scriptPubKey = | ||||
GetScriptForDestination(key[1].GetPubKey().GetID()); | GetScriptForDestination(key[1].GetPubKey().GetID()); | ||||
txToNonStd1.vout[0].nValue = Amount(1000); | txToNonStd1.vout[0].nValue = Amount(1000); | ||||
txToNonStd1.vin.resize(1); | txToNonStd1.vin.resize(1); | ||||
txToNonStd1.vin[0].prevout = COutPoint(txFrom.GetId(), 5); | txToNonStd1.vin[0].prevout = COutPoint(txFrom.GetId(), 5); | ||||
txToNonStd1.vin[0].scriptSig | txToNonStd1.vin[0].scriptSig | ||||
<< std::vector<uint8_t>(sixteenSigops.begin(), sixteenSigops.end()); | << std::vector<uint8_t>(sixteenSigops.begin(), sixteenSigops.end()); | ||||
BOOST_CHECK(!::AreInputsStandard(CTransaction(txToNonStd1), coins)); | BOOST_CHECK(!::AreInputsStandard(CTransaction(txToNonStd1), coins)); | ||||
BOOST_CHECK_EQUAL(GetP2SHSigOpCount(CTransaction(txToNonStd1), coins), 16U); | BOOST_CHECK_EQUAL(GetP2SHSigOpCount(CTransaction(txToNonStd1), coins, | ||||
STANDARD_CHECKDATASIG_VERIFY_FLAGS), | |||||
16U); | |||||
// Check that no sigops show up when P2SH is not activated. | |||||
BOOST_CHECK_EQUAL( | |||||
GetP2SHSigOpCount(CTransaction(txToNonStd1), coins, SCRIPT_VERIFY_NONE), | |||||
0); | |||||
CMutableTransaction txToNonStd2; | CMutableTransaction txToNonStd2; | ||||
txToNonStd2.vout.resize(1); | txToNonStd2.vout.resize(1); | ||||
txToNonStd2.vout[0].scriptPubKey = | txToNonStd2.vout[0].scriptPubKey = | ||||
GetScriptForDestination(key[1].GetPubKey().GetID()); | GetScriptForDestination(key[1].GetPubKey().GetID()); | ||||
txToNonStd2.vout[0].nValue = Amount(1000); | txToNonStd2.vout[0].nValue = Amount(1000); | ||||
txToNonStd2.vin.resize(1); | txToNonStd2.vin.resize(1); | ||||
txToNonStd2.vin[0].prevout = COutPoint(txFrom.GetId(), 6); | txToNonStd2.vin[0].prevout = COutPoint(txFrom.GetId(), 6); | ||||
txToNonStd2.vin[0].scriptSig | txToNonStd2.vin[0].scriptSig | ||||
<< std::vector<uint8_t>(twentySigops.begin(), twentySigops.end()); | << std::vector<uint8_t>(twentySigops.begin(), twentySigops.end()); | ||||
BOOST_CHECK(!::AreInputsStandard(CTransaction(txToNonStd2), coins)); | BOOST_CHECK(!::AreInputsStandard(CTransaction(txToNonStd2), coins)); | ||||
BOOST_CHECK_EQUAL(GetP2SHSigOpCount(CTransaction(txToNonStd2), coins), 20U); | BOOST_CHECK_EQUAL(GetP2SHSigOpCount(CTransaction(txToNonStd2), coins, | ||||
STANDARD_CHECKDATASIG_VERIFY_FLAGS), | |||||
20U); | |||||
// Check that no sigops show up when P2SH is not activated. | |||||
BOOST_CHECK_EQUAL( | |||||
GetP2SHSigOpCount(CTransaction(txToNonStd2), coins, SCRIPT_VERIFY_NONE), | |||||
0); | |||||
} | } | ||||
BOOST_AUTO_TEST_SUITE_END() | BOOST_AUTO_TEST_SUITE_END() |