diff --git a/src/chainparams.cpp b/src/chainparams.cpp index e041149cd1..89d124475d 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -760,7 +760,7 @@ class CRegTestParams : public CChainParams { consensus.DIP0003EnforcementHash = uint256(); consensus.DIP0008Height = 1; // Always active unless overridden consensus.BRRHeight = 1; // Always active unless overridden - consensus.DIP0020Height = 1; + consensus.DIP0020Height = 1; // Always active unless overridden consensus.DIP0024Height = 900; consensus.DIP0024QuorumsHeight = 900; consensus.V19Height = 900; @@ -999,8 +999,6 @@ static void MaybeUpdateHeights(const ArgsManager& args, Consensus::Params& conse consensus.DIP0001Height = int{height}; } else if (name == "dip0008") { consensus.DIP0008Height = int{height}; - } else if (name == "dip0020") { - consensus.DIP0020Height = int{height}; } else if (name == "v20") { consensus.V20Height = int{height}; } else if (name == "mn_rr") { diff --git a/src/chainparamsbase.cpp b/src/chainparamsbase.cpp index 3426ead096..d7ef237c0e 100644 --- a/src/chainparamsbase.cpp +++ b/src/chainparamsbase.cpp @@ -22,7 +22,7 @@ void SetupChainParamsBaseOptions(ArgsManager& argsman) argsman.AddArg("-dip3params=:", "Override DIP3 activation and enforcement heights (regtest-only)", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::CHAINPARAMS); argsman.AddArg("-dip8params=", "Override DIP8 activation height (regtest-only)", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::CHAINPARAMS); argsman.AddArg("-bip147height=", "Override BIP147 activation height (regtest-only)", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::CHAINPARAMS); - argsman.AddArg("-testactivationheight=name@height.", "Set the activation height of 'name' (bip147, bip34, dersig, cltv, csv, brr, dip0001, dip0008, dip0020, v20, mn_rr). (regtest-only)", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::DEBUG_TEST); + argsman.AddArg("-testactivationheight=name@height.", "Set the activation height of 'name' (bip147, bip34, dersig, cltv, csv, brr, dip0001, dip0008, v20, mn_rr). (regtest-only)", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::DEBUG_TEST); argsman.AddArg("-highsubsidyblocks=", "The number of blocks with a higher than normal subsidy to mine at the start of a chain. Block after that height will have fixed subsidy base. (default: 0, devnet-only)", ArgsManager::ALLOW_ANY, OptionsCategory::CHAINPARAMS); argsman.AddArg("-highsubsidyfactor=", "The factor to multiply the normal block subsidy by while in the highsubsidyblocks window of a chain (default: 1, devnet-only)", ArgsManager::ALLOW_ANY, OptionsCategory::CHAINPARAMS); argsman.AddArg("-llmqchainlocks=", "Override the default LLMQ type used for ChainLocks. Allows using ChainLocks with smaller LLMQs. (default: llmq_devnet, devnet-only)", ArgsManager::ALLOW_ANY, OptionsCategory::CHAINPARAMS); diff --git a/src/policy/policy.h b/src/policy/policy.h index abf5e39582..7033972185 100644 --- a/src/policy/policy.h +++ b/src/policy/policy.h @@ -60,7 +60,6 @@ static constexpr unsigned int STANDARD_SCRIPT_VERIFY_FLAGS = MANDATORY_SCRIPT_VE SCRIPT_VERIFY_CHECKLOCKTIMEVERIFY | SCRIPT_VERIFY_CHECKSEQUENCEVERIFY | SCRIPT_VERIFY_LOW_S | - SCRIPT_ENABLE_DIP0020_OPCODES | SCRIPT_VERIFY_CONST_SCRIPTCODE; /** For convenience, standard but not mandatory verify flags. */ diff --git a/src/script/interpreter.cpp b/src/script/interpreter.cpp index c84d78c25f..35d60d5061 100644 --- a/src/script/interpreter.cpp +++ b/src/script/interpreter.cpp @@ -409,23 +409,6 @@ bool EvalScript(std::vector >& stack, const CScript& if (opcode > OP_16 && ++nOpCount > MAX_OPS_PER_SCRIPT) return set_error(serror, SCRIPT_ERR_OP_COUNT); - bool fDIP0020OpcodesEnabled = (flags & SCRIPT_ENABLE_DIP0020_OPCODES) != 0; - if (!fDIP0020OpcodesEnabled) { - if (opcode == OP_CAT || - opcode == OP_SPLIT || - opcode == OP_AND || - opcode == OP_OR || - opcode == OP_XOR || - opcode == OP_DIV || - opcode == OP_MOD || - opcode == OP_NUM2BIN || - opcode == OP_BIN2NUM || - opcode == OP_CHECKDATASIG || - opcode == OP_CHECKDATASIGVERIFY) { - return set_error(serror, SCRIPT_ERR_DISABLED_OPCODE); // Disabled opcodes. - } - } - if (opcode == OP_INVERT || opcode == OP_2MUL || opcode == OP_2DIV || diff --git a/src/script/interpreter.h b/src/script/interpreter.h index 74f2d4e897..baa3ec03eb 100644 --- a/src/script/interpreter.h +++ b/src/script/interpreter.h @@ -95,8 +95,11 @@ enum : uint32_t { // SCRIPT_VERIFY_NULLFAIL = (1U << 14), - // Enable the opcodes listed in DIP0020 (OP_CAT, OP_AND, OP_OR, OP_XOR, OP_DIV, OP_MOD, OP_SPLIT, OP_BIN2NUM, OP_NUM2BIN, OP_CHECKDATASIG, OP_CHECKDATASIGVERIFY). - SCRIPT_ENABLE_DIP0020_OPCODES = (1U << 15), + // DIP0020_OPCODES - ignored. + // Was used to enable the opcodes listed in DIP0020 + // (OP_CAT, OP_AND, OP_OR, OP_XOR, OP_DIV, OP_MOD, OP_SPLIT, OP_BIN2NUM, + // OP_NUM2BIN, OP_CHECKDATASIG, OP_CHECKDATASIGVERIFY). + // SCRIPT_ENABLE_DIP0020_OPCODES = (1U << 15), // Making OP_CODESEPARATOR and FindAndDelete fail // diff --git a/src/test/checkdatasig_tests.cpp b/src/test/checkdatasig_tests.cpp index de61b16a43..656d61173d 100644 --- a/src/test/checkdatasig_tests.cpp +++ b/src/test/checkdatasig_tests.cpp @@ -42,7 +42,7 @@ static void CheckError(uint32_t flags, const stacktype& original_stack, BaseSignatureChecker sigchecker; ScriptError err = ScriptError::SCRIPT_ERR_OK; stacktype stack{original_stack}; - bool r = EvalScript(stack, script, flags | SCRIPT_ENABLE_DIP0020_OPCODES, sigchecker, SigVersion::BASE, &err); + bool r = EvalScript(stack, script, flags, sigchecker, SigVersion::BASE, &err); BOOST_CHECK(!r); BOOST_CHECK(err == expected); } @@ -53,7 +53,7 @@ static void CheckPass(uint32_t flags, const stacktype& original_stack, BaseSignatureChecker sigchecker; ScriptError err = ScriptError::SCRIPT_ERR_OK; stacktype stack{original_stack}; - bool r = EvalScript(stack, script, flags | SCRIPT_ENABLE_DIP0020_OPCODES, sigchecker, SigVersion::BASE, &err); + bool r = EvalScript(stack, script, flags, sigchecker, SigVersion::BASE, &err); BOOST_CHECK(r); BOOST_CHECK(err == ScriptError::SCRIPT_ERR_OK); BOOST_CHECK(stack == expected); diff --git a/src/test/data/script_tests.json b/src/test/data/script_tests.json index a99296b706..9bd8869651 100644 --- a/src/test/data/script_tests.json +++ b/src/test/data/script_tests.json @@ -830,88 +830,85 @@ ["NOP", "SIZE 1", "P2SH,STRICTENC", "INVALID_STACK_OPERATION"], ["TEST DISABLED OP CODES (CVE-2010-5137)"], -["'a' 'bc'", "CAT", "P2SH,STRICTENC", "DISABLED_OPCODE"], -["'abc' 'a' 'bc'", "CAT EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["'' '' ''", "CAT EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["'a' 'a' ''", "CAT EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["'a' '' 'a'", "CAT EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' ''", "CAT EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "concatenation of 520 bytes with empty"], -["'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' '' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'", "CAT EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "concatenation of empty with 520 bytes"], -["'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'a'", "CAT", "P2SH,STRICTENC,DIP0020_OPCODES", "PUSH_SIZE", "concatenation of 520 bytes with non-empty"], -["'a' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'", "CAT", "P2SH,STRICTENC,DIP0020_OPCODES", "PUSH_SIZE", "concatenation of non-empty with 520 bytes"], -["", "CAT", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION"], -["'a'", "CAT", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION"], -["0 0", "CAT DEPTH 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "Stack depth correct"], - -["'abc' 0", "SPLIT", "P2SH,STRICTENC", "DISABLED_OPCODE"], -["'' 'abc' 0", "SPLIT DROP EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["'abc' 'abc' 0", "SPLIT SWAP DROP EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["'' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 0", "SPLIT DROP EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "split 520 bytes"], -["'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 0", "SPLIT SWAP DROP EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "split 520 bytes"], -["'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 0", "SPLIT", "P2SH,STRICTENC,DIP0020_OPCODES", "PUSH_SIZE", "split 521 bytes"], -["'a' 'abc' 1", "SPLIT DROP EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["'ab' 'abc' 2", "SPLIT DROP EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["'abc' 'abc' 3", "SPLIT DROP EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["'' 'abc' 3", "SPLIT SWAP DROP EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["'abc' 'abc' 4", "SPLIT", "P2SH,STRICTENC,DIP0020_OPCODES", "SPLIT_RANGE"], -["'abc' 'abc' -1", "SPLIT", "P2SH,STRICTENC,DIP0020_OPCODES", "SPLIT_RANGE"], -["'abc' 2147483647", "SPLIT", "P2SH,STRICTENC,DIP0020_OPCODES", "SPLIT_RANGE", "<2^31 but out of range"], -["'abc' 2147483648", "SPLIT", "P2SH,STRICTENC,DIP0020_OPCODES", "UNKNOWN_ERROR", ">=2^31"], -["'abc' 'notnum'", "SPLIT", "P2SH,STRICTENC,DIP0020_OPCODES", "UNKNOWN_ERROR"], -["", "SPLIT", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION"], -["'abc'", "SPLIT", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION"], -["'abc' 1", "SPLIT DEPTH 2 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "Stack depth correct"], +["'a' 'bc'", "CAT", "P2SH,STRICTENC", "OK"], +["'abc' 'a' 'bc'", "CAT EQUAL", "P2SH,STRICTENC", "OK"], +["'' '' ''", "CAT EQUAL", "P2SH,STRICTENC", "OK"], +["'a' 'a' ''", "CAT EQUAL", "P2SH,STRICTENC", "OK"], +["'a' '' 'a'", "CAT EQUAL", "P2SH,STRICTENC", "OK"], +["'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' ''", "CAT EQUAL", "P2SH,STRICTENC", "OK", "concatenation of 520 bytes with empty"], +["'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' '' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'", "CAT EQUAL", "P2SH,STRICTENC", "OK", "concatenation of empty with 520 bytes"], +["'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'a'", "CAT", "P2SH,STRICTENC", "PUSH_SIZE", "concatenation of 520 bytes with non-empty"], +["'a' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'", "CAT", "P2SH,STRICTENC", "PUSH_SIZE", "concatenation of non-empty with 520 bytes"], +["", "CAT", "P2SH,STRICTENC", "INVALID_STACK_OPERATION"], +["'a'", "CAT", "P2SH,STRICTENC", "INVALID_STACK_OPERATION"], +["0 0", "CAT DEPTH 1 EQUAL", "P2SH,STRICTENC", "OK", "Stack depth correct"], + +["'' 'abc' 0", "SPLIT DROP EQUAL", "P2SH,STRICTENC", "OK"], +["'abc' 'abc' 0", "SPLIT SWAP DROP EQUAL", "P2SH,STRICTENC", "OK"], +["'' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 0", "SPLIT DROP EQUAL", "P2SH,STRICTENC", "OK", "split 520 bytes"], +["'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 0", "SPLIT SWAP DROP EQUAL", "P2SH,STRICTENC", "OK", "split 520 bytes"], +["'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' 0", "SPLIT", "P2SH,STRICTENC", "PUSH_SIZE", "split 521 bytes"], +["'a' 'abc' 1", "SPLIT DROP EQUAL", "P2SH,STRICTENC", "OK"], +["'ab' 'abc' 2", "SPLIT DROP EQUAL", "P2SH,STRICTENC", "OK"], +["'abc' 'abc' 3", "SPLIT DROP EQUAL", "P2SH,STRICTENC", "OK"], +["'' 'abc' 3", "SPLIT SWAP DROP EQUAL", "P2SH,STRICTENC", "OK"], +["'abc' 'abc' 4", "SPLIT", "P2SH,STRICTENC", "SPLIT_RANGE"], +["'abc' 'abc' -1", "SPLIT", "P2SH,STRICTENC", "SPLIT_RANGE"], +["'abc' 2147483647", "SPLIT", "P2SH,STRICTENC", "SPLIT_RANGE", "<2^31 but out of range"], +["'abc' 2147483648", "SPLIT", "P2SH,STRICTENC", "UNKNOWN_ERROR", ">=2^31"], +["'abc' 'notnum'", "SPLIT", "P2SH,STRICTENC", "UNKNOWN_ERROR"], +["", "SPLIT", "P2SH,STRICTENC", "INVALID_STACK_OPERATION"], +["'abc'", "SPLIT", "P2SH,STRICTENC", "INVALID_STACK_OPERATION"], +["'abc' 1", "SPLIT DEPTH 2 EQUAL", "P2SH,STRICTENC", "OK", "Stack depth correct"], ["NUM2BIN"], -["", "NUM2BIN 0 EQUAL", "P2SH,STRICTENC", "DISABLED_OPCODE", "NUM2BIN disabled"], -["", "NUM2BIN 0 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "NUM2BIN, empty stack"], -["0", "NUM2BIN 0 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "NUM2BIN, one parameter"], -["0 0", "NUM2BIN 0 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "NUM2BIN, canonical argument "], -["0 1", "NUM2BIN 0x01 0x00 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "NUM2BIN, zero extend"], -["0 7", "NUM2BIN 0x01 0x00000000000000 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "NUM2BIN, zero extend"], -["1 1", "NUM2BIN 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "NUM2BIN, canonical argument "], -["-42 1", "NUM2BIN -42 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "NUM2BIN, canonical argument "], -["-42 2", "NUM2BIN 0x02 0x2a80 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "NUM2BIN, canonical argument "], -["-42 10", "NUM2BIN 0x02 0x2a000000000000000080 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "NUM2BIN, large materialization"], -["-42 520", "NUM2BIN", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "Pushing 520 bytes is ok"], -["-42 521", "NUM2BIN", "P2SH,STRICTENC,DIP0020_OPCODES", "PUSH_SIZE", "Pushing 521 bytes is not"], -["-42 -3", "NUM2BIN", "P2SH,STRICTENC,DIP0020_OPCODES", "PUSH_SIZE", "Negative size"], -["0x05 0xabcdef4280 4", "NUM2BIN 0x04 0xabcdefc2", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "Item size reduction"], -["0x01 0x80 0", "NUM2BIN 0 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "Negative zero"], -["0x01 0x80 3", "NUM2BIN 0x03 0x000000 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "Negative zero, larger output"], +["", "NUM2BIN 0 EQUAL", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "NUM2BIN, empty stack"], +["0", "NUM2BIN 0 EQUAL", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "NUM2BIN, one parameter"], +["0 0", "NUM2BIN 0 EQUAL", "P2SH,STRICTENC", "OK", "NUM2BIN, canonical argument "], +["0 1", "NUM2BIN 0x01 0x00 EQUAL", "P2SH,STRICTENC", "OK", "NUM2BIN, zero extend"], +["0 7", "NUM2BIN 0x01 0x00000000000000 EQUAL", "P2SH,STRICTENC", "OK", "NUM2BIN, zero extend"], +["1 1", "NUM2BIN 1 EQUAL", "P2SH,STRICTENC", "OK", "NUM2BIN, canonical argument "], +["-42 1", "NUM2BIN -42 EQUAL", "P2SH,STRICTENC", "OK", "NUM2BIN, canonical argument "], +["-42 2", "NUM2BIN 0x02 0x2a80 EQUAL", "P2SH,STRICTENC", "OK", "NUM2BIN, canonical argument "], +["-42 10", "NUM2BIN 0x02 0x2a000000000000000080 EQUAL", "P2SH,STRICTENC", "OK", "NUM2BIN, large materialization"], +["-42 520", "NUM2BIN", "P2SH,STRICTENC", "OK", "Pushing 520 bytes is ok"], +["-42 521", "NUM2BIN", "P2SH,STRICTENC", "PUSH_SIZE", "Pushing 521 bytes is not"], +["-42 -3", "NUM2BIN", "P2SH,STRICTENC", "PUSH_SIZE", "Negative size"], +["0x05 0xabcdef4280 4", "NUM2BIN 0x04 0xabcdefc2", "P2SH,STRICTENC", "OK", "Item size reduction"], +["0x01 0x80 0", "NUM2BIN 0 EQUAL", "P2SH,STRICTENC", "OK", "Negative zero"], +["0x01 0x80 3", "NUM2BIN 0x03 0x000000 EQUAL", "P2SH,STRICTENC", "OK", "Negative zero, larger output"], ["BIN2NUM"], -["", "BIN2NUM 0 EQUAL", "P2SH,STRICTENC", "DISABLED_OPCODE", "BIN2NUM disabled"], -["", "BIN2NUM 0 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "BIN2NUM, empty stack"], -["0", "BIN2NUM 0 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "BIN2NUM, canonical argument "], -["1", "BIN2NUM 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "BIN2NUM, canonical argument "], -["-42", "BIN2NUM -42 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "BIN2NUM, canonical argument "], -["0x01 0x00", "BIN2NUM 0 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "BIN2NUM, non-canonical argument "], -["0x04 0xffffff7f", "BIN2NUM 2147483647 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "BIN2NUM, maximum size argument "], -["0x04 0xffffffff", "BIN2NUM -2147483647 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "BIN2NUM, maximum size argument "], -["0", "BIN2NUM 0 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "BIN2NUM, canonical argument"], -["1", "BIN2NUM 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "BIN2NUM, canonical argument"], -["-42", "BIN2NUM -42 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "BIN2NUM, canonical argument"], -["0x01 0x00", "BIN2NUM 0 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "BIN2NUM, non-canonical argument"], -["0x04 0xffffff7f", "BIN2NUM 2147483647 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "BIN2NUM, maximum size argument"], -["0x04 0xffffffff", "BIN2NUM -2147483647 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "BIN2NUM, maximum size argument"], -["0x05 0xffffffff00", "BIN2NUM 2147483647 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_NUMBER_RANGE", "BIN2NUM, oversized argument"], -["0x05 0xffffff7f80", "BIN2NUM -2147483647 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "BIN2NUM, non-canonical maximum size argument"], -["0x05 0x0100000000", "BIN2NUM 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["0x05 0xFE00000000", "BIN2NUM 254 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["0x05 0x0500000080", "BIN2NUM 0x01 0x85 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["0x03 0x800000", "BIN2NUM 128 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "Pad where MSB of number is set"], -["0x03 0x800080", "BIN2NUM -128 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "Pad where MSB of number is set"], -["0x02 0x8000", "BIN2NUM 128 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "Pad where MSB of number is set"], -["0x02 0x8080", "BIN2NUM -128 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "Pad where MSB of number is set"], -["0x03 0x0f0000", "BIN2NUM 15 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "Don't pad where MSB of number is not set"], -["0x03 0x0f0080", "BIN2NUM -15 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "Don't pad where MSB of number is not set"], -["0x02 0x0f00", "BIN2NUM 15 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "Don't pad where MSB of number is not set"], -["0x02 0x0f80", "BIN2NUM -15 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "Don't pad where MSB of number is not set"], -["0x05 0x0100800000", "BIN2NUM 8388609 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "Ensure significant zero bytes are retained"], -["0x05 0x0100800080", "BIN2NUM -8388609 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "Ensure significant zero bytes are retained"], -["0x05 0x01000f0000", "BIN2NUM 983041 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "Ensure significant zero bytes are retained"], -["0x05 0x01000f0080", "BIN2NUM -983041 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "Ensure significant zero bytes are retained"], +["", "BIN2NUM 0 EQUAL", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "BIN2NUM, empty stack"], +["0", "BIN2NUM 0 EQUAL", "P2SH,STRICTENC", "OK", "BIN2NUM, canonical argument "], +["1", "BIN2NUM 1 EQUAL", "P2SH,STRICTENC", "OK", "BIN2NUM, canonical argument "], +["-42", "BIN2NUM -42 EQUAL", "P2SH,STRICTENC", "OK", "BIN2NUM, canonical argument "], +["0x01 0x00", "BIN2NUM 0 EQUAL", "P2SH,STRICTENC", "OK", "BIN2NUM, non-canonical argument "], +["0x04 0xffffff7f", "BIN2NUM 2147483647 EQUAL", "P2SH,STRICTENC", "OK", "BIN2NUM, maximum size argument "], +["0x04 0xffffffff", "BIN2NUM -2147483647 EQUAL", "P2SH,STRICTENC", "OK", "BIN2NUM, maximum size argument "], +["0", "BIN2NUM 0 EQUAL", "P2SH,STRICTENC", "OK", "BIN2NUM, canonical argument"], +["1", "BIN2NUM 1 EQUAL", "P2SH,STRICTENC", "OK", "BIN2NUM, canonical argument"], +["-42", "BIN2NUM -42 EQUAL", "P2SH,STRICTENC", "OK", "BIN2NUM, canonical argument"], +["0x01 0x00", "BIN2NUM 0 EQUAL", "P2SH,STRICTENC", "OK", "BIN2NUM, non-canonical argument"], +["0x04 0xffffff7f", "BIN2NUM 2147483647 EQUAL", "P2SH,STRICTENC", "OK", "BIN2NUM, maximum size argument"], +["0x04 0xffffffff", "BIN2NUM -2147483647 EQUAL", "P2SH,STRICTENC", "OK", "BIN2NUM, maximum size argument"], +["0x05 0xffffffff00", "BIN2NUM 2147483647 EQUAL", "P2SH,STRICTENC", "INVALID_NUMBER_RANGE", "BIN2NUM, oversized argument"], +["0x05 0xffffff7f80", "BIN2NUM -2147483647 EQUAL", "P2SH,STRICTENC", "OK", "BIN2NUM, non-canonical maximum size argument"], +["0x05 0x0100000000", "BIN2NUM 1 EQUAL", "P2SH,STRICTENC", "OK"], +["0x05 0xFE00000000", "BIN2NUM 254 EQUAL", "P2SH,STRICTENC", "OK"], +["0x05 0x0500000080", "BIN2NUM 0x01 0x85 EQUAL", "P2SH,STRICTENC", "OK"], +["0x03 0x800000", "BIN2NUM 128 EQUAL", "P2SH,STRICTENC", "OK", "Pad where MSB of number is set"], +["0x03 0x800080", "BIN2NUM -128 EQUAL", "P2SH,STRICTENC", "OK", "Pad where MSB of number is set"], +["0x02 0x8000", "BIN2NUM 128 EQUAL", "P2SH,STRICTENC", "OK", "Pad where MSB of number is set"], +["0x02 0x8080", "BIN2NUM -128 EQUAL", "P2SH,STRICTENC", "OK", "Pad where MSB of number is set"], +["0x03 0x0f0000", "BIN2NUM 15 EQUAL", "P2SH,STRICTENC", "OK", "Don't pad where MSB of number is not set"], +["0x03 0x0f0080", "BIN2NUM -15 EQUAL", "P2SH,STRICTENC", "OK", "Don't pad where MSB of number is not set"], +["0x02 0x0f00", "BIN2NUM 15 EQUAL", "P2SH,STRICTENC", "OK", "Don't pad where MSB of number is not set"], +["0x02 0x0f80", "BIN2NUM -15 EQUAL", "P2SH,STRICTENC", "OK", "Don't pad where MSB of number is not set"], +["0x05 0x0100800000", "BIN2NUM 8388609 EQUAL", "P2SH,STRICTENC", "OK", "Ensure significant zero bytes are retained"], +["0x05 0x0100800080", "BIN2NUM -8388609 EQUAL", "P2SH,STRICTENC", "OK", "Ensure significant zero bytes are retained"], +["0x05 0x01000f0000", "BIN2NUM 983041 EQUAL", "P2SH,STRICTENC", "OK", "Ensure significant zero bytes are retained"], +["0x05 0x01000f0080", "BIN2NUM -983041 EQUAL", "P2SH,STRICTENC", "OK", "Ensure significant zero bytes are retained"], ["Disabled opcodes"], ["'abc'", "IF INVERT ELSE 1 ENDIF", "P2SH,STRICTENC", "DISABLED_OPCODE", "INVERT disabled"], ["2 0 IF 2MUL ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC", "DISABLED_OPCODE", "2MUL disabled"], @@ -922,252 +919,247 @@ ["Bitwise opcodes"], ["AND"], -["1 2 0 IF AND ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC", "DISABLED_OPCODE", "AND disabled"], -["1 2 0 IF AND ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "AND enabled"], -["0 0", "AND 0 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "AND, empty parameters"], -["0x01 0x00 0x01 0x00", "AND 0x01 0x00 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "AND, simple and"], -["1 0x01 0x00", "AND 0x01 0x00 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "AND, simple and"], -["0x01 0x00 1", "AND 0x01 0x00 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "AND, simple and"], -["1 1", "AND 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "AND, simple and"], -["0x01 0xab 0x01 0xcd", "AND 0x01 0x89 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "AND, more complex operands"], +["1 2 0 IF AND ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC", "OK", "AND enabled"], +["0 0", "AND 0 EQUAL", "P2SH,STRICTENC", "OK", "AND, empty parameters"], +["0x01 0x00 0x01 0x00", "AND 0x01 0x00 EQUAL", "P2SH,STRICTENC", "OK", "AND, simple and"], +["1 0x01 0x00", "AND 0x01 0x00 EQUAL", "P2SH,STRICTENC", "OK", "AND, simple and"], +["0x01 0x00 1", "AND 0x01 0x00 EQUAL", "P2SH,STRICTENC", "OK", "AND, simple and"], +["1 1", "AND 1 EQUAL", "P2SH,STRICTENC", "OK", "AND, simple and"], +["0x01 0xab 0x01 0xcd", "AND 0x01 0x89 EQUAL", "P2SH,STRICTENC", "OK", "AND, more complex operands"], [ "0x4d 0x0802 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0x4d 0x0802 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "AND 0x4d 0x0802 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", + "P2SH,STRICTENC", "OK", "AND, even more complex operands, all 0s both, 520 bytes each. 0x4d is OP_PUSHDATA2, 0x0802 is 520" ], [ "0x4d 0x0802 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0x4d 0x0802 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "AND 0x4d 0x0802 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", + "P2SH,STRICTENC", "OK", "AND, even more complex operands, all 0s and all 1s, 520 bytes each. 0x4d is OP_PUSHDATA2, 0x0802 is 520" ], [ "0x4d 0x0802 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0x4d 0x0802 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "AND 0x4d 0x0802 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", + "P2SH,STRICTENC", "OK", "AND, even more complex operands, all 1s both, 520 bytes each. 0x4d is OP_PUSHDATA2, 0x0802 is 520" ], [ "0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5 0x4d 0x0802 0xd29e99c9e7117b0e4b8e1108d15cf4b82c143f4575e98aeb81f8d8a38e4b630e7f1efd84837c261ff0c9371c5ff5f33d672b2730db3ee72f7b7d1c40062a725a370cd5a8a381d473ef1e4e6cb9103d046ecae7df627b64006ab6da029674a7c2bb2869dfc809ff6c6f7af88269f159f83de06da571fb392e1751cb942ad04e02afa5d53956da102ea2910bd2cab1ac6dd2efad5954bcd3444c6ce25cedabc0046d3e92f94ace76ed4550932917939cf0d83ccdf7529f27572affe033b6a441a3350bab0c0bdd98101d97247a8ecba37ae9a873f44a4c6bb73165ca5ac4d83ce0ad302a2e342e4084dd5d08ed1012ca3f242d085b86b6f470005c9d302a81d25ca170cf990ff594ef541dab9124594ff6cbb86d1421f1fb145c294e6eb04d640c38ee1963149b3db4192591e6def4342b8799bdec1cd39234b7baef00aedcec9dd1fa839f958db0edc067aece15db288b8fcbc49b0d466796b086b2db3c896e57accb3457378000347871f01a2c28879f08217c0e7e29fb9a2c77482f88e2f06a87150c4cbfcbddee75e1bc3831dce961531ec84b80945c03dd4baea854e98b232021c80383335f1137fcd5b3119a060dbfcdc72288b8c93fec7c11966aa057df5bdea20911d3fdbf847a9d3aba0f6d01adbcb9d88ae4d6a20493e002d24549148e849c7c571b0527f65983d1f4b62fbe6e357e9710f5421ac94db907716dd196c388b6e60e8a8ad7", "AND 0x4d 0x0802 0x100e180183001a00418c0000901c54a020142c4471880a480180c8038e4203063e163000810000177049241043406204652a02008b04c72a18610800040a104830000520a201d4226c140a20a0001c044cca45c3405a44002236920090502302092860c30808c40c0b6aa08249311930152024856158082e1640cb1422d046008721413844d81028228003d0c8010c2480088501508443044840c0102902400444081050004a26e54400902815819cf098304865429b001600fb003226a0018025092104004c801008842460048aa24ae10023b0020022932021c84a4458046000302822202e400404540025101240132020005806148050000480000a00c0102140488905a114e204012b80201943304930480020a0e10040284a0aa049440430e0110010900924090110649284042b02180c4810020010b1880a00a608a088518880958584106d006324c414c828820bc3801300464386000210892809425580032446068000342821a00220288109080174045828c8882c34000d088230228710004c9a03d88611e0882811500141500c084300845c031c0ba800406800000000000300211c10275800a30080020d2dc44402880048150c1000862a80155e0240a0081152e8af00788422b20b4401a9b429088024c6200412c000d04448140a00004014110501360980c1f0960b8c2011029510f54200484118070021d1808008342208088895 EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", + "P2SH,STRICTENC", "OK", "AND, even more complex operands, random, 520 bytes each. 0x4d is OP_PUSHDATA2, 0x0802 is 520" ], [ "0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5 0x4d 0x0802 0xd29e99c9e7117b0e4b8e1108d15cf4b82c143f4575e98aeb81f8d8a38e4b630e7f1efd84837c261ff0c9371c5ff5f33d672b2730db3ee72f7b7d1c40062a725a370cd5a8a381d473ef1e4e6cb9103d046ecae7df627b64006ab6da029674a7c2bb2869dfc809ff6c6f7af88269f159f83de06da571fb392e1751cb942ad04e02afa5d53956da102ea2910bd2cab1ac6dd2efad5954bcd3444c6ce25cedabc0046d3e92f94ace76ed4550932917939cf0d83ccdf7529f27572affe033b6a441a3350bab0c0bdd98101d97247a8ecba37ae9a873f44a4c6bb73165ca5ac4d83ce0ad302a2e342e4084dd5d08ed1012ca3f242d085b86b6f470005c9d302a81d25ca170cf990ff594ef541dab9124594ff6cbb86d1421f1fb145c294e6eb04d640c38ee1963149b3db4192591e6def4342b8799bdec1cd39234b7baef00aedcec9dd1fa839f958db0edc067aece15db288b8fcbc49b0d466796b086b2db3c896e57accb3457378000347871f01a2c28879f08217c0e7e29fb9a2c77482f88e2f06a87150c4cbfcbddee75e1bc3831dce961531ec84b80945c03dd4baea854e98b232021c80383335f1137fcd5b3119a060dbfcdc72288b8c93fec7c11966aa057df5bdea20911d3fdbf847a9d3aba0f6d01adbcb9d88ae4d6a20493e002d24549148e849c7c571b0527f65983d1f4b62fbe6e357e9710f5421ac94db907716dd196c388b6e60e8a8ad7", "SWAP AND 0x4d 0x0802 0x100e180183001a00418c0000901c54a020142c4471880a480180c8038e4203063e163000810000177049241043406204652a02008b04c72a18610800040a104830000520a201d4226c140a20a0001c044cca45c3405a44002236920090502302092860c30808c40c0b6aa08249311930152024856158082e1640cb1422d046008721413844d81028228003d0c8010c2480088501508443044840c0102902400444081050004a26e54400902815819cf098304865429b001600fb003226a0018025092104004c801008842460048aa24ae10023b0020022932021c84a4458046000302822202e400404540025101240132020005806148050000480000a00c0102140488905a114e204012b80201943304930480020a0e10040284a0aa049440430e0110010900924090110649284042b02180c4810020010b1880a00a608a088518880958584106d006324c414c828820bc3801300464386000210892809425580032446068000342821a00220288109080174045828c8882c34000d088230228710004c9a03d88611e0882811500141500c084300845c031c0ba800406800000000000300211c10275800a30080020d2dc44402880048150c1000862a80155e0240a0081152e8af00788422b20b4401a9b429088024c6200412c000d04448140a00004014110501360980c1f0960b8c2011029510f54200484118070021d1808008342208088895 EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", + "P2SH,STRICTENC", "OK", "AND, even more complex operands, random swapped, 520 bytes each. 0x4d is OP_PUSHDATA2, 0x0802 is 520" ], ["AND, invalid"], -["", "AND 0 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "AND, empty stack"], -["0", "AND 0 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "AND, invalid parameter count"], -["0x00", "AND 0x00 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "AND, invalid parameter count"], -["0x01 0x00", "AND 0x01 0x00 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "AND, invalid parameter count"], -["0x03 0xab 0xcd 0xef", "AND 0x03 0xab 0xcd 0xef EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "AND, invalid parameter count"], +["", "AND 0 EQUAL", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "AND, empty stack"], +["0", "AND 0 EQUAL", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "AND, invalid parameter count"], +["0x00", "AND 0x00 EQUAL", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "AND, invalid parameter count"], +["0x01 0x00", "AND 0x01 0x00 EQUAL", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "AND, invalid parameter count"], +["0x03 0xab 0xcd 0xef", "AND 0x03 0xab 0xcd 0xef EQUAL", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "AND, invalid parameter count"], [ "0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5", "AND 0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5 EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "AND, invalid parameter count" + "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "AND, invalid parameter count" ], -["0 1", "AND 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OPERAND_SIZE", "AND, different operand size"], -["0 0x01 0x00", "AND 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OPERAND_SIZE", "AND, different operand size"], -["0x01 0x00 0", "AND 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OPERAND_SIZE", "AND, different operand size"], -["0x01 0x00 0x03 0xab 0xcd 0xef", "AND 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OPERAND_SIZE", "AND, different operand size"], -["0x03 0xab 0xcd 0xef 0x01 0x00", "AND 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OPERAND_SIZE", "AND, different operand size"], +["0 1", "AND 1 EQUAL", "P2SH,STRICTENC", "OPERAND_SIZE", "AND, different operand size"], +["0 0x01 0x00", "AND 1 EQUAL", "P2SH,STRICTENC", "OPERAND_SIZE", "AND, different operand size"], +["0x01 0x00 0", "AND 1 EQUAL", "P2SH,STRICTENC", "OPERAND_SIZE", "AND, different operand size"], +["0x01 0x00 0x03 0xab 0xcd 0xef", "AND 1 EQUAL", "P2SH,STRICTENC", "OPERAND_SIZE", "AND, different operand size"], +["0x03 0xab 0xcd 0xef 0x01 0x00", "AND 1 EQUAL", "P2SH,STRICTENC", "OPERAND_SIZE", "AND, different operand size"], [ "0x01 0x00 0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5", "AND 0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5 EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", "OPERAND_SIZE", "AND, different operand size" + "P2SH,STRICTENC", "OPERAND_SIZE", "AND, different operand size" ], [ "0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5 0x01 0x00", "AND 0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5 EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", "OPERAND_SIZE", "AND, different operand size" + "P2SH,STRICTENC", "OPERAND_SIZE", "AND, different operand size" ], ["OR"], -["1 2 0 IF OR ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC", "DISABLED_OPCODE", "OR disabled"], -["1 2 0 IF OR ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "OR enabled"], -["0 0", "OR 0 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "OR, empty parameters"], -["0x01 0x00 0x01 0x00", "OR 0x01 0x00 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "OR, simple and"], -["1 0x01 0x00", "OR 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "OR, simple and"], -["0x01 0x00 1", "OR 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "OR, simple and"], -["1 1", "OR 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "OR, simple and"], -["0x01 0xab 0x01 0xcd", "OR 0x01 0xef EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "OR, more complex operands"], +["1 2 0 IF OR ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC", "OK", "OR enabled"], +["0 0", "OR 0 EQUAL", "P2SH,STRICTENC", "OK", "OR, empty parameters"], +["0x01 0x00 0x01 0x00", "OR 0x01 0x00 EQUAL", "P2SH,STRICTENC", "OK", "OR, simple and"], +["1 0x01 0x00", "OR 1 EQUAL", "P2SH,STRICTENC", "OK", "OR, simple and"], +["0x01 0x00 1", "OR 1 EQUAL", "P2SH,STRICTENC", "OK", "OR, simple and"], +["1 1", "OR 1 EQUAL", "P2SH,STRICTENC", "OK", "OR, simple and"], +["0x01 0xab 0x01 0xcd", "OR 0x01 0xef EQUAL", "P2SH,STRICTENC", "OK", "OR, more complex operands"], [ "0x4d 0x0802 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0x4d 0x0802 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "OR 0x4d 0x0802 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", + "P2SH,STRICTENC", "OK", "OR, even more complex operands, all 0s both, 520 bytes each. 0x4d is OP_PUSHDATA2, 0x0802 is 520" ], [ "0x4d 0x0802 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0x4d 0x0802 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "OR 0x4d 0x0802 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", + "P2SH,STRICTENC", "OK", "OR, even more complex operands, all 0s and all 1s, 520 bytes each. 0x4d is OP_PUSHDATA2, 0x0802 is 520" ], [ "0x4d 0x0802 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0x4d 0x0802 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "OR 0x4d 0x0802 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", + "P2SH,STRICTENC", "OK", "OR, even more complex operands, all 1s both, 520 bytes each. 0x4d is OP_PUSHDATA2, 0x0802 is 520" ], [ "0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5 0x4d 0x0802 0xd29e99c9e7117b0e4b8e1108d15cf4b82c143f4575e98aeb81f8d8a38e4b630e7f1efd84837c261ff0c9371c5ff5f33d672b2730db3ee72f7b7d1c40062a725a370cd5a8a381d473ef1e4e6cb9103d046ecae7df627b64006ab6da029674a7c2bb2869dfc809ff6c6f7af88269f159f83de06da571fb392e1751cb942ad04e02afa5d53956da102ea2910bd2cab1ac6dd2efad5954bcd3444c6ce25cedabc0046d3e92f94ace76ed4550932917939cf0d83ccdf7529f27572affe033b6a441a3350bab0c0bdd98101d97247a8ecba37ae9a873f44a4c6bb73165ca5ac4d83ce0ad302a2e342e4084dd5d08ed1012ca3f242d085b86b6f470005c9d302a81d25ca170cf990ff594ef541dab9124594ff6cbb86d1421f1fb145c294e6eb04d640c38ee1963149b3db4192591e6def4342b8799bdec1cd39234b7baef00aedcec9dd1fa839f958db0edc067aece15db288b8fcbc49b0d466796b086b2db3c896e57accb3457378000347871f01a2c28879f08217c0e7e29fb9a2c77482f88e2f06a87150c4cbfcbddee75e1bc3831dce961531ec84b80945c03dd4baea854e98b232021c80383335f1137fcd5b3119a060dbfcdc72288b8c93fec7c11966aa057df5bdea20911d3fdbf847a9d3aba0f6d01adbcb9d88ae4d6a20493e002d24549148e849c7c571b0527f65983d1f4b62fbe6e357e9710f5421ac94db907716dd196c388b6e60e8a8ad7", "OR 0x4d 0x0802 0xf69effdfe7777b8f4f8f372efdfdf6fffe1cfff77dedbefb8ffedff3be6fefaffffefd968f7d263fffdb775c7ff5fb7df77f27f7fb7fef6ffb7dfcf8c6be73fa377dd7fba3cdddf7effe6e6eb9bcfdf4eefbefff77ff64467ab6dbb6dff5bfc6bb6a6ddfd859ffff7f7afbab79f7fdfebff56fa773fb396e5f57cf953bfc4e47bfe5dfb9fedf1b6fee9b2ffbcffbfcedd6fffd7b54fef3fecefff2ddfdbfea6eff3f9afb4feef7ff65f3f3bb77d79cf7fb7cedf75fdff7773efffaf7feeecdebb5afebce0fdddbb97d9fa4fe8eefeffaeffaf7fe5edd6fbfbf75cf7fcefe7fe0edf0beee34afc1cfff5d9bfffcbfdafff63d78ffe7b7f6f3397fbf7fee91ff5df3f4cff96ff5deff5c9dbb91e5df5ff7cbfbed1e6ff5fbf5feadef6fb54fe54ffeff1d7335fbfffffdf7d1fffef6b7abe7ddfdefbcdbb23dbfbefff5eefdec9fd5faa3ffffeff0edf67fffef15dbfbcfdfefddbf6f56ff9ff0c7f6df7c99eef7ecfffdff3fab0b777977fc1f7cfaafff2871fd6f7e7bffdbfe7fe82feee7f87eb71f4d6cbfdbffee77e7fdfcbfdcfde3775ee96f8ab77e7ffdebefec75efef73673fdf23e73bdf9dfffffdf31fbf2e2fbfcfeff3aabbc93fecfe91966fe2ffdfdbffa389dddfffff9dfb9d7effbf6dadfdffbffadff7ffaa3d9bfc6ef3cdcbd5afdcfffc779b87fff67f93fbf5feafbe6e75fffff4fde75ae9fffb17f16df3d7d3bcf7e74e9e9af7 EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", + "P2SH,STRICTENC", "OK", "OR, even more complex operands, random, 520 bytes each. 0x4d is OP_PUSHDATA2, 0x0802 is 520" ], [ "0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5 0x4d 0x0802 0xd29e99c9e7117b0e4b8e1108d15cf4b82c143f4575e98aeb81f8d8a38e4b630e7f1efd84837c261ff0c9371c5ff5f33d672b2730db3ee72f7b7d1c40062a725a370cd5a8a381d473ef1e4e6cb9103d046ecae7df627b64006ab6da029674a7c2bb2869dfc809ff6c6f7af88269f159f83de06da571fb392e1751cb942ad04e02afa5d53956da102ea2910bd2cab1ac6dd2efad5954bcd3444c6ce25cedabc0046d3e92f94ace76ed4550932917939cf0d83ccdf7529f27572affe033b6a441a3350bab0c0bdd98101d97247a8ecba37ae9a873f44a4c6bb73165ca5ac4d83ce0ad302a2e342e4084dd5d08ed1012ca3f242d085b86b6f470005c9d302a81d25ca170cf990ff594ef541dab9124594ff6cbb86d1421f1fb145c294e6eb04d640c38ee1963149b3db4192591e6def4342b8799bdec1cd39234b7baef00aedcec9dd1fa839f958db0edc067aece15db288b8fcbc49b0d466796b086b2db3c896e57accb3457378000347871f01a2c28879f08217c0e7e29fb9a2c77482f88e2f06a87150c4cbfcbddee75e1bc3831dce961531ec84b80945c03dd4baea854e98b232021c80383335f1137fcd5b3119a060dbfcdc72288b8c93fec7c11966aa057df5bdea20911d3fdbf847a9d3aba0f6d01adbcb9d88ae4d6a20493e002d24549148e849c7c571b0527f65983d1f4b62fbe6e357e9710f5421ac94db907716dd196c388b6e60e8a8ad7", "SWAP OR 0x4d 0x0802 0xf69effdfe7777b8f4f8f372efdfdf6fffe1cfff77dedbefb8ffedff3be6fefaffffefd968f7d263fffdb775c7ff5fb7df77f27f7fb7fef6ffb7dfcf8c6be73fa377dd7fba3cdddf7effe6e6eb9bcfdf4eefbefff77ff64467ab6dbb6dff5bfc6bb6a6ddfd859ffff7f7afbab79f7fdfebff56fa773fb396e5f57cf953bfc4e47bfe5dfb9fedf1b6fee9b2ffbcffbfcedd6fffd7b54fef3fecefff2ddfdbfea6eff3f9afb4feef7ff65f3f3bb77d79cf7fb7cedf75fdff7773efffaf7feeecdebb5afebce0fdddbb97d9fa4fe8eefeffaeffaf7fe5edd6fbfbf75cf7fcefe7fe0edf0beee34afc1cfff5d9bfffcbfdafff63d78ffe7b7f6f3397fbf7fee91ff5df3f4cff96ff5deff5c9dbb91e5df5ff7cbfbed1e6ff5fbf5feadef6fb54fe54ffeff1d7335fbfffffdf7d1fffef6b7abe7ddfdefbcdbb23dbfbefff5eefdec9fd5faa3ffffeff0edf67fffef15dbfbcfdfefddbf6f56ff9ff0c7f6df7c99eef7ecfffdff3fab0b777977fc1f7cfaafff2871fd6f7e7bffdbfe7fe82feee7f87eb71f4d6cbfdbffee77e7fdfcbfdcfde3775ee96f8ab77e7ffdebefec75efef73673fdf23e73bdf9dfffffdf31fbf2e2fbfcfeff3aabbc93fecfe91966fe2ffdfdbffa389dddfffff9dfb9d7effbf6dadfdffbffadff7ffaa3d9bfc6ef3cdcbd5afdcfffc779b87fff67f93fbf5feafbe6e75fffff4fde75ae9fffb17f16df3d7d3bcf7e74e9e9af7 EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", + "P2SH,STRICTENC", "OK", "OR, even more complex operands, random swapped, 520 bytes each. 0x4d is OP_PUSHDATA2, 0x0802 is 520" ], ["OR, invalid"], -["", "OR 0 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "OR, empty stack"], -["0", "OR 0 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "OR, invalid parameter count"], -["0x00", "OR 0x00 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "OR, invalid parameter count"], -["0x01 0x00", "OR 0x01 0x00 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "OR, invalid parameter count"], -["0x03 0xab 0xcd 0xef", "OR 0x03 0xab 0xcd 0xef EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "OR, invalid parameter count"], +["", "OR 0 EQUAL", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "OR, empty stack"], +["0", "OR 0 EQUAL", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "OR, invalid parameter count"], +["0x00", "OR 0x00 EQUAL", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "OR, invalid parameter count"], +["0x01 0x00", "OR 0x01 0x00 EQUAL", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "OR, invalid parameter count"], +["0x03 0xab 0xcd 0xef", "OR 0x03 0xab 0xcd 0xef EQUAL", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "OR, invalid parameter count"], [ "0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5", "OR 0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5 EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "OR, invalid parameter count" + "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "OR, invalid parameter count" ], -["0 1", "OR 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OPERAND_SIZE", "OR, different operand size"], -["0 0x01 0x00", "OR 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OPERAND_SIZE", "OR, different operand size"], -["0x01 0x00 0", "OR 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OPERAND_SIZE", "OR, different operand size"], -["0x01 0x00 0x03 0xab 0xcd 0xef", "OR 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OPERAND_SIZE", "OR, different operand size"], -["0x03 0xab 0xcd 0xef 0x01 0x00", "OR 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OPERAND_SIZE", "OR, different operand size"], +["0 1", "OR 1 EQUAL", "P2SH,STRICTENC", "OPERAND_SIZE", "OR, different operand size"], +["0 0x01 0x00", "OR 1 EQUAL", "P2SH,STRICTENC", "OPERAND_SIZE", "OR, different operand size"], +["0x01 0x00 0", "OR 1 EQUAL", "P2SH,STRICTENC", "OPERAND_SIZE", "OR, different operand size"], +["0x01 0x00 0x03 0xab 0xcd 0xef", "OR 1 EQUAL", "P2SH,STRICTENC", "OPERAND_SIZE", "OR, different operand size"], +["0x03 0xab 0xcd 0xef 0x01 0x00", "OR 1 EQUAL", "P2SH,STRICTENC", "OPERAND_SIZE", "OR, different operand size"], [ "0x01 0x00 0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5", "OR 0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5 EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", "OPERAND_SIZE", "OR, different operand size" + "P2SH,STRICTENC", "OPERAND_SIZE", "OR, different operand size" ], [ "0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5 0x01 0x00", "OR 0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5 EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", "OPERAND_SIZE", "OR, different operand size" + "P2SH,STRICTENC", "OPERAND_SIZE", "OR, different operand size" ], ["XOR"], -["1 2 0 IF XOR ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC", "DISABLED_OPCODE", "XOR disabled"], -["1 2 0 IF XOR ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "XOR enabled"], -["0 0", "XOR 0 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "XOR, empty parameters"], -["0x01 0x00 0x01 0x00", "XOR 0x01 0x00 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "XOR, simple and"], -["1 0x01 0x00", "XOR 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "XOR, simple and"], -["0x01 0x00 1", "XOR 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "XOR, simple and"], -["1 1", "XOR 0x01 0x00 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "XOR, simple and"], -["0x01 0xab 0x01 0xcd", "XOR 0x01 0x66 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "XOR, more complex operands"], +["1 2 0 IF XOR ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC", "OK", "XOR enabled"], +["0 0", "XOR 0 EQUAL", "P2SH,STRICTENC", "OK", "XOR, empty parameters"], +["0x01 0x00 0x01 0x00", "XOR 0x01 0x00 EQUAL", "P2SH,STRICTENC", "OK", "XOR, simple and"], +["1 0x01 0x00", "XOR 1 EQUAL", "P2SH,STRICTENC", "OK", "XOR, simple and"], +["0x01 0x00 1", "XOR 1 EQUAL", "P2SH,STRICTENC", "OK", "XOR, simple and"], +["1 1", "XOR 0x01 0x00 EQUAL", "P2SH,STRICTENC", "OK", "XOR, simple and"], +["0x01 0xab 0x01 0xcd", "XOR 0x01 0x66 EQUAL", "P2SH,STRICTENC", "OK", "XOR, more complex operands"], [ "0x4d 0x0802 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0x4d 0x0802 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "XOR 0x4d 0x0802 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", + "P2SH,STRICTENC", "OK", "XOR, even more complex operands, all 0s both, 520 bytes each. 0x4d is OP_PUSHDATA2, 0x0802 is 520" ], [ "0x4d 0x0802 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0x4d 0x0802 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "XOR 0x4d 0x0802 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", + "P2SH,STRICTENC", "OK", "XOR, even more complex operands, all 0s and all 1s, 520 bytes each. 0x4d is OP_PUSHDATA2, 0x0802 is 520" ], [ "0x4d 0x0802 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0x4d 0x0802 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "XOR 0x4d 0x0802 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", + "P2SH,STRICTENC", "OK", "XOR, even more complex operands, all 1s both, 520 bytes each. 0x4d is OP_PUSHDATA2, 0x0802 is 520" ], [ "0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5 0x4d 0x0802 0xd29e99c9e7117b0e4b8e1108d15cf4b82c143f4575e98aeb81f8d8a38e4b630e7f1efd84837c261ff0c9371c5ff5f33d672b2730db3ee72f7b7d1c40062a725a370cd5a8a381d473ef1e4e6cb9103d046ecae7df627b64006ab6da029674a7c2bb2869dfc809ff6c6f7af88269f159f83de06da571fb392e1751cb942ad04e02afa5d53956da102ea2910bd2cab1ac6dd2efad5954bcd3444c6ce25cedabc0046d3e92f94ace76ed4550932917939cf0d83ccdf7529f27572affe033b6a441a3350bab0c0bdd98101d97247a8ecba37ae9a873f44a4c6bb73165ca5ac4d83ce0ad302a2e342e4084dd5d08ed1012ca3f242d085b86b6f470005c9d302a81d25ca170cf990ff594ef541dab9124594ff6cbb86d1421f1fb145c294e6eb04d640c38ee1963149b3db4192591e6def4342b8799bdec1cd39234b7baef00aedcec9dd1fa839f958db0edc067aece15db288b8fcbc49b0d466796b086b2db3c896e57accb3457378000347871f01a2c28879f08217c0e7e29fb9a2c77482f88e2f06a87150c4cbfcbddee75e1bc3831dce961531ec84b80945c03dd4baea854e98b232021c80383335f1137fcd5b3119a060dbfcdc72288b8c93fec7c11966aa057df5bdea20911d3fdbf847a9d3aba0f6d01adbcb9d88ae4d6a20493e002d24549148e849c7c571b0527f65983d1f4b62fbe6e357e9710f5421ac94db907716dd196c388b6e60e8a8ad7", "XOR 0x4d 0x0802 0xe690e7de6477618f0e03372e6de1a25fde08d3b30c65b4b38e7e17f0302deca9c1e8cd960e7d26288f92534c3cb59979925525f7707b2845e31cf4f8c2b463b2077dd2db01cc09d583ea644e19bce1f0a231aa3c37a52046588049b64fa59cc4b2420d1cd0513bf374105b2930c6e4ceaad54b2212a3314049170481192c084738c49e81ba070b47cc1b2c2b07faf0c956f7787a047ab0fa86bf32cdd4bdaa6abb378aab4fa4d11a21f3639362560007634ca5921d44f7613e04fac5d84ecc6b90a6caca0f915ba9751b809e8a654db00efad44e5cdd4d2c9f5407358aa67b80edc096cc148181cbfb099bdaecad9aecd61d78a7e1a376a3397b3f7fe4913f4dd2b487706a54ca1d589c9011c5c61cc782cba51e4f551af5be85a5651506a14bce1f0c73256bf6dbf4f6c19b6c72b380e5c5f1a7acd9b22d0e36f5f548f54c178472236a7a6be080f61cdb2b0113d34dd42c5dac6f10bc19f0c5e6565490aca26cfcd9b9392b0b4351565c1d5cd22ef62070896b26533753d24be822e665c85c300f4d2025d82768660775d4ae8cfca22752e12c8a33227ce1e047ec3587ef73673fdf20e71ac38dd8a7fd501f3f2c22920babf122bb812ae0ee91104562ea81d9bf0381cc8d17509d83195c4db429ac544b96f25fd3398a39893c6e238983c1a5dcffbc638a82fec076133a0568a4324e64fd6ae408a55aa1bee310f14c225753b4c3c546961262 EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", + "P2SH,STRICTENC", "OK", "XOR, even more complex operands, random, 520 bytes each. 0x4d is OP_PUSHDATA2, 0x0802 is 520" ], [ "0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5 0x4d 0x0802 0xd29e99c9e7117b0e4b8e1108d15cf4b82c143f4575e98aeb81f8d8a38e4b630e7f1efd84837c261ff0c9371c5ff5f33d672b2730db3ee72f7b7d1c40062a725a370cd5a8a381d473ef1e4e6cb9103d046ecae7df627b64006ab6da029674a7c2bb2869dfc809ff6c6f7af88269f159f83de06da571fb392e1751cb942ad04e02afa5d53956da102ea2910bd2cab1ac6dd2efad5954bcd3444c6ce25cedabc0046d3e92f94ace76ed4550932917939cf0d83ccdf7529f27572affe033b6a441a3350bab0c0bdd98101d97247a8ecba37ae9a873f44a4c6bb73165ca5ac4d83ce0ad302a2e342e4084dd5d08ed1012ca3f242d085b86b6f470005c9d302a81d25ca170cf990ff594ef541dab9124594ff6cbb86d1421f1fb145c294e6eb04d640c38ee1963149b3db4192591e6def4342b8799bdec1cd39234b7baef00aedcec9dd1fa839f958db0edc067aece15db288b8fcbc49b0d466796b086b2db3c896e57accb3457378000347871f01a2c28879f08217c0e7e29fb9a2c77482f88e2f06a87150c4cbfcbddee75e1bc3831dce961531ec84b80945c03dd4baea854e98b232021c80383335f1137fcd5b3119a060dbfcdc72288b8c93fec7c11966aa057df5bdea20911d3fdbf847a9d3aba0f6d01adbcb9d88ae4d6a20493e002d24549148e849c7c571b0527f65983d1f4b62fbe6e357e9710f5421ac94db907716dd196c388b6e60e8a8ad7", "SWAP XOR 0x4d 0x0802 0xe690e7de6477618f0e03372e6de1a25fde08d3b30c65b4b38e7e17f0302deca9c1e8cd960e7d26288f92534c3cb59979925525f7707b2845e31cf4f8c2b463b2077dd2db01cc09d583ea644e19bce1f0a231aa3c37a52046588049b64fa59cc4b2420d1cd0513bf374105b2930c6e4ceaad54b2212a3314049170481192c084738c49e81ba070b47cc1b2c2b07faf0c956f7787a047ab0fa86bf32cdd4bdaa6abb378aab4fa4d11a21f3639362560007634ca5921d44f7613e04fac5d84ecc6b90a6caca0f915ba9751b809e8a654db00efad44e5cdd4d2c9f5407358aa67b80edc096cc148181cbfb099bdaecad9aecd61d78a7e1a376a3397b3f7fe4913f4dd2b487706a54ca1d589c9011c5c61cc782cba51e4f551af5be85a5651506a14bce1f0c73256bf6dbf4f6c19b6c72b380e5c5f1a7acd9b22d0e36f5f548f54c178472236a7a6be080f61cdb2b0113d34dd42c5dac6f10bc19f0c5e6565490aca26cfcd9b9392b0b4351565c1d5cd22ef62070896b26533753d24be822e665c85c300f4d2025d82768660775d4ae8cfca22752e12c8a33227ce1e047ec3587ef73673fdf20e71ac38dd8a7fd501f3f2c22920babf122bb812ae0ee91104562ea81d9bf0381cc8d17509d83195c4db429ac544b96f25fd3398a39893c6e238983c1a5dcffbc638a82fec076133a0568a4324e64fd6ae408a55aa1bee310f14c225753b4c3c546961262 EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", + "P2SH,STRICTENC", "OK", "XOR, even more complex operands, random swapped, 520 bytes each. 0x4d is OP_PUSHDATA2, 0x0802 is 520" ], ["XOR, invalid"], -["", "XOR 0 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "XOR, empty stack"], -["0", "XOR 0 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "XOR, invalid parameter count"], -["0x00", "XOR 0x00 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "XOR, invalid parameter count"], -["0x01 0x00", "XOR 0x01 0x00 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "XOR, invalid parameter count"], -["0x03 0xab 0xcd 0xef", "XOR 0x03 0xab 0xcd 0xef EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "XOR, invalid parameter count"], +["", "XOR 0 EQUAL", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "XOR, empty stack"], +["0", "XOR 0 EQUAL", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "XOR, invalid parameter count"], +["0x00", "XOR 0x00 EQUAL", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "XOR, invalid parameter count"], +["0x01 0x00", "XOR 0x01 0x00 EQUAL", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "XOR, invalid parameter count"], +["0x03 0xab 0xcd 0xef", "XOR 0x03 0xab 0xcd 0xef EQUAL", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "XOR, invalid parameter count"], [ "0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5", "XOR 0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5 EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "XOR, invalid parameter count" + "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "XOR, invalid parameter count" ], -["0 1", "XOR 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OPERAND_SIZE", "XOR, different operand size"], -["0 0x01 0x00", "XOR 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OPERAND_SIZE", "XOR, different operand size"], -["0x01 0x00 0", "XOR 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OPERAND_SIZE", "XOR, different operand size"], -["0x01 0x00 0x03 0xab 0xcd 0xef", "XOR 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OPERAND_SIZE", "XOR, different operand size"], -["0x03 0xab 0xcd 0xef 0x01 0x00", "XOR 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OPERAND_SIZE", "XOR, different operand size"], +["0 1", "XOR 1 EQUAL", "P2SH,STRICTENC", "OPERAND_SIZE", "XOR, different operand size"], +["0 0x01 0x00", "XOR 1 EQUAL", "P2SH,STRICTENC", "OPERAND_SIZE", "XOR, different operand size"], +["0x01 0x00 0", "XOR 1 EQUAL", "P2SH,STRICTENC", "OPERAND_SIZE", "XOR, different operand size"], +["0x01 0x00 0x03 0xab 0xcd 0xef", "XOR 1 EQUAL", "P2SH,STRICTENC", "OPERAND_SIZE", "XOR, different operand size"], +["0x03 0xab 0xcd 0xef 0x01 0x00", "XOR 1 EQUAL", "P2SH,STRICTENC", "OPERAND_SIZE", "XOR, different operand size"], [ "0x01 0x00 0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5", "XOR 0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5 EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", "OPERAND_SIZE", "XOR, different operand size" + "P2SH,STRICTENC", "OPERAND_SIZE", "XOR, different operand size" ], [ "0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5 0x01 0x00", "XOR 0x4d 0x0802 0x340e7e1783661a81458d2626bcbd56e7f21cecf6798c3e580f86cf53be668fa7bef630128d0100377f5b645063406a44f57e02c7ab45cf6a9861e8b8c49e11e830710773a24ddda66cf42a22a0acdcf4ccfb4de355de4446323693b4d9d13b06096a64c31858c49f1b6aa3ab5937bd36973526876358086e5e46cf1533fc464597614bb8ecdd1b696e8a27f9cd4b5ca48418d52350c663becad3d09139166a6ed6091852056aa7f764a3f0ba75c59cf7bb7068654fdbd03614fb1af66eea8dc8a5ad61c6044cc3b9688ca4e404aeeecae752a7ba1691269bae31cd6f4e7e476040f0bce220afc14f26549337fcbf50d3f23070fc671582d33927a24fce10ed1173c448e965a15ef20c813b80e19f53314973c80a6ea4e1e1e2aceb0ba54bc547f6f1151031f0cb6fedd3507db28687ab625c4c4bb00a2019b98c1af5e629a08a5588a0f5efe6506d367b75e514c8fbc65be799376256db8f4043548d6819c2f5c037edee0eab0b772927ac0770faa9692851f565587accc9fe3ca00d6e873836b71a416c9a13fa8613e6c9ec9f5015c3744c29670aa77e7f3cabe944616e6450471e172364299c9cef5b28e30ea52a2f2dc66cd3aa0348150c9280862fc2bd5e8261a188dd5eeaef19f98466f7bb44adf9f72f2ad537ef283d1adc6cf1cccad52b5863c0349187d9362f90ebf1de8b8c205183fdf4fde74068f35a178021f3c1903c7523481c98b5 EQUAL", - "P2SH,STRICTENC,DIP0020_OPCODES", "OPERAND_SIZE", "XOR, different operand size" + "P2SH,STRICTENC", "OPERAND_SIZE", "XOR, different operand size" ], ["DIV"], -["2 2 0 IF DIV ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC", "DISABLED_OPCODE", "DIV disabled"], -["2 2 0 IF DIV ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "DIV enabled"], -["1 1", "DIV 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["1 -1", "DIV -1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["-1 1", "DIV -1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["-1 -1", "DIV 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["2 2", "DIV 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["2 -2", "DIV -1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["-2 2", "DIV -1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["-2 -2", "DIV 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["0 1", "DIV 0 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["1 0", "DIV", "P2SH,STRICTENC,DIP0020_OPCODES", "DIV_BY_ZERO", "DIV, divide by zero"], -["3 2", "DIV 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "Round towards zero"], -["3 -2", "DIV -1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "Round towards zero"], -["1 1", "DIV DEPTH 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "Stack depth correct"], -["1", "DIV", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "Not enough operands"], -["0", "DIV", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "Not enough operands"], -["1 1", "DIV 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["2147483648 1", "DIV", "P2SH,STRICTENC,DIP0020_OPCODES", "UNKNOWN_ERROR", "We cannot do math on 5-byte integers"], -["1 2147483648", "DIV", "P2SH,STRICTENC,DIP0020_OPCODES", "UNKNOWN_ERROR", "We cannot do math on 5-byte integers"], +["2 2 0 IF DIV ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC", "OK", "DIV enabled"], +["1 1", "DIV 1 EQUAL", "P2SH,STRICTENC", "OK"], +["1 -1", "DIV -1 EQUAL", "P2SH,STRICTENC", "OK"], +["-1 1", "DIV -1 EQUAL", "P2SH,STRICTENC", "OK"], +["-1 -1", "DIV 1 EQUAL", "P2SH,STRICTENC", "OK"], +["2 2", "DIV 1 EQUAL", "P2SH,STRICTENC", "OK"], +["2 -2", "DIV -1 EQUAL", "P2SH,STRICTENC", "OK"], +["-2 2", "DIV -1 EQUAL", "P2SH,STRICTENC", "OK"], +["-2 -2", "DIV 1 EQUAL", "P2SH,STRICTENC", "OK"], +["0 1", "DIV 0 EQUAL", "P2SH,STRICTENC", "OK"], +["1 0", "DIV", "P2SH,STRICTENC", "DIV_BY_ZERO", "DIV, divide by zero"], +["3 2", "DIV 1 EQUAL", "P2SH,STRICTENC", "OK", "Round towards zero"], +["3 -2", "DIV -1 EQUAL", "P2SH,STRICTENC", "OK", "Round towards zero"], +["1 1", "DIV DEPTH 1 EQUAL", "P2SH,STRICTENC", "OK", "Stack depth correct"], +["1", "DIV", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "Not enough operands"], +["0", "DIV", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "Not enough operands"], +["1 1", "DIV 1 EQUAL", "P2SH,STRICTENC", "OK"], +["2147483648 1", "DIV", "P2SH,STRICTENC", "UNKNOWN_ERROR", "We cannot do math on 5-byte integers"], +["1 2147483648", "DIV", "P2SH,STRICTENC", "UNKNOWN_ERROR", "We cannot do math on 5-byte integers"], ["MOD"], -["2 2 0 IF MOD ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC", "DISABLED_OPCODE", "MOD disabled"], -["2 2 0 IF MOD ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "MOD enabled"], -["1 1", "MOD 0 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["7 -3", "MOD 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["-7 3", "MOD -1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["10 3", "MOD 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["0 1", "MOD 0 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], -["1 0", "MOD", "P2SH,STRICTENC,DIP0020_OPCODES", "MOD_BY_ZERO", "MOD, modulo by zero"], -["1 1", "MOD DEPTH 1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK", "Stack depth correct"], -["1", "MOD", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "Not enough operands"], -["0", "MOD", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION", "Not enough operands"], -["2147483648 1", "MOD", "P2SH,STRICTENC,DIP0020_OPCODES", "UNKNOWN_ERROR", "We cannot do math on 5-byte integers"], -["1 2147483648", "MOD", "P2SH,STRICTENC,DIP0020_OPCODES", "UNKNOWN_ERROR", "We cannot do math on 5-byte integers"], +["2 2 0 IF MOD ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC", "OK", "MOD enabled"], +["1 1", "MOD 0 EQUAL", "P2SH,STRICTENC", "OK"], +["7 -3", "MOD 1 EQUAL", "P2SH,STRICTENC", "OK"], +["-7 3", "MOD -1 EQUAL", "P2SH,STRICTENC", "OK"], +["10 3", "MOD 1 EQUAL", "P2SH,STRICTENC", "OK"], +["0 1", "MOD 0 EQUAL", "P2SH,STRICTENC", "OK"], +["1 0", "MOD", "P2SH,STRICTENC", "MOD_BY_ZERO", "MOD, modulo by zero"], +["1 1", "MOD DEPTH 1 EQUAL", "P2SH,STRICTENC", "OK", "Stack depth correct"], +["1", "MOD", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "Not enough operands"], +["0", "MOD", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "Not enough operands"], +["2147483648 1", "MOD", "P2SH,STRICTENC", "UNKNOWN_ERROR", "We cannot do math on 5-byte integers"], +["1 2147483648", "MOD", "P2SH,STRICTENC", "UNKNOWN_ERROR", "We cannot do math on 5-byte integers"], ["", "EQUAL NOT", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "EQUAL must error when there are no stack items"], ["0", "EQUAL NOT", "P2SH,STRICTENC", "INVALID_STACK_OPERATION", "EQUAL must error when there are not 2 stack items"], @@ -1176,74 +1168,72 @@ ["11 1 ADD 12 SUB", "11 EQUAL", "P2SH,STRICTENC", "EVAL_FALSE"], ["CHECKDATASIG"], -["", "CHECKDATASIG", "P2SH,STRICTENC,NULLFAIL", "DISABLED_OPCODE"], -["", "CHECKDATASIG", "P2SH,STRICTENC,NULLFAIL,DIP0020_OPCODES", "INVALID_STACK_OPERATION"], -["0", "CHECKDATASIG", "P2SH,STRICTENC,NULLFAIL,DIP0020_OPCODES", "INVALID_STACK_OPERATION"], -["0 0", "CHECKDATASIG", "P2SH,STRICTENC,NULLFAIL,DIP0020_OPCODES", "INVALID_STACK_OPERATION"], +["", "CHECKDATASIG", "P2SH,STRICTENC,NULLFAIL", "INVALID_STACK_OPERATION"], +["0", "CHECKDATASIG", "P2SH,STRICTENC,NULLFAIL", "INVALID_STACK_OPERATION"], +["0 0", "CHECKDATASIG", "P2SH,STRICTENC,NULLFAIL", "INVALID_STACK_OPERATION"], [ "0 0", "0 CHECKDATASIG", - "P2SH,STRICTENC,NULLFAIL,DIP0020_OPCODES", + "P2SH,STRICTENC,NULLFAIL", "PUBKEYTYPE" ], [ "0 0", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIG", - "P2SH,STRICTENC,NULLFAIL,DIP0020_OPCODES", + "P2SH,STRICTENC,NULLFAIL", "EVAL_FALSE" ], [ "0x09 0x300602010102010101 0", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIG", - "P2SH,STRICTENC,DIP0020_OPCODES", + "P2SH,STRICTENC", "EVAL_FALSE", "Check that NULLFAIL trigger only when specified" ], [ "0x09 0x300602010102010101 0", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIG", - "P2SH,STRICTENC,NULLFAIL,DIP0020_OPCODES", + "P2SH,STRICTENC,NULLFAIL", "NULLFAIL" ], [ "0x09 0x300702010102020001 0", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIG", - "P2SH,STRICTENC,NULLFAIL,DIP0020_OPCODES", + "P2SH,STRICTENC,NULLFAIL", "SIG_DER", "Non canonical DER encoding" ], ["CHECKDATASIGVERIFY"], -["", "CHECKDATASIGVERIFY", "P2SH,STRICTENC,NULLFAIL", "DISABLED_OPCODE"], -["", "CHECKDATASIGVERIFY 1", "P2SH,STRICTENC,DIP0020_OPCODES", "INVALID_STACK_OPERATION"], -["0", "CHECKDATASIGVERIFY 1", "P2SH,STRICTENC,NULLFAIL,DIP0020_OPCODES", "INVALID_STACK_OPERATION"], -["0 0", "CHECKDATASIGVERIFY 1", "P2SH,STRICTENC,NULLFAIL,DIP0020_OPCODES", "INVALID_STACK_OPERATION"], +["", "CHECKDATASIGVERIFY 1", "P2SH,STRICTENC", "INVALID_STACK_OPERATION"], +["0", "CHECKDATASIGVERIFY 1", "P2SH,STRICTENC,NULLFAIL", "INVALID_STACK_OPERATION"], +["0 0", "CHECKDATASIGVERIFY 1", "P2SH,STRICTENC,NULLFAIL", "INVALID_STACK_OPERATION"], [ "0 0", "0 CHECKDATASIGVERIFY 1", - "P2SH,STRICTENC,NULLFAIL,DIP0020_OPCODES", + "P2SH,STRICTENC,NULLFAIL", "PUBKEYTYPE" ], [ "0 0", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIGVERIFY 1", - "P2SH,STRICTENC,NULLFAIL,DIP0020_OPCODES", + "P2SH,STRICTENC,NULLFAIL", "CHECKDATASIGVERIFY" ], [ "0x09 0x300602010102010101 0", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIGVERIFY 1", - "P2SH,STRICTENC,DIP0020_OPCODES", + "P2SH,STRICTENC", "CHECKDATASIGVERIFY", "Check that NULLFAIL trigger only when specified" ], [ "0x09 0x300602010102010101 0", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIGVERIFY 1", - "P2SH,STRICTENC,NULLFAIL,DIP0020_OPCODES", + "P2SH,STRICTENC,NULLFAIL", "NULLFAIL" ], [ "0x09 0x300702010102020001 0", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIGVERIFY 1", - "P2SH,STRICTENC,NULLFAIL,DIP0020_OPCODES", + "P2SH,STRICTENC,NULLFAIL", "SIG_DER", "Non canonical DER encoding" ], @@ -1254,12 +1244,10 @@ ["'abcdef' NOT", "0 EQUAL", "P2SH,STRICTENC", "UNKNOWN_ERROR", "NOT is an arithmetic operand"], ["2 DUP MUL", "4 EQUAL", "P2SH,STRICTENC", "DISABLED_OPCODE", "disabled"], -["2 DUP DIV", "1 EQUAL", "P2SH,STRICTENC", "DISABLED_OPCODE", "disabled"], -["2 DUP DIV", "1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], +["2 DUP DIV", "1 EQUAL", "P2SH,STRICTENC", "OK"], ["2 2MUL", "4 EQUAL", "P2SH,STRICTENC", "DISABLED_OPCODE", "disabled"], ["2 2DIV", "1 EQUAL", "P2SH,STRICTENC", "DISABLED_OPCODE", "disabled"], -["7 3 MOD", "1 EQUAL", "P2SH,STRICTENC", "DISABLED_OPCODE", "disabled"], -["7 3 MOD", "1 EQUAL", "P2SH,STRICTENC,DIP0020_OPCODES", "OK"], +["7 3 MOD", "1 EQUAL", "P2SH,STRICTENC", "OK"], ["2 2 LSHIFT", "8 EQUAL", "P2SH,STRICTENC", "DISABLED_OPCODE", "disabled"], ["2 1 RSHIFT", "1 EQUAL", "P2SH,STRICTENC", "DISABLED_OPCODE", "disabled"], @@ -2254,168 +2242,168 @@ [ "0x47 0x30440220256c12175e809381f97637933ed6ab97737d263eaaebca6add21bced67fd12a402205ce29ecc1369d6fc1b51977ed38faaf41119e3be1d7edfafd7cfaf0b6061bd0701 0", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0xba", - "DIP0020_OPCODES,NULLFAIL,STRICTENC", + "NULLFAIL,STRICTENC", "OK", "Standard CHECKDATASIG" ], [ "0x47 0x30440220256c12175e809381f97637933ed6ab97737d263eaaebca6add21bced67fd12a402205ce29ecc1369d6fc1b51977ed38faaf41119e3be1d7edfafd7cfaf0b6061bd0701 1", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0xba NOT", - "DIP0020_OPCODES,NULLFAIL,STRICTENC", + "NULLFAIL,STRICTENC", "NULLFAIL", "CHECKDATASIG with NULLFAIL flags" ], [ "0x47 0x30440220256c12175e809381f97637933ed6ab97737d263eaaebca6add21bced67fd12a402205ce29ecc1369d6fc1b51977ed38faaf41119e3be1d7edfafd7cfaf0b6061bd0701 1", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0xba NOT", - "DIP0020_OPCODES,STRICTENC", + "STRICTENC", "OK", "CHECKDATASIG without NULLFAIL flags" ], [ "0 0", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0xba NOT", - "DIP0020_OPCODES,NULLFAIL,STRICTENC", + "NULLFAIL,STRICTENC", "OK", "CHECKDATASIG empty signature" ], [ "0x48 0x30450220256c12175e809381f97637933ed6ab97737d263eaaebca6add21bced67fd12a4022100a31d6133ec962903e4ae68812c70550aa994f92891c9c08be802af816fd4843a01 0", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0xba", - "DIP0020_OPCODES,NULLFAIL,STRICTENC", + "NULLFAIL,STRICTENC", "OK", "CHECKDATASIG with High S but no Low S" ], [ "0x48 0x30450220256c12175e809381f97637933ed6ab97737d263eaaebca6add21bced67fd12a4022100a31d6133ec962903e4ae68812c70550aa994f92891c9c08be802af816fd4843a01 0", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0xba", - "DIP0020_OPCODES,LOW_S,NULLFAIL,STRICTENC", + "LOW_S,NULLFAIL,STRICTENC", "SIG_HIGH_S", "CHECKDATASIG with High S" ], [ "0x47 0x3044022090c2b41ac64aea5808a991dac049bf6a98816f8610b4028cd371e68a23b0cd47022073310757507b168533cc141e3243416cf2c55e3b4525655abf5c97c8724a68aa01 0", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0xba", - "DIP0020_OPCODES,NULLFAIL", + "NULLFAIL", "OK", "CHECKDATASIG with too little R padding but no DERSIG" ], [ "0x47 0x3044022090c2b41ac64aea5808a991dac049bf6a98816f8610b4028cd371e68a23b0cd47022073310757507b168533cc141e3243416cf2c55e3b4525655abf5c97c8724a68aa01 0", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0xba", - "DIP0020_OPCODES,NULLFAIL,STRICTENC", + "NULLFAIL,STRICTENC", "SIG_DER", "CHECKDATASIG with too little R padding" ], [ "0x47 0x3044022077c8d336572f6f466055b5f70f433851f8f535f6c4fc71133a6cfd71079d03b702200ed9f5eb8aa5b266abac35d416c3207e7a538bf5f37649727d7a9823b106957701 0", "0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 0xba", - "DIP0020_OPCODES,NULLFAIL", + "NULLFAIL", "OK", "CHECKDATASIG with hybrid pubkey but no STRICTENC" ], [ "0x47 0x3044022077c8d336572f6f466055b5f70f433851f8f535f6c4fc71133a6cfd71079d03b702200ed9f5eb8aa5b266abac35d416c3207e7a538bf5f37649727d7a9823b106957701 0", "0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 0xba", - "DIP0020_OPCODES,NULLFAIL,STRICTENC", + "NULLFAIL,STRICTENC", "PUBKEYTYPE", "CHECKDATASIG with hybrid pubkey" ], [ "0x47 0x3044022077c8d336572f6e466055b5f70f433851f8f535f6c4fc71133a6cfd71079d03b702200ed9f5eb8aa5b266abac35d416c3207e7a538bf5f37649727d7a9823b106957701 0", "0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 0xba NOT", - "DIP0020_OPCODES", + "", "OK", "CHECKDATASIG with invalid hybrid pubkey but no STRICTENC" ], [ "0x47 0x3044022077c8d336572f6e466055b5f70f433851f8f535f6c4fc71133a6cfd71079d03b702200ed9f5eb8aa5b266abac35d416c3207e7a538bf5f37649727d7a9823b106957701 0", "0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 0xba", - "DIP0020_OPCODES,NULLFAIL,STRICTENC", + "NULLFAIL,STRICTENC", "PUBKEYTYPE", "CHECKDATASIG with invalid hybrid pubkey" ], [ "0x47 0x30440220256c12175e809381f97637933ed6ab97737d263eaaebca6add21bced67fd12a402205ce29ecc1369d6fc1b51977ed38faaf41119e3be1d7edfafd7cfaf0b6061bd0701 0", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0xbb 1", - "DIP0020_OPCODES,NULLFAIL,STRICTENC", + "NULLFAIL,STRICTENC", "OK", "Standard CHECKDATASIGVERIFY" ], [ "0x47 0x30440220256c12175e809381f97637933ed6ab97737d263eaaebca6add21bced67fd12a402205ce29ecc1369d6fc1b51977ed38faaf41119e3be1d7edfafd7cfaf0b6061bd0701 1", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0xbb 1", - "DIP0020_OPCODES,NULLFAIL,STRICTENC", + "NULLFAIL,STRICTENC", "NULLFAIL", "CHECKDATASIGVERIFY with NULLFAIL flags" ], [ "0x47 0x30440220256c12175e809381f97637933ed6ab97737d263eaaebca6add21bced67fd12a402205ce29ecc1369d6fc1b51977ed38faaf41119e3be1d7edfafd7cfaf0b6061bd0701 1", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0xbb 1", - "DIP0020_OPCODES,STRICTENC", + "STRICTENC", "CHECKDATASIGVERIFY", "CHECKDATASIGVERIFY without NULLFAIL flags" ], [ "0 0", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0xbb 1", - "DIP0020_OPCODES,NULLFAIL,STRICTENC", + "NULLFAIL,STRICTENC", "CHECKDATASIGVERIFY", "CHECKDATASIGVERIFY empty signature" ], [ "0x48 0x30450220256c12175e809381f97637933ed6ab97737d263eaaebca6add21bced67fd12a4022100a31d6133ec962903e4ae68812c70550aa994f92891c9c08be802af816fd4843a01 0", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0xbb 1", - "DIP0020_OPCODES,NULLFAIL,STRICTENC", + "NULLFAIL,STRICTENC", "OK", "CHECKDATASIG with High S but no Low S" ], [ "0x48 0x30450220256c12175e809381f97637933ed6ab97737d263eaaebca6add21bced67fd12a4022100a31d6133ec962903e4ae68812c70550aa994f92891c9c08be802af816fd4843a01 0", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0xbb 1", - "DIP0020_OPCODES,LOW_S,NULLFAIL,STRICTENC", + "LOW_S,NULLFAIL,STRICTENC", "SIG_HIGH_S", "CHECKDATASIG with High S" ], [ "0x47 0x3044022090c2b41ac64aea5808a991dac049bf6a98816f8610b4028cd371e68a23b0cd47022073310757507b168533cc141e3243416cf2c55e3b4525655abf5c97c8724a68aa01 0", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0xbb 1", - "DIP0020_OPCODES,NULLFAIL", + "NULLFAIL", "OK", "CHECKDATASIGVERIFY with too little R padding but no DERSIG" ], [ "0x47 0x3044022090c2b41ac64aea5808a991dac049bf6a98816f8610b4028cd371e68a23b0cd47022073310757507b168533cc141e3243416cf2c55e3b4525655abf5c97c8724a68aa01 0", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 0xbb 1", - "DIP0020_OPCODES,NULLFAIL,STRICTENC", + "NULLFAIL,STRICTENC", "SIG_DER", "CHECKDATASIGVERIFY with too little R padding" ], [ "0x47 0x3044022077c8d336572f6f466055b5f70f433851f8f535f6c4fc71133a6cfd71079d03b702200ed9f5eb8aa5b266abac35d416c3207e7a538bf5f37649727d7a9823b106957701 0", "0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 0xbb 1", - "DIP0020_OPCODES,NULLFAIL", + "NULLFAIL", "OK", "CHECKDATASIGVERIFY with hybrid pubkey but no STRICTENC" ], [ "0x47 0x3044022077c8d336572f6f466055b5f70f433851f8f535f6c4fc71133a6cfd71079d03b702200ed9f5eb8aa5b266abac35d416c3207e7a538bf5f37649727d7a9823b106957701 0", "0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 0xbb 1", - "DIP0020_OPCODES,NULLFAIL,STRICTENC", + "NULLFAIL,STRICTENC", "PUBKEYTYPE", "CHECKDATASIGVERIFY with hybrid pubkey" ], [ "0x47 0x3044022077c8d336572f6e466055b5f70f433851f8f535f6c4fc71133a6cfd71079d03b702200ed9f5eb8aa5b266abac35d416c3207e7a538bf5f37649727d7a9823b106957701 0", "0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 0xbb 1", - "DIP0020_OPCODES", + "", "CHECKDATASIGVERIFY", "CHECKDATASIGVERIFY with invalid hybrid pubkey but no STRICTENC" ], [ "0x47 0x3044022077c8d336572f6e466055b5f70f433851f8f535f6c4fc71133a6cfd71079d03b702200ed9f5eb8aa5b266abac35d416c3207e7a538bf5f37649727d7a9823b106957701 0", "0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 0xbb 1", - "DIP0020_OPCODES,NULLFAIL,STRICTENC", + "NULLFAIL,STRICTENC", "PUBKEYTYPE", "CHECKDATASIGVERIFY with invalid hybrid pubkey" ], diff --git a/src/test/dip0020opcodes_tests.cpp b/src/test/dip0020opcodes_tests.cpp index ee0a6d9f0c..f9960798f6 100644 --- a/src/test/dip0020opcodes_tests.cpp +++ b/src/test/dip0020opcodes_tests.cpp @@ -28,7 +28,7 @@ static void CheckTestResultForAllFlags(const stacktype& original_stack, for (uint32_t flags : flagset) { ScriptError err = ScriptError::SCRIPT_ERR_OK; stacktype stack{original_stack}; - bool r = EvalScript(stack, script, flags | SCRIPT_ENABLE_DIP0020_OPCODES, sigchecker, SigVersion::BASE, &err); + bool r = EvalScript(stack, script, flags, sigchecker, SigVersion::BASE, &err); BOOST_CHECK(r); BOOST_CHECK(stack == expected); } @@ -40,7 +40,7 @@ static void CheckError(uint32_t flags, const stacktype& original_stack, BaseSignatureChecker sigchecker; ScriptError err = ScriptError::SCRIPT_ERR_OK; stacktype stack{original_stack}; - bool r = EvalScript(stack, script, flags | SCRIPT_ENABLE_DIP0020_OPCODES, sigchecker, SigVersion::BASE, &err); + bool r = EvalScript(stack, script, flags, sigchecker, SigVersion::BASE, &err); BOOST_CHECK(!r); BOOST_CHECK(err == expected_error); } @@ -784,10 +784,4 @@ BOOST_AUTO_TEST_CASE(div_and_mod_opcode_tests) {0xbb, 0xf0, 0x5d, 0x03}); } -BOOST_AUTO_TEST_CASE(check_dip0020_inclusion_in_standard_flags) -{ - BOOST_CHECK(STANDARD_SCRIPT_VERIFY_FLAGS & - SCRIPT_ENABLE_DIP0020_OPCODES); -} - BOOST_AUTO_TEST_SUITE_END() diff --git a/src/test/script_tests.cpp b/src/test/script_tests.cpp index eb598b6ea4..d86124fb6c 100644 --- a/src/test/script_tests.cpp +++ b/src/test/script_tests.cpp @@ -122,7 +122,6 @@ BOOST_FIXTURE_TEST_SUITE(script_tests, BasicTestingSetup) void DoTest(const CScript& scriptPubKey, const CScript& scriptSig, uint32_t flags, const std::string& message, int scriptError) { bool expect = (scriptError == SCRIPT_ERR_OK); - bool fEnableDIP0020Opcodes = (SCRIPT_ENABLE_DIP0020_OPCODES & flags) != 0; ScriptError err; const CTransaction txCredit{BuildCreditingTransaction(scriptPubKey)}; CMutableTransaction tx = BuildSpendingTransaction(scriptSig, txCredit); @@ -136,8 +135,6 @@ void DoTest(const CScript& scriptPubKey, const CScript& scriptSig, uint32_t flag uint32_t combined_flags{expect ? (flags & ~extra_flags) : (flags | extra_flags)}; // Weed out some invalid flag combinations. if (combined_flags & SCRIPT_VERIFY_CLEANSTACK && ~combined_flags & SCRIPT_VERIFY_P2SH) continue; - // Make sure DIP0020 opcodes flag stays unchanged. - combined_flags = fEnableDIP0020Opcodes ? (combined_flags | SCRIPT_ENABLE_DIP0020_OPCODES) : (combined_flags & ~SCRIPT_ENABLE_DIP0020_OPCODES); BOOST_CHECK_MESSAGE(VerifyScript(scriptSig, scriptPubKey, combined_flags, MutableTransactionSignatureChecker(&tx, 0, txCredit.vout[0].nValue), &err) == expect, message + strprintf(" (with flags %x)", combined_flags)); } @@ -680,8 +677,7 @@ BOOST_AUTO_TEST_CASE(script_build) // Test OP_CHECKDATASIG const uint32_t checkdatasigflags = SCRIPT_VERIFY_STRICTENC | - SCRIPT_VERIFY_NULLFAIL | - SCRIPT_ENABLE_DIP0020_OPCODES; + SCRIPT_VERIFY_NULLFAIL; tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIG, @@ -749,7 +745,7 @@ BOOST_AUTO_TEST_CASE(script_build) TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIG << OP_NOT, "CHECKDATASIG with invalid hybrid pubkey but no STRICTENC", - SCRIPT_ENABLE_DIP0020_OPCODES) + 0) .PushDataSig(keys.key0, {}) .DamagePush(10) .Num(0)); @@ -839,7 +835,7 @@ BOOST_AUTO_TEST_CASE(script_build) CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIGVERIFY << OP_TRUE, "CHECKDATASIGVERIFY with invalid hybrid pubkey but no STRICTENC", - SCRIPT_ENABLE_DIP0020_OPCODES) + 0) .PushDataSig(keys.key0, {}) .DamagePush(10) .Num(0) diff --git a/src/test/transaction_tests.cpp b/src/test/transaction_tests.cpp index cb04e9c881..a83689cfd8 100644 --- a/src/test/transaction_tests.cpp +++ b/src/test/transaction_tests.cpp @@ -47,7 +47,6 @@ static std::map mapFlagNames = { {std::string("NULLFAIL"), (unsigned int) SCRIPT_VERIFY_NULLFAIL}, {std::string("CHECKLOCKTIMEVERIFY"), (unsigned int) SCRIPT_VERIFY_CHECKLOCKTIMEVERIFY}, {std::string("CHECKSEQUENCEVERIFY"), (unsigned int) SCRIPT_VERIFY_CHECKSEQUENCEVERIFY}, - {std::string("DIP0020_OPCODES"), (unsigned int) SCRIPT_ENABLE_DIP0020_OPCODES}, {std::string("CONST_SCRIPTCODE"), (unsigned int)SCRIPT_VERIFY_CONST_SCRIPTCODE}, }; diff --git a/src/validation.cpp b/src/validation.cpp index 38a030ace1..6521a3e611 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -1489,9 +1489,8 @@ bool CheckInputScripts(const CTransaction& tx, TxValidationState &state, const C check.swap(pvChecks->back()); } else if (!check()) { const bool hasNonMandatoryFlags = (flags & STANDARD_NOT_MANDATORY_VERIFY_FLAGS) != 0; - const bool hasDIP0020Opcodes = (flags & SCRIPT_ENABLE_DIP0020_OPCODES) != 0; - if (hasNonMandatoryFlags || !hasDIP0020Opcodes) { + if (hasNonMandatoryFlags) { // Check whether the failure was caused by a // non-mandatory script verification check, such as // non-standard DER encodings or non-null dummy @@ -1501,7 +1500,7 @@ bool CheckInputScripts(const CTransaction& tx, TxValidationState &state, const C // non-upgraded nodes by banning CONSENSUS-failing // data providers. CScriptCheck check2(coin.out, tx, i, - (flags & ~STANDARD_NOT_MANDATORY_VERIFY_FLAGS) | SCRIPT_ENABLE_DIP0020_OPCODES, cacheSigStore, &txdata); + (flags & ~STANDARD_NOT_MANDATORY_VERIFY_FLAGS), cacheSigStore, &txdata); if (check2()) return state.Invalid(TxValidationResult::TX_NOT_STANDARD, strprintf("non-mandatory-script-verify-flag (%s)", ScriptErrorString(check.GetScriptError()))); } @@ -1815,11 +1814,6 @@ static unsigned int GetBlockScriptFlags(const CBlockIndex* pindex, const Consens flags |= SCRIPT_VERIFY_NULLDUMMY; } - // Enforce DIP0020 - if (DeploymentActiveAt(*pindex, consensusparams, Consensus::DEPLOYMENT_DIP0020)) { - flags |= SCRIPT_ENABLE_DIP0020_OPCODES; - } - return flags; } diff --git a/test/functional/feature_coinstatsindex.py b/test/functional/feature_coinstatsindex.py index b038ddcc65..e01af97c1f 100755 --- a/test/functional/feature_coinstatsindex.py +++ b/test/functional/feature_coinstatsindex.py @@ -253,11 +253,13 @@ def _test_coin_stats_index(self): self.log.info("Test that -reindex-chainstate is disallowed with coinstatsindex") + self.stop_node(1) self.nodes[1].assert_start_raises_init_error( expected_msg='Error: -reindex-chainstate option is not compatible with -coinstatsindex. ' 'Please temporarily disable coinstatsindex while using -reindex-chainstate, or replace -reindex-chainstate with -reindex to fully rebuild all indexes.', extra_args=['-coinstatsindex', '-reindex-chainstate'], ) + self.restart_node(1, extra_args=["-coinstatsindex"]) def _test_use_index_option(self): self.log.info("Test use_index option for nodes running the index") diff --git a/test/functional/feature_dip0020_activation.py b/test/functional/feature_dip0020_activation.py deleted file mode 100755 index f15f0042ae..0000000000 --- a/test/functional/feature_dip0020_activation.py +++ /dev/null @@ -1,114 +0,0 @@ -#!/usr/bin/env python3 -# Copyright (c) 2015-2024 The Dash Core developers -# Distributed under the MIT software license, see the accompanying -# file COPYING or http://www.opensource.org/licenses/mit-license.php. -from test_framework.blocktools import create_block, create_coinbase -from test_framework.messages import COIN, COutPoint, CTransaction, CTxIn, CTxOut -from test_framework.p2p import P2PDataStore -from test_framework.script import CScript, OP_CAT, OP_DROP, OP_TRUE -from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import assert_raises_rpc_error, softfork_active, satoshi_round - -''' -feature_dip0020_activation.py - -This test checks activation of DIP0020 opcodes -''' - -DISABLED_OPCODE_ERROR = "non-mandatory-script-verify-flag (Attempted to use a disabled opcode)" - - -DIP0020_HEIGHT = 300 -class DIP0020ActivationTest(BitcoinTestFramework): - def set_test_params(self): - self.num_nodes = 1 - self.extra_args = [[ - f'-testactivationheight=dip0020@{DIP0020_HEIGHT}', - "-acceptnonstdtxn=1", - ]] - - def skip_test_if_missing_module(self): - self.skip_if_no_wallet() - - def create_test_block(self, txs, tip_hash, tip_height, tip_time): - block = create_block(int(tip_hash, 16), create_coinbase(tip_height + 1), tip_time + 1) - block.nVersion = 4 - block.vtx.extend(txs) - block.hashMerkleRoot = block.calc_merkle_root() - block.rehash() - block.solve() - return block - - def run_test(self): - node = self.nodes[0] - relayfee = satoshi_round(node.getnetworkinfo()["relayfee"]) - - # We should have some coins already - utxos = node.listunspent() - assert len(utxos) > 0 - - # Lock some coins using disabled opcodes - utxo = utxos[len(utxos) - 1] - value = int(satoshi_round(utxo["amount"] - relayfee) * COIN) - tx = CTransaction() - tx.vin.append(CTxIn(COutPoint(int(utxo["txid"], 16), utxo["vout"]))) - tx.vout.append(CTxOut(value, CScript([b'1', b'2', OP_CAT]))) - tx_signed_hex = node.signrawtransactionwithwallet(tx.serialize().hex())["hex"] - txid = node.sendrawtransaction(tx_signed_hex) - - # This tx should be completely valid, should be included in mempool and mined in the next block - assert txid in set(node.getrawmempool()) - self.generate(node, 1, sync_fun=self.no_op) - assert txid not in set(node.getrawmempool()) - - # Create spending tx - value = int(value - relayfee * COIN) - tx0 = CTransaction() - tx0.vin.append(CTxIn(COutPoint(int(txid, 16), 0))) - tx0.vout.append(CTxOut(value, CScript([OP_TRUE, OP_DROP] * 15 + [OP_TRUE]))) - tx0.rehash() - tx0_hex = tx0.serialize().hex() - tx0id = node.decoderawtransaction(tx0_hex)["txid"] - - # flush state to disk before potential crashes below - self.nodes[0].gettxoutsetinfo() - - self.log.info("Transactions spending coins with new opcodes aren't accepted before DIP0020 activation") - assert not softfork_active(node, 'dip0020') - assert_raises_rpc_error(-26, DISABLED_OPCODE_ERROR, node.sendrawtransaction, tx0_hex) - helper_peer = node.add_p2p_connection(P2PDataStore()) - helper_peer.send_txs_and_test([tx0], node, success=False, reject_reason=DISABLED_OPCODE_ERROR) - tip = node.getblock(node.getbestblockhash(), 1) - test_block = self.create_test_block([tx0], tip["hash"], tip["height"], tip["time"]) - helper_peer.send_blocks_and_test([test_block], node, success=False, reject_reason='block-validation-failed', expect_disconnect=True) - - self.log.info("Generate enough blocks to activate DIP0020 opcodes") - self.generate(node, 97, sync_fun=self.no_op) - assert not softfork_active(node, 'dip0020') - self.generate(node, 1, sync_fun=self.no_op) - assert softfork_active(node, 'dip0020') - - # flush state to disk before potential crashes below - self.nodes[0].gettxoutsetinfo() - - # Still need 1 more block for mempool to accept txes spending new opcodes - self.log.info("Transactions spending coins with new opcodes aren't accepted at DIP0020 activation block") - assert_raises_rpc_error(-26, DISABLED_OPCODE_ERROR, node.sendrawtransaction, tx0_hex) - helper_peer = node.add_p2p_connection(P2PDataStore()) - helper_peer.send_txs_and_test([tx0], node, success=False, reject_reason=DISABLED_OPCODE_ERROR) - # A block containing new opcodes is accepted however - tip = node.getblock(node.getbestblockhash(), 1) - test_block = self.create_test_block([tx0], tip["hash"], tip["height"], tip["time"]) - helper_peer.send_blocks_and_test([test_block], node, success=True) - # txes spending new opcodes still won't be accepted into mempool if we roll back to the previous tip - node.invalidateblock(node.getbestblockhash()) - assert tx0id not in set(node.getrawmempool()) - self.generate(node, 1, sync_fun=self.no_op) - - self.log.info("Transactions spending coins with new opcodes are accepted one block after DIP0020 activation block") - node.sendrawtransaction(tx0_hex) - assert tx0id in set(node.getrawmempool()) - - -if __name__ == '__main__': - DIP0020ActivationTest().main() diff --git a/test/functional/rpc_net.py b/test/functional/rpc_net.py index 7b6104321d..45da5636d4 100755 --- a/test/functional/rpc_net.py +++ b/test/functional/rpc_net.py @@ -311,7 +311,7 @@ def test_addpeeraddress(self): by first testing adding a tried table entry before testing adding a new table one. """ self.log.info("Test addpeeraddress") - self.restart_node(1, self.extra_args[1] + ["-checkaddrman=1"]) + self.restart_node(1, ["-checkaddrman=1"]) node = self.nodes[1] self.log.debug("Test that addpeerinfo is a hidden RPC") diff --git a/test/functional/test_framework/test_framework.py b/test/functional/test_framework/test_framework.py index 41e21d7ee0..3ca3cc3e34 100755 --- a/test/functional/test_framework/test_framework.py +++ b/test/functional/test_framework/test_framework.py @@ -43,6 +43,7 @@ from .util import ( PortSeed, MAX_NODES, + append_config, assert_equal, check_json_precision, copy_datadir, @@ -634,6 +635,7 @@ def dynamically_initialize_datadir(self, node_p2p_port, node_rpc_port): f.write("upnp=0\n") f.write("natpmp=0\n") f.write("shrinkdebugfile=0\n") + f.write("dip3params=2:2\n") os.makedirs(os.path.join(new_data_dir, 'stderr'), exist_ok=True) os.makedirs(os.path.join(new_data_dir, 'stdout'), exist_ok=True) @@ -1150,6 +1152,15 @@ def run_test(self): """Tests must override this method to define test logic""" raise NotImplementedError + def add_nodes(self, num_nodes: int, extra_args=None, *, rpchost=None, binary=None, binary_cli=None, versions=None): + old_num_nodes = len(self.nodes) + super().add_nodes(num_nodes, extra_args, rpchost=rpchost, binary=binary, binary_cli=binary_cli, versions=versions) + for i in range(old_num_nodes, old_num_nodes + num_nodes): + append_config(self.nodes[i].datadir, ["dip3params=2:2"]) + if old_num_nodes == 0: + # controller node is the only node that has an extra option allowing it to submit sporks + append_config(self.nodes[0].datadir, ["sporkkey=cP4EKFyJsHT39LDqgdcB43Y3YXjNyjb5Fuas1GQSeAtjnZWmZEQK"]) + def connect_nodes(self, a, b): for mn2 in self.mninfo: if mn2.node is not None: @@ -1170,9 +1181,6 @@ def set_dash_test_params(self, num_nodes, masterodes_count, extra_args=None, evo extra_args = [[]] * num_nodes assert_equal(len(extra_args), num_nodes) self.extra_args = [copy.deepcopy(a) for a in extra_args] - self.extra_args[0] += ["-sporkkey=cP4EKFyJsHT39LDqgdcB43Y3YXjNyjb5Fuas1GQSeAtjnZWmZEQK"] - for i in range(0, num_nodes): - self.extra_args[i].append("-dip3params=2:2") # LLMQ default test params (no need to pass -llmqtestparams) self.llmq_size = 3 diff --git a/test/functional/test_framework/test_node.py b/test/functional/test_framework/test_node.py index e69781d346..7cac7862c9 100755 --- a/test/functional/test_framework/test_node.py +++ b/test/functional/test_framework/test_node.py @@ -564,6 +564,7 @@ def assert_start_raises_init_error(self, extra_args=None, expected_msg=None, mat Will throw if dashd starts without an error. Will throw if an expected_msg is provided and it does not match dashd's stdout.""" + assert not self.running with tempfile.NamedTemporaryFile(dir=self.stderr_dir, delete=False) as log_stderr, \ tempfile.NamedTemporaryFile(dir=self.stdout_dir, delete=False) as log_stdout: try: diff --git a/test/functional/test_runner.py b/test/functional/test_runner.py index 5e0cffdf2d..bfbfe54ba4 100755 --- a/test/functional/test_runner.py +++ b/test/functional/test_runner.py @@ -325,7 +325,6 @@ 'rpc_deprecated_platform_filter.py', 'rpc_external_queue.py', 'rpc_wipewallettxes.py', - 'feature_dip0020_activation.py', 'feature_uacomment.py', 'feature_init.py', 'wallet_coinbase_category.py --legacy-wallet', diff --git a/test/functional/wallet_mnemonicbits.py b/test/functional/wallet_mnemonicbits.py index ccfcde2b09..eb0c25f84a 100755 --- a/test/functional/wallet_mnemonicbits.py +++ b/test/functional/wallet_mnemonicbits.py @@ -13,7 +13,6 @@ class WalletMnemonicbitsTest(BitcoinTestFramework): def set_test_params(self): self.setup_clean_chain = True self.num_nodes = 1 - self.extra_args = [['-usehd=1']] def skip_test_if_missing_module(self): self.skip_if_no_wallet() @@ -23,18 +22,18 @@ def run_test(self): self.log.info("Invalid -mnemonicbits should rise an error") self.stop_node(0) - self.nodes[0].assert_start_raises_init_error(self.extra_args[0] + ['-mnemonicbits=123'], "Error: Invalid '-mnemonicbits'. Allowed values: 128, 160, 192, 224, 256.") + self.nodes[0].assert_start_raises_init_error(['-mnemonicbits=123'], "Error: Invalid '-mnemonicbits'. Allowed values: 128, 160, 192, 224, 256.") self.start_node(0) assert_equal(len(self.nodes[0].dumphdinfo()["mnemonic"].split()), 12) # 12 words by default self.log.info("Can have multiple wallets with different mnemonic length loaded at the same time") - self.restart_node(0, extra_args=self.extra_args[0] + ["-mnemonicbits=160"]) + self.restart_node(0, extra_args=["-mnemonicbits=160"]) self.nodes[0].createwallet("wallet_160") - self.restart_node(0, extra_args=self.extra_args[0] + ["-mnemonicbits=192"]) + self.restart_node(0, extra_args=["-mnemonicbits=192"]) self.nodes[0].createwallet("wallet_192") - self.restart_node(0, extra_args=self.extra_args[0] + ["-mnemonicbits=224"]) + self.restart_node(0, extra_args=["-mnemonicbits=224"]) self.nodes[0].createwallet("wallet_224") - self.restart_node(0, extra_args=self.extra_args[0] + ["-mnemonicbits=256"]) + self.restart_node(0, extra_args=["-mnemonicbits=256"]) self.nodes[0].loadwallet("wallet_160") self.nodes[0].loadwallet("wallet_192") self.nodes[0].loadwallet("wallet_224")