Changeset View
Changeset View
Standalone View
Standalone View
src/test/script_P2SH_tests.cpp
Show First 20 Lines • Show All 410 Lines • ▼ Show 20 Lines | 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, | BOOST_CHECK_EQUAL(GetP2SHSigOpCount(CTransaction(txTo), coins, | ||||
STANDARD_CHECKDATASIG_VERIFY_FLAGS), | STANDARD_SCRIPT_VERIFY_FLAGS), | ||||
22U); | 22U); | ||||
// Check that no sigops show up when P2SH is not activated. | // Check that no sigops show up when P2SH is not activated. | ||||
BOOST_CHECK_EQUAL( | BOOST_CHECK_EQUAL( | ||||
GetP2SHSigOpCount(CTransaction(txTo), coins, SCRIPT_VERIFY_NONE), 0); | 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 = 1000 * SATOSHI; | txToNonStd1.vout[0].nValue = 1000 * SATOSHI; | ||||
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, | BOOST_CHECK_EQUAL(GetP2SHSigOpCount(CTransaction(txToNonStd1), coins, | ||||
STANDARD_CHECKDATASIG_VERIFY_FLAGS), | STANDARD_SCRIPT_VERIFY_FLAGS), | ||||
16U); | 16U); | ||||
// Check that no sigops show up when P2SH is not activated. | // Check that no sigops show up when P2SH is not activated. | ||||
BOOST_CHECK_EQUAL( | BOOST_CHECK_EQUAL( | ||||
GetP2SHSigOpCount(CTransaction(txToNonStd1), coins, SCRIPT_VERIFY_NONE), | GetP2SHSigOpCount(CTransaction(txToNonStd1), coins, SCRIPT_VERIFY_NONE), | ||||
0); | 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 = 1000 * SATOSHI; | txToNonStd2.vout[0].nValue = 1000 * SATOSHI; | ||||
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, | BOOST_CHECK_EQUAL(GetP2SHSigOpCount(CTransaction(txToNonStd2), coins, | ||||
STANDARD_CHECKDATASIG_VERIFY_FLAGS), | STANDARD_SCRIPT_VERIFY_FLAGS), | ||||
20U); | 20U); | ||||
// Check that no sigops show up when P2SH is not activated. | // Check that no sigops show up when P2SH is not activated. | ||||
BOOST_CHECK_EQUAL( | BOOST_CHECK_EQUAL( | ||||
GetP2SHSigOpCount(CTransaction(txToNonStd2), coins, SCRIPT_VERIFY_NONE), | GetP2SHSigOpCount(CTransaction(txToNonStd2), coins, SCRIPT_VERIFY_NONE), | ||||
0); | 0); | ||||
} | } | ||||
BOOST_AUTO_TEST_SUITE_END() | BOOST_AUTO_TEST_SUITE_END() |