diff --git a/src/policy/policy.h b/src/policy/policy.h --- a/src/policy/policy.h +++ b/src/policy/policy.h @@ -89,12 +89,12 @@ LOCKTIME_VERIFY_SEQUENCE | LOCKTIME_MEDIAN_TIME_PAST; /** - * Used as the flags parameters to check for sigops as if OP_CHECKDATASIG is - * enabled. Can be removed after OP_CHECKDATASIG is activated as the flag is - * made standard. + * Used as the flags parameters to check for sigops as if the Magnetic upgrade + * is enabled. Can be removed after Magnetic upgrade is activated as the flag + * will be made standard. */ static const uint32_t STANDARD_CHECKDATASIG_VERIFY_FLAGS = - STANDARD_SCRIPT_VERIFY_FLAGS | SCRIPT_ENABLE_CHECKDATASIG; + STANDARD_SCRIPT_VERIFY_FLAGS | SCRIPT_ENABLE_MAGNETIC_OPCODES; bool IsStandard(const CScript &scriptPubKey, txnouttype &whichType); diff --git a/src/script/interpreter.cpp b/src/script/interpreter.cpp --- a/src/script/interpreter.cpp +++ b/src/script/interpreter.cpp @@ -914,7 +914,7 @@ case OP_CHECKDATASIG: case OP_CHECKDATASIGVERIFY: { // Make sure this remains an error before activation. - if ((flags & SCRIPT_ENABLE_CHECKDATASIG) == 0) { + if ((flags & SCRIPT_ENABLE_MAGNETIC_OPCODES) == 0) { return set_error(serror, SCRIPT_ERR_BAD_OPCODE); } diff --git a/src/script/script.cpp b/src/script/script.cpp --- a/src/script/script.cpp +++ b/src/script/script.cpp @@ -361,7 +361,7 @@ case OP_CHECKDATASIG: case OP_CHECKDATASIGVERIFY: - if (flags & SCRIPT_ENABLE_CHECKDATASIG) { + if (flags & SCRIPT_ENABLE_MAGNETIC_OPCODES) { n++; } break; diff --git a/src/script/script_flags.h b/src/script/script_flags.h --- a/src/script/script_flags.h +++ b/src/script/script_flags.h @@ -95,9 +95,9 @@ // SCRIPT_ENABLE_REPLAY_PROTECTION = (1U << 17), - // Is OP_CHECKDATASIG and variant are enabled. + // Are the Magnetic upgrade opcodes enabled? // - SCRIPT_ENABLE_CHECKDATASIG = (1U << 18), + SCRIPT_ENABLE_MAGNETIC_OPCODES = (1U << 18), }; #endif // BITCOIN_SCRIPT_SCRIPTFLAGS_H diff --git a/src/test/checkdatasig_tests.cpp b/src/test/checkdatasig_tests.cpp --- a/src/test/checkdatasig_tests.cpp +++ b/src/test/checkdatasig_tests.cpp @@ -69,8 +69,8 @@ CheckError(flags, original_stack, script, SCRIPT_ERR_BAD_OPCODE); // The script execute as expected if the opcodes are activated. - CheckPass(flags | SCRIPT_ENABLE_CHECKDATASIG, original_stack, script, - expected); + CheckPass(flags | SCRIPT_ENABLE_MAGNETIC_OPCODES, original_stack, + script, expected); } } @@ -82,8 +82,8 @@ CheckError(flags, original_stack, script, SCRIPT_ERR_BAD_OPCODE); // The script generates the proper error if the opcodes are activated. - CheckError(flags | SCRIPT_ENABLE_CHECKDATASIG, original_stack, script, - expected); + CheckError(flags | SCRIPT_ENABLE_MAGNETIC_OPCODES, original_stack, + script, expected); } } @@ -170,7 +170,7 @@ // rewrite in the future to randomly pick a set of flags to evaluate. for (uint32_t flags = 0; flags < (1U << 17); flags++) { // Make sure we activate the opcodes. - flags |= SCRIPT_ENABLE_CHECKDATASIG; + flags |= SCRIPT_ENABLE_MAGNETIC_OPCODES; if (flags & SCRIPT_VERIFY_STRICTENC) { // When strict encoding is enforced, hybrid key are invalid. diff --git a/src/test/data/script_tests.json b/src/test/data/script_tests.json --- a/src/test/data/script_tests.json +++ b/src/test/data/script_tests.json @@ -241,9 +241,9 @@ "Discouraged NOPs are allowed if not executed"], ["0", "IF CHECKDATASIG ELSE 1 ENDIF", "P2SH,STRICTENC", "OK"], -["0", "IF CHECKDATASIG ELSE 1 ENDIF", "P2SH,STRICTENC,CHECKDATASIG", "OK"], +["0", "IF CHECKDATASIG ELSE 1 ENDIF", "P2SH,STRICTENC,MAGNETIC_OPCODES", "OK"], ["0", "IF CHECKDATASIGVERIFY ELSE 1 ENDIF", "P2SH,STRICTENC", "OK"], -["0", "IF CHECKDATASIGVERIFY ELSE 1 ENDIF", "P2SH,STRICTENC,CHECKDATASIG", "OK"], +["0", "IF CHECKDATASIGVERIFY ELSE 1 ENDIF", "P2SH,STRICTENC,MAGNETIC_OPCODES", "OK"], ["0", "IF 0xbc ELSE 1 ENDIF", "P2SH,STRICTENC", "OK", "opcodes >= FIRST_UNDEFINED_OP_VALUE invalid if executed"], ["0", "IF 0xbd ELSE 1 ENDIF", "P2SH,STRICTENC", "OK"], ["0", "IF 0xbe ELSE 1 ENDIF", "P2SH,STRICTENC", "OK"], @@ -929,11 +929,17 @@ ["Disabled opcodes"], ["'abc'", "IF INVERT ELSE 1 ENDIF", "P2SH,STRICTENC", "DISABLED_OPCODE", "INVERT disabled"], +["'abc'", "IF INVERT ELSE 1 ENDIF", "P2SH,STRICTENC,MAGNETIC_OPCODES", "DISABLED_OPCODE", "INVERT disabled"], ["2 0 IF 2MUL ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC", "DISABLED_OPCODE", "2MUL disabled"], +["2 0 IF 2MUL ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC,MAGNETIC_OPCODES", "DISABLED_OPCODE", "2MUL disabled"], ["2 0 IF 2DIV ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC", "DISABLED_OPCODE", "2DIV disabled"], +["2 0 IF 2DIV ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC,MAGNETIC_OPCODES", "DISABLED_OPCODE", "2DIV disabled"], ["2 2 0 IF MUL ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC", "DISABLED_OPCODE", "MUL disabled"], +["2 2 0 IF MUL ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC,MAGNETIC_OPCODES", "DISABLED_OPCODE", "MUL disabled"], ["2 2 0 IF LSHIFT ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC", "DISABLED_OPCODE", "LSHIFT disabled"], +["2 2 0 IF LSHIFT ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC,MAGNETIC_OPCODES", "DISABLED_OPCODE", "LSHIFT disabled"], ["2 2 0 IF RSHIFT ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC", "DISABLED_OPCODE", "RSHIFT disabled"], +["2 2 0 IF RSHIFT ELSE 1 ENDIF", "NOP", "P2SH,STRICTENC,MAGNETIC_OPCODES", "DISABLED_OPCODE", "RSHIFT disabled"], ["Bitwise opcodes"], ["AND"], @@ -1037,110 +1043,110 @@ ["11 1 ADD 12 SUB", "11 EQUAL", "P2SH,STRICTENC", "EVAL_FALSE"], ["CHECKDATASIG"], -["", "CHECKDATASIG", "P2SH,STRICTENC,NULLFAIL,CHECKDATASIG", "INVALID_STACK_OPERATION"], -["0", "CHECKDATASIG", "P2SH,STRICTENC,NULLFAIL,CHECKDATASIG", "INVALID_STACK_OPERATION"], -["0 0", "CHECKDATASIG", "P2SH,STRICTENC,NULLFAIL,CHECKDATASIG", "INVALID_STACK_OPERATION"], -["0 0 0", "CHECKDATASIG", "P2SH,STRICTENC,NULLFAIL,CHECKDATASIG", "OPERAND_SIZE"], +["", "CHECKDATASIG", "P2SH,STRICTENC,NULLFAIL,MAGNETIC_OPCODES", "INVALID_STACK_OPERATION"], +["0", "CHECKDATASIG", "P2SH,STRICTENC,NULLFAIL,MAGNETIC_OPCODES", "INVALID_STACK_OPERATION"], +["0 0", "CHECKDATASIG", "P2SH,STRICTENC,NULLFAIL,MAGNETIC_OPCODES", "INVALID_STACK_OPERATION"], +["0 0 0", "CHECKDATASIG", "P2SH,STRICTENC,NULLFAIL,MAGNETIC_OPCODES", "OPERAND_SIZE"], [ "0 0x21 0x000000000000000000000000000000000000000000000000000000000000000001", "0 CHECKDATASIG", - "P2SH,STRICTENC,NULLFAIL,CHECKDATASIG", + "P2SH,STRICTENC,NULLFAIL,MAGNETIC_OPCODES", "OPERAND_SIZE" ], [ "0 0x1f 0x00000000000000000000000000000000000000000000000000000000000001", "0 CHECKDATASIG", - "P2SH,STRICTENC,NULLFAIL,CHECKDATASIG", + "P2SH,STRICTENC,NULLFAIL,MAGNETIC_OPCODES", "OPERAND_SIZE" ], [ "0 0x20 0x0000000000000000000000000000000000000000000000000000000000000001", "0 CHECKDATASIG", - "P2SH,STRICTENC,NULLFAIL,CHECKDATASIG", + "P2SH,STRICTENC,NULLFAIL,MAGNETIC_OPCODES", "PUBKEYTYPE" ], [ "0 0x20 0x0000000000000000000000000000000000000000000000000000000000000001", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIG", - "P2SH,STRICTENC,NULLFAIL,CHECKDATASIG", + "P2SH,STRICTENC,NULLFAIL,MAGNETIC_OPCODES", "EVAL_FALSE" ], [ "0x08 0x3006020101020101 0x20 0x0000000000000000000000000000000000000000000000000000000000000001", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIG", - "P2SH,STRICTENC,CHECKDATASIG", + "P2SH,STRICTENC,MAGNETIC_OPCODES", "EVAL_FALSE", "Check that NULLFAIL trigger only when specified" ], [ "0x08 0x3006020101020101 0x20 0x0000000000000000000000000000000000000000000000000000000000000001", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIG", - "P2SH,STRICTENC,NULLFAIL,CHECKDATASIG", + "P2SH,STRICTENC,NULLFAIL,MAGNETIC_OPCODES", "NULLFAIL" ], [ "0x09 0x300602010102010101 0x20 0x0000000000000000000000000000000000000000000000000000000000000001", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIG", - "P2SH,STRICTENC,NULLFAIL,CHECKDATASIG", + "P2SH,STRICTENC,NULLFAIL,MAGNETIC_OPCODES", "SIG_DER", "Ensure that sighashtype is ignored" ], [ "0x09 0x300702010102020001 0x20 0x0000000000000000000000000000000000000000000000000000000000000001", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIG", - "P2SH,STRICTENC,NULLFAIL,CHECKDATASIG", + "P2SH,STRICTENC,NULLFAIL,MAGNETIC_OPCODES", "SIG_DER", "Non cannonical DER encoding" ], ["CHECKDATASIGVERIFY"], -["", "CHECKDATASIGVERIFY 1", "P2SH,STRICTENC,CHECKDATASIG", "INVALID_STACK_OPERATION"], -["0", "CHECKDATASIGVERIFY 1", "P2SH,STRICTENC,NULLFAIL,CHECKDATASIG", "INVALID_STACK_OPERATION"], -["0 0", "CHECKDATASIGVERIFY 1", "P2SH,STRICTENC,NULLFAIL,CHECKDATASIG", "INVALID_STACK_OPERATION"], -["0 0 0", "CHECKDATASIGVERIFY 1", "P2SH,STRICTENC,NULLFAIL,CHECKDATASIG", "OPERAND_SIZE"], +["", "CHECKDATASIGVERIFY 1", "P2SH,STRICTENC,MAGNETIC_OPCODES", "INVALID_STACK_OPERATION"], +["0", "CHECKDATASIGVERIFY 1", "P2SH,STRICTENC,NULLFAIL,MAGNETIC_OPCODES", "INVALID_STACK_OPERATION"], +["0 0", "CHECKDATASIGVERIFY 1", "P2SH,STRICTENC,NULLFAIL,MAGNETIC_OPCODES", "INVALID_STACK_OPERATION"], +["0 0 0", "CHECKDATASIGVERIFY 1", "P2SH,STRICTENC,NULLFAIL,MAGNETIC_OPCODES", "OPERAND_SIZE"], [ "0 0x21 0x000000000000000000000000000000000000000000000000000000000000000001", "0 CHECKDATASIGVERIFY 1", - "P2SH,STRICTENC,NULLFAIL,CHECKDATASIG", + "P2SH,STRICTENC,NULLFAIL,MAGNETIC_OPCODES", "OPERAND_SIZE" ], [ "0 0x1f 0x00000000000000000000000000000000000000000000000000000000000001", "0 CHECKDATASIGVERIFY 1", - "P2SH,STRICTENC,NULLFAIL,CHECKDATASIG", + "P2SH,STRICTENC,NULLFAIL,MAGNETIC_OPCODES", "OPERAND_SIZE" ], [ "0 0x20 0x0000000000000000000000000000000000000000000000000000000000000001", "0 CHECKDATASIGVERIFY 1", - "P2SH,STRICTENC,NULLFAIL,CHECKDATASIG", + "P2SH,STRICTENC,NULLFAIL,MAGNETIC_OPCODES", "PUBKEYTYPE" ], [ "0 0x20 0x0000000000000000000000000000000000000000000000000000000000000001", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIGVERIFY 1", - "P2SH,STRICTENC,NULLFAIL,CHECKDATASIG", + "P2SH,STRICTENC,NULLFAIL,MAGNETIC_OPCODES", "CHECKDATASIGVERIFY" ], [ "0x08 0x3006020101020101 0x20 0x0000000000000000000000000000000000000000000000000000000000000001", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIGVERIFY 1", - "P2SH,STRICTENC,CHECKDATASIG", + "P2SH,STRICTENC,MAGNETIC_OPCODES", "CHECKDATASIGVERIFY", "Check that NULLFAIL trigger only when specified" ], [ "0x08 0x3006020101020101 0x20 0x0000000000000000000000000000000000000000000000000000000000000001", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIGVERIFY 1", - "P2SH,STRICTENC,NULLFAIL,CHECKDATASIG", + "P2SH,STRICTENC,NULLFAIL,MAGNETIC_OPCODES", "NULLFAIL" ], [ "0x09 0x300602010102010101 0x20 0x0000000000000000000000000000000000000000000000000000000000000001", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIGVERIFY 1", - "P2SH,STRICTENC,NULLFAIL,CHECKDATASIG", + "P2SH,STRICTENC,NULLFAIL,MAGNETIC_OPCODES", "SIG_DER", "Ensure that sighashtype is ignored" ], [ "0x09 0x300702010102020001 0x20 0x0000000000000000000000000000000000000000000000000000000000000001", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIGVERIFY 1", - "P2SH,STRICTENC,NULLFAIL,CHECKDATASIG", + "P2SH,STRICTENC,NULLFAIL,MAGNETIC_OPCODES", "SIG_DER", "Non cannonical DER encoding" ], @@ -1150,11 +1156,25 @@ ["2147483647 DUP ADD", "4294967294 NUMEQUAL", "P2SH,STRICTENC", "UNKNOWN_ERROR", "NUMEQUAL must be in numeric range"], ["'abcdef' NOT", "0 EQUAL", "P2SH,STRICTENC", "UNKNOWN_ERROR", "NOT is an arithmetic operand"], +["MUL"], ["2 DUP MUL", "4 EQUAL", "P2SH,STRICTENC", "DISABLED_OPCODE", "disabled"], +["2 DUP MUL", "4 EQUAL", "P2SH,STRICTENC,MAGNETIC_OPCODES", "DISABLED_OPCODE", "disabled"], + +["2MUL"], ["2 2MUL", "4 EQUAL", "P2SH,STRICTENC", "DISABLED_OPCODE", "disabled"], +["2 2MUL", "4 EQUAL", "P2SH,STRICTENC,MAGNETIC_OPCODES", "DISABLED_OPCODE", "disabled"], + +["2DIV"], ["2 2DIV", "1 EQUAL", "P2SH,STRICTENC", "DISABLED_OPCODE", "disabled"], +["2 2DIV", "1 EQUAL", "P2SH,STRICTENC,MAGNETIC_OPCODES", "DISABLED_OPCODE", "disabled"], + +["LSHIFT"], ["2 2 LSHIFT", "8 EQUAL", "P2SH,STRICTENC", "DISABLED_OPCODE", "disabled"], +["2 2 LSHIFT", "8 EQUAL", "P2SH,STRICTENC,MAGNETIC_OPCODES", "DISABLED_OPCODE", "disabled"], + +["RSHIFT"], ["2 1 RSHIFT", "1 EQUAL", "P2SH,STRICTENC", "DISABLED_OPCODE", "disabled"], +["2 1 RSHIFT", "1 EQUAL", "P2SH,STRICTENC,MAGNETIC_OPCODES", "DISABLED_OPCODE", "disabled"], ["1", "NOP1 CHECKLOCKTIMEVERIFY CHECKSEQUENCEVERIFY NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10 2 EQUAL", "P2SH,STRICTENC", "EVAL_FALSE"], ["'NOP_1_to_10' NOP1 CHECKLOCKTIMEVERIFY CHECKSEQUENCEVERIFY NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10","'NOP_1_to_11' EQUAL", "P2SH,STRICTENC", "EVAL_FALSE"], @@ -2229,168 +2249,168 @@ [ "0x46 0x30440220052a549456efe256a8c190650648e7ebdd46161f330830733fc7c674aeb7d3da0220519999b4f25b37de557a9c909cb5b155d1f0b11293b0890236696bfa0bd310e1 0x20 0x0100000000000000000000000000000000000000000000000000000000000000", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIG", - "CHECKDATASIG,NULLFAIL,STRICTENC", + "MAGNETIC_OPCODES,NULLFAIL,STRICTENC", "OK", "Standard CHECKDATASIG" ], [ "0x46 0x30440220052a549456efe256a8c190650648e7ebdd46161f330830733fc7c674aeb7d3da0220519999b4f25b37de557a9c909cb5b155d1f0b11293b0890236696bfa0bd310e1 0x20 0x0200000000000000000000000000000000000000000000000000000000000000", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIG NOT", - "CHECKDATASIG,NULLFAIL,STRICTENC", + "MAGNETIC_OPCODES,NULLFAIL,STRICTENC", "NULLFAIL", "CHECKDATASIG with NULLFAIL flags" ], [ "0x46 0x30440220052a549456efe256a8c190650648e7ebdd46161f330830733fc7c674aeb7d3da0220519999b4f25b37de557a9c909cb5b155d1f0b11293b0890236696bfa0bd310e1 0x20 0x0200000000000000000000000000000000000000000000000000000000000000", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIG NOT", - "CHECKDATASIG,STRICTENC", + "MAGNETIC_OPCODES,STRICTENC", "OK", "CHECKDATASIG without NULLFAIL flags" ], [ "0 0x20 0x0100000000000000000000000000000000000000000000000000000000000000", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIG NOT", - "CHECKDATASIG,NULLFAIL,STRICTENC", + "MAGNETIC_OPCODES,NULLFAIL,STRICTENC", "OK", "CHECKDATASIG empty signature" ], [ "0x47 0x30450220052a549456efe256a8c190650648e7ebdd46161f330830733fc7c674aeb7d3da022100ae66664b0da4c821aa85636f634a4ea8e8be2bd41b9817398968f292c4633060 0x20 0x0100000000000000000000000000000000000000000000000000000000000000", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIG", - "CHECKDATASIG,NULLFAIL,STRICTENC", + "MAGNETIC_OPCODES,NULLFAIL,STRICTENC", "OK", "CHECKDATASIG with High S but no Low S" ], [ "0x47 0x30450220052a549456efe256a8c190650648e7ebdd46161f330830733fc7c674aeb7d3da022100ae66664b0da4c821aa85636f634a4ea8e8be2bd41b9817398968f292c4633060 0x20 0x0100000000000000000000000000000000000000000000000000000000000000", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIG", - "CHECKDATASIG,LOW_S,NULLFAIL,STRICTENC", + "LOW_S,MAGNETIC_OPCODES,NULLFAIL,STRICTENC", "SIG_HIGH_S", "CHECKDATASIG with High S" ], [ "0x46 0x30440220e54f8b4dc9b45e1e76207fd0062f3f8b09381e6131d9be3781d2a791fe889c96022038ff0a5f76c1b972149700568ea98b2932e163b5debc78814fc7f1b89f7bcf02 0x20 0x0100000000000000000000000000000000000000000000000000000000000000", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIG", - "CHECKDATASIG,NULLFAIL", + "MAGNETIC_OPCODES,NULLFAIL", "OK", "CHECKDATASIG with too little R padding but no DERSIG" ], [ "0x46 0x30440220e54f8b4dc9b45e1e76207fd0062f3f8b09381e6131d9be3781d2a791fe889c96022038ff0a5f76c1b972149700568ea98b2932e163b5debc78814fc7f1b89f7bcf02 0x20 0x0100000000000000000000000000000000000000000000000000000000000000", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIG", - "CHECKDATASIG,NULLFAIL,STRICTENC", + "MAGNETIC_OPCODES,NULLFAIL,STRICTENC", "SIG_DER", "CHECKDATASIG with too little R padding" ], [ "0x46 0x304402201f9ab6bce51855179000754f239bcdc91682e556275514ec72a6b429b8972da2022076ba6228144dbaaeffb5e58ead6281a56bd4e3ae05f0890d1bbb5dad8f61b1ac 0x20 0x0100000000000000000000000000000000000000000000000000000000000000", "0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKDATASIG", - "CHECKDATASIG,NULLFAIL", + "MAGNETIC_OPCODES,NULLFAIL", "OK", "CHECKDATASIG with hybrid pubkey but no STRICTENC" ], [ "0x46 0x304402201f9ab6bce51855179000754f239bcdc91682e556275514ec72a6b429b8972da2022076ba6228144dbaaeffb5e58ead6281a56bd4e3ae05f0890d1bbb5dad8f61b1ac 0x20 0x0100000000000000000000000000000000000000000000000000000000000000", "0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKDATASIG", - "CHECKDATASIG,NULLFAIL,STRICTENC", + "MAGNETIC_OPCODES,NULLFAIL,STRICTENC", "PUBKEYTYPE", "CHECKDATASIG with hybrid pubkey" ], [ "0x46 0x304402201f9ab6bce51854179000754f239bcdc91682e556275514ec72a6b429b8972da2022076ba6228144dbaaeffb5e58ead6281a56bd4e3ae05f0890d1bbb5dad8f61b1ac 0x20 0x0100000000000000000000000000000000000000000000000000000000000000", "0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKDATASIG NOT", - "CHECKDATASIG", + "MAGNETIC_OPCODES", "OK", "CHECKDATASIG with invalid hybrid pubkey but no STRICTENC" ], [ "0x46 0x304402201f9ab6bce51854179000754f239bcdc91682e556275514ec72a6b429b8972da2022076ba6228144dbaaeffb5e58ead6281a56bd4e3ae05f0890d1bbb5dad8f61b1ac 0x20 0x0100000000000000000000000000000000000000000000000000000000000000", "0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKDATASIG", - "CHECKDATASIG,NULLFAIL,STRICTENC", + "MAGNETIC_OPCODES,NULLFAIL,STRICTENC", "PUBKEYTYPE", "CHECKDATASIG with invalid hybrid pubkey" ], [ "0x46 0x30440220052a549456efe256a8c190650648e7ebdd46161f330830733fc7c674aeb7d3da0220519999b4f25b37de557a9c909cb5b155d1f0b11293b0890236696bfa0bd310e1 0x20 0x0100000000000000000000000000000000000000000000000000000000000000", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIGVERIFY 1", - "CHECKDATASIG,NULLFAIL,STRICTENC", + "MAGNETIC_OPCODES,NULLFAIL,STRICTENC", "OK", "Standard CHECKDATASIGVERIFY" ], [ "0x46 0x30440220052a549456efe256a8c190650648e7ebdd46161f330830733fc7c674aeb7d3da0220519999b4f25b37de557a9c909cb5b155d1f0b11293b0890236696bfa0bd310e1 0x20 0x0200000000000000000000000000000000000000000000000000000000000000", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIGVERIFY 1", - "CHECKDATASIG,NULLFAIL,STRICTENC", + "MAGNETIC_OPCODES,NULLFAIL,STRICTENC", "NULLFAIL", "CHECKDATASIGVERIFY with NULLFAIL flags" ], [ "0x46 0x30440220052a549456efe256a8c190650648e7ebdd46161f330830733fc7c674aeb7d3da0220519999b4f25b37de557a9c909cb5b155d1f0b11293b0890236696bfa0bd310e1 0x20 0x0200000000000000000000000000000000000000000000000000000000000000", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIGVERIFY 1", - "CHECKDATASIG,STRICTENC", + "MAGNETIC_OPCODES,STRICTENC", "CHECKDATASIGVERIFY", "CHECKDATASIGVERIFY without NULLFAIL flags" ], [ "0 0x20 0x0100000000000000000000000000000000000000000000000000000000000000", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIGVERIFY 1", - "CHECKDATASIG,NULLFAIL,STRICTENC", + "MAGNETIC_OPCODES,NULLFAIL,STRICTENC", "CHECKDATASIGVERIFY", "CHECKDATASIGVERIFY empty signature" ], [ "0x47 0x30450220052a549456efe256a8c190650648e7ebdd46161f330830733fc7c674aeb7d3da022100ae66664b0da4c821aa85636f634a4ea8e8be2bd41b9817398968f292c4633060 0x20 0x0100000000000000000000000000000000000000000000000000000000000000", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIGVERIFY 1", - "CHECKDATASIG,NULLFAIL,STRICTENC", + "MAGNETIC_OPCODES,NULLFAIL,STRICTENC", "OK", "CHECKDATASIG with High S but no Low S" ], [ "0x47 0x30450220052a549456efe256a8c190650648e7ebdd46161f330830733fc7c674aeb7d3da022100ae66664b0da4c821aa85636f634a4ea8e8be2bd41b9817398968f292c4633060 0x20 0x0100000000000000000000000000000000000000000000000000000000000000", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIGVERIFY 1", - "CHECKDATASIG,LOW_S,NULLFAIL,STRICTENC", + "LOW_S,MAGNETIC_OPCODES,NULLFAIL,STRICTENC", "SIG_HIGH_S", "CHECKDATASIG with High S" ], [ "0x46 0x30440220e54f8b4dc9b45e1e76207fd0062f3f8b09381e6131d9be3781d2a791fe889c96022038ff0a5f76c1b972149700568ea98b2932e163b5debc78814fc7f1b89f7bcf02 0x20 0x0100000000000000000000000000000000000000000000000000000000000000", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIGVERIFY 1", - "CHECKDATASIG,NULLFAIL", + "MAGNETIC_OPCODES,NULLFAIL", "OK", "CHECKDATASIGVERIFY with too little R padding but no DERSIG" ], [ "0x46 0x30440220e54f8b4dc9b45e1e76207fd0062f3f8b09381e6131d9be3781d2a791fe889c96022038ff0a5f76c1b972149700568ea98b2932e163b5debc78814fc7f1b89f7bcf02 0x20 0x0100000000000000000000000000000000000000000000000000000000000000", "0x21 0x038282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508 CHECKDATASIGVERIFY 1", - "CHECKDATASIG,NULLFAIL,STRICTENC", + "MAGNETIC_OPCODES,NULLFAIL,STRICTENC", "SIG_DER", "CHECKDATASIGVERIFY with too little R padding" ], [ "0x46 0x304402201f9ab6bce51855179000754f239bcdc91682e556275514ec72a6b429b8972da2022076ba6228144dbaaeffb5e58ead6281a56bd4e3ae05f0890d1bbb5dad8f61b1ac 0x20 0x0100000000000000000000000000000000000000000000000000000000000000", "0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKDATASIGVERIFY 1", - "CHECKDATASIG,NULLFAIL", + "MAGNETIC_OPCODES,NULLFAIL", "OK", "CHECKDATASIGVERIFY with hybrid pubkey but no STRICTENC" ], [ "0x46 0x304402201f9ab6bce51855179000754f239bcdc91682e556275514ec72a6b429b8972da2022076ba6228144dbaaeffb5e58ead6281a56bd4e3ae05f0890d1bbb5dad8f61b1ac 0x20 0x0100000000000000000000000000000000000000000000000000000000000000", "0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKDATASIGVERIFY 1", - "CHECKDATASIG,NULLFAIL,STRICTENC", + "MAGNETIC_OPCODES,NULLFAIL,STRICTENC", "PUBKEYTYPE", "CHECKDATASIGVERIFY with hybrid pubkey" ], [ "0x46 0x304402201f9ab6bce51854179000754f239bcdc91682e556275514ec72a6b429b8972da2022076ba6228144dbaaeffb5e58ead6281a56bd4e3ae05f0890d1bbb5dad8f61b1ac 0x20 0x0100000000000000000000000000000000000000000000000000000000000000", "0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKDATASIGVERIFY 1", - "CHECKDATASIG", + "MAGNETIC_OPCODES", "CHECKDATASIGVERIFY", "CHECKDATASIGVERIFY with invalid hybrid pubkey but no STRICTENC" ], [ "0x46 0x304402201f9ab6bce51854179000754f239bcdc91682e556275514ec72a6b429b8972da2022076ba6228144dbaaeffb5e58ead6281a56bd4e3ae05f0890d1bbb5dad8f61b1ac 0x20 0x0100000000000000000000000000000000000000000000000000000000000000", "0x41 0x0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 CHECKDATASIGVERIFY 1", - "CHECKDATASIG,NULLFAIL,STRICTENC", + "MAGNETIC_OPCODES,NULLFAIL,STRICTENC", "PUBKEYTYPE", "CHECKDATASIGVERIFY with invalid hybrid pubkey" ], diff --git a/src/test/script_tests.cpp b/src/test/script_tests.cpp --- a/src/test/script_tests.cpp +++ b/src/test/script_tests.cpp @@ -1133,7 +1133,7 @@ "0000000000000000000000000000000000000000000000000000000000000002")); const uint32_t checkdatasigflags = SCRIPT_VERIFY_STRICTENC | SCRIPT_VERIFY_NULLFAIL | - SCRIPT_ENABLE_CHECKDATASIG; + SCRIPT_ENABLE_MAGNETIC_OPCODES; tests.push_back( TestBuilder(CScript() << ToByteVector(keys.pubkey1C) << OP_CHECKDATASIG, @@ -1201,7 +1201,7 @@ TestBuilder(CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIG << OP_NOT, "CHECKDATASIG with invalid hybrid pubkey but no STRICTENC", - SCRIPT_ENABLE_CHECKDATASIG) + SCRIPT_ENABLE_MAGNETIC_OPCODES) .PushDataSig(keys.key0, one) .DamagePush(10) .Push(one)); @@ -1291,7 +1291,7 @@ CScript() << ToByteVector(keys.pubkey0H) << OP_CHECKDATASIGVERIFY << OP_TRUE, "CHECKDATASIGVERIFY with invalid hybrid pubkey but no STRICTENC", - SCRIPT_ENABLE_CHECKDATASIG) + SCRIPT_ENABLE_MAGNETIC_OPCODES) .PushDataSig(keys.key0, one) .DamagePush(10) .Push(one) diff --git a/src/test/scriptflags.cpp b/src/test/scriptflags.cpp --- a/src/test/scriptflags.cpp +++ b/src/test/scriptflags.cpp @@ -31,7 +31,7 @@ {"COMPRESSED_PUBKEYTYPE", SCRIPT_VERIFY_COMPRESSED_PUBKEYTYPE}, {"SIGHASH_FORKID", SCRIPT_ENABLE_SIGHASH_FORKID}, {"REPLAY_PROTECTION", SCRIPT_ENABLE_REPLAY_PROTECTION}, - {"CHECKDATASIG", SCRIPT_ENABLE_CHECKDATASIG}, + {"MAGNETIC_OPCODES", SCRIPT_ENABLE_MAGNETIC_OPCODES}, }; uint32_t ParseScriptFlags(std::string strFlags) {