Changeset View
Changeset View
Standalone View
Standalone View
src/test/script_tests.cpp
Show First 20 Lines • Show All 73 Lines • ▼ Show 20 Lines | static ScriptErrorDesc script_errors[] = { | ||||
{ScriptError::UNBALANCED_CONDITIONAL, "UNBALANCED_CONDITIONAL"}, | {ScriptError::UNBALANCED_CONDITIONAL, "UNBALANCED_CONDITIONAL"}, | ||||
{ScriptError::NEGATIVE_LOCKTIME, "NEGATIVE_LOCKTIME"}, | {ScriptError::NEGATIVE_LOCKTIME, "NEGATIVE_LOCKTIME"}, | ||||
{ScriptError::UNSATISFIED_LOCKTIME, "UNSATISFIED_LOCKTIME"}, | {ScriptError::UNSATISFIED_LOCKTIME, "UNSATISFIED_LOCKTIME"}, | ||||
{ScriptError::SIG_HASHTYPE, "SIG_HASHTYPE"}, | {ScriptError::SIG_HASHTYPE, "SIG_HASHTYPE"}, | ||||
{ScriptError::SIG_DER, "SIG_DER"}, | {ScriptError::SIG_DER, "SIG_DER"}, | ||||
{ScriptError::MINIMALDATA, "MINIMALDATA"}, | {ScriptError::MINIMALDATA, "MINIMALDATA"}, | ||||
{ScriptError::SIG_PUSHONLY, "SIG_PUSHONLY"}, | {ScriptError::SIG_PUSHONLY, "SIG_PUSHONLY"}, | ||||
{ScriptError::SIG_HIGH_S, "SIG_HIGH_S"}, | {ScriptError::SIG_HIGH_S, "SIG_HIGH_S"}, | ||||
{ScriptError::SIG_NULLDUMMY, "SIG_NULLDUMMY"}, | |||||
{ScriptError::PUBKEYTYPE, "PUBKEYTYPE"}, | {ScriptError::PUBKEYTYPE, "PUBKEYTYPE"}, | ||||
{ScriptError::CLEANSTACK, "CLEANSTACK"}, | {ScriptError::CLEANSTACK, "CLEANSTACK"}, | ||||
{ScriptError::MINIMALIF, "MINIMALIF"}, | {ScriptError::MINIMALIF, "MINIMALIF"}, | ||||
{ScriptError::SIG_NULLFAIL, "NULLFAIL"}, | {ScriptError::SIG_NULLFAIL, "NULLFAIL"}, | ||||
{ScriptError::SIG_BADLENGTH, "SIG_BADLENGTH"}, | {ScriptError::SIG_BADLENGTH, "SIG_BADLENGTH"}, | ||||
{ScriptError::SIG_NONSCHNORR, "SIG_NONSCHNORR"}, | {ScriptError::SIG_NONSCHNORR, "SIG_NONSCHNORR"}, | ||||
{ScriptError::DISCOURAGE_UPGRADABLE_NOPS, "DISCOURAGE_UPGRADABLE_NOPS"}, | {ScriptError::DISCOURAGE_UPGRADABLE_NOPS, "DISCOURAGE_UPGRADABLE_NOPS"}, | ||||
{ScriptError::NONCOMPRESSED_PUBKEY, "NONCOMPRESSED_PUBKEY"}, | {ScriptError::NONCOMPRESSED_PUBKEY, "NONCOMPRESSED_PUBKEY"}, | ||||
▲ Show 20 Lines • Show All 971 Lines • ▼ Show 20 Lines | tests.push_back( | ||||
.PushSigECDSA(keys.key1, SigHashType(5)) | .PushSigECDSA(keys.key1, SigHashType(5)) | ||||
.DamagePush(10) | .DamagePush(10) | ||||
.SetScriptError(ScriptError::SIG_HASHTYPE)); | .SetScriptError(ScriptError::SIG_HASHTYPE)); | ||||
tests.push_back(TestBuilder(CScript() << OP_3 << ToByteVector(keys.pubkey0C) | tests.push_back(TestBuilder(CScript() << OP_3 << ToByteVector(keys.pubkey0C) | ||||
<< ToByteVector(keys.pubkey1C) | << ToByteVector(keys.pubkey1C) | ||||
<< ToByteVector(keys.pubkey2C) << OP_3 | << ToByteVector(keys.pubkey2C) << OP_3 | ||||
<< OP_CHECKMULTISIG, | << OP_CHECKMULTISIG, | ||||
"3-of-3 with nonzero dummy but no NULLDUMMY", 0) | "3-of-3 with nonzero dummy", 0) | ||||
.Num(1) | .Num(1) | ||||
.PushSigECDSA(keys.key0) | .PushSigECDSA(keys.key0) | ||||
.PushSigECDSA(keys.key1) | .PushSigECDSA(keys.key1) | ||||
.PushSigECDSA(keys.key2)); | .PushSigECDSA(keys.key2)); | ||||
tests.push_back(TestBuilder(CScript() << OP_3 << ToByteVector(keys.pubkey0C) | tests.push_back(TestBuilder(CScript() << OP_3 << ToByteVector(keys.pubkey0C) | ||||
<< ToByteVector(keys.pubkey1C) | << ToByteVector(keys.pubkey1C) | ||||
<< ToByteVector(keys.pubkey2C) << OP_3 | << ToByteVector(keys.pubkey2C) << OP_3 | ||||
<< OP_CHECKMULTISIG, | |||||
"3-of-3 with nonzero dummy", | |||||
SCRIPT_VERIFY_NULLDUMMY) | |||||
.Num(1) | |||||
.PushSigECDSA(keys.key0) | |||||
.PushSigECDSA(keys.key1) | |||||
.PushSigECDSA(keys.key2) | |||||
.SetScriptError(ScriptError::SIG_NULLDUMMY)); | |||||
tests.push_back( | |||||
TestBuilder( | |||||
CScript() << OP_3 << ToByteVector(keys.pubkey0C) | |||||
<< ToByteVector(keys.pubkey1C) | |||||
<< ToByteVector(keys.pubkey2C) << OP_3 << OP_CHECKMULTISIG | |||||
<< OP_NOT, | |||||
"3-of-3 NOT with invalid sig and nonzero dummy but no NULLDUMMY", 0) | |||||
.Num(1) | |||||
.PushSigECDSA(keys.key0) | |||||
.PushSigECDSA(keys.key1) | |||||
.PushSigECDSA(keys.key2) | |||||
.DamagePush(10)); | |||||
tests.push_back( | |||||
TestBuilder(CScript() << OP_3 << ToByteVector(keys.pubkey0C) | |||||
<< ToByteVector(keys.pubkey1C) | |||||
<< ToByteVector(keys.pubkey2C) << OP_3 | |||||
<< OP_CHECKMULTISIG << OP_NOT, | << OP_CHECKMULTISIG << OP_NOT, | ||||
"3-of-3 NOT with invalid sig with nonzero dummy", | "3-of-3 NOT with invalid sig and nonzero dummy", | ||||
SCRIPT_VERIFY_NULLDUMMY) | 0) | ||||
.Num(1) | .Num(1) | ||||
.PushSigECDSA(keys.key0) | .PushSigECDSA(keys.key0) | ||||
.PushSigECDSA(keys.key1) | .PushSigECDSA(keys.key1) | ||||
.PushSigECDSA(keys.key2) | .PushSigECDSA(keys.key2) | ||||
.DamagePush(10) | .DamagePush(10)); | ||||
.SetScriptError(ScriptError::SIG_NULLDUMMY)); | |||||
tests.push_back(TestBuilder(CScript() << OP_2 << ToByteVector(keys.pubkey1C) | tests.push_back(TestBuilder(CScript() << OP_2 << ToByteVector(keys.pubkey1C) | ||||
<< ToByteVector(keys.pubkey1C) << OP_2 | << ToByteVector(keys.pubkey1C) << OP_2 | ||||
<< OP_CHECKMULTISIG, | << OP_CHECKMULTISIG, | ||||
"2-of-2 with two identical keys and sigs " | "2-of-2 with two identical keys and sigs " | ||||
"pushed using OP_DUP but no SIGPUSHONLY", | "pushed using OP_DUP but no SIGPUSHONLY", | ||||
0) | 0) | ||||
.Num(0) | .Num(0) | ||||
▲ Show 20 Lines • Show All 1,091 Lines • ▼ Show 20 Lines | |||||
tests.push_back(TestBuilder(CScript() | tests.push_back(TestBuilder(CScript() | ||||
<< OP_0 << ToByteVector(ParseHex("BEEF")) | << OP_0 << ToByteVector(ParseHex("BEEF")) | ||||
<< OP_1 << OP_CHECKMULTISIG, | << OP_1 << OP_CHECKMULTISIG, | ||||
"CHECKMULTISIG 0-of-1 with SCHNORR_MULTISIG, " | "CHECKMULTISIG 0-of-1 with SCHNORR_MULTISIG, " | ||||
"dummy need not be null", | "dummy need not be null", | ||||
newmultisigflags) | newmultisigflags) | ||||
.Push("00")); | .Push("00")); | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder( | |||||
CScript() << OP_1 << ToByteVector(keys.pubkey0) << OP_1 | |||||
<< OP_CHECKMULTISIG, | |||||
"SCHNORR_MULTISIG implies that NULLDUMMY flag has no effect", | |||||
newmultisigflags | SCRIPT_VERIFY_NULLDUMMY) | |||||
.Num(0b1) | |||||
.PushSigSchnorr(keys.key0)); | |||||
tests.push_back( | |||||
TestBuilder(CScript() << OP_1 << ToByteVector(keys.pubkey0) << OP_1 | TestBuilder(CScript() << OP_1 << ToByteVector(keys.pubkey0) << OP_1 | ||||
<< OP_CHECKMULTISIGVERIFY << OP_1, | << OP_CHECKMULTISIGVERIFY << OP_1, | ||||
"OP_CHECKMULTISIGVERIFY Schnorr", newmultisigflags) | "OP_CHECKMULTISIGVERIFY Schnorr", newmultisigflags) | ||||
.Num(0b1) | .Num(0b1) | ||||
.PushSigSchnorr(keys.key0)); | .PushSigSchnorr(keys.key0)); | ||||
tests.push_back( | tests.push_back( | ||||
TestBuilder(CScript() << OP_1 << ToByteVector(keys.pubkey0) << OP_1 | TestBuilder(CScript() << OP_1 << ToByteVector(keys.pubkey0) << OP_1 | ||||
<< OP_CHECKMULTISIG, | << OP_CHECKMULTISIG, | ||||
▲ Show 20 Lines • Show All 859 Lines • Show Last 20 Lines |