diff --git a/txscript/opcode.go b/txscript/opcode.go index 7adc1352c..bfc040ca7 100644 --- a/txscript/opcode.go +++ b/txscript/opcode.go @@ -31,268 +31,268 @@ type opcode struct { parsefunc func(*opcode, *Engine, []byte) error } -// These constants are the values of the official opcode used on the btc wiki, -// in bitcoind and in most if not all other references and software related to -// handling BTC scripts. +// These constants are the values of the official opcodes used on the btc wiki, +// in bitcoin core and in most if not all other references and software related +// to handling BTC scripts. const ( - OP_FALSE = 0 // AKA OP_0 - OP_0 = 0 - OP_DATA_1 = 1 - OP_DATA_2 = 2 - OP_DATA_3 = 3 - OP_DATA_4 = 4 - OP_DATA_5 = 5 - OP_DATA_6 = 6 - OP_DATA_7 = 7 - OP_DATA_8 = 8 - OP_DATA_9 = 9 - OP_DATA_10 = 10 - OP_DATA_11 = 11 - OP_DATA_12 = 12 - OP_DATA_13 = 13 - OP_DATA_14 = 14 - OP_DATA_15 = 15 - OP_DATA_16 = 16 - OP_DATA_17 = 17 - OP_DATA_18 = 18 - OP_DATA_19 = 19 - OP_DATA_20 = 20 - OP_DATA_21 = 21 - OP_DATA_22 = 22 - OP_DATA_23 = 23 - OP_DATA_24 = 24 - OP_DATA_25 = 25 - OP_DATA_26 = 26 - OP_DATA_27 = 27 - OP_DATA_28 = 28 - OP_DATA_29 = 29 - OP_DATA_30 = 30 - OP_DATA_31 = 31 - OP_DATA_32 = 32 - OP_DATA_33 = 33 - OP_DATA_34 = 34 - OP_DATA_35 = 35 - OP_DATA_36 = 36 - OP_DATA_37 = 37 - OP_DATA_38 = 38 - OP_DATA_39 = 39 - OP_DATA_40 = 40 - OP_DATA_41 = 41 - OP_DATA_42 = 42 - OP_DATA_43 = 43 - OP_DATA_44 = 44 - OP_DATA_45 = 45 - OP_DATA_46 = 46 - OP_DATA_47 = 47 - OP_DATA_48 = 48 - OP_DATA_49 = 49 - OP_DATA_50 = 50 - OP_DATA_51 = 51 - OP_DATA_52 = 52 - OP_DATA_53 = 53 - OP_DATA_54 = 54 - OP_DATA_55 = 55 - OP_DATA_56 = 56 - OP_DATA_57 = 57 - OP_DATA_58 = 58 - OP_DATA_59 = 59 - OP_DATA_60 = 60 - OP_DATA_61 = 61 - OP_DATA_62 = 62 - OP_DATA_63 = 63 - OP_DATA_64 = 64 - OP_DATA_65 = 65 - OP_DATA_66 = 66 - OP_DATA_67 = 67 - OP_DATA_68 = 68 - OP_DATA_69 = 69 - OP_DATA_70 = 70 - OP_DATA_71 = 71 - OP_DATA_72 = 72 - OP_DATA_73 = 73 - OP_DATA_74 = 74 - OP_DATA_75 = 75 - OP_PUSHDATA1 = 76 - OP_PUSHDATA2 = 77 - OP_PUSHDATA4 = 78 - OP_1NEGATE = 79 - OP_RESERVED = 80 - OP_1 = 81 // AKA OP_TRUE - OP_TRUE = 81 - OP_2 = 82 - OP_3 = 83 - OP_4 = 84 - OP_5 = 85 - OP_6 = 86 - OP_7 = 87 - OP_8 = 88 - OP_9 = 89 - OP_10 = 90 - OP_11 = 91 - OP_12 = 92 - OP_13 = 93 - OP_14 = 94 - OP_15 = 95 - OP_16 = 96 - OP_NOP = 97 - OP_VER = 98 - OP_IF = 99 - OP_NOTIF = 100 - OP_VERIF = 101 - OP_VERNOTIF = 102 - OP_ELSE = 103 - OP_ENDIF = 104 - OP_VERIFY = 105 - OP_RETURN = 106 - OP_TOALTSTACK = 107 - OP_FROMALTSTACK = 108 - OP_2DROP = 109 - OP_2DUP = 110 - OP_3DUP = 111 - OP_2OVER = 112 - OP_2ROT = 113 - OP_2SWAP = 114 - OP_IFDUP = 115 - OP_DEPTH = 116 - OP_DROP = 117 - OP_DUP = 118 - OP_NIP = 119 - OP_OVER = 120 - OP_PICK = 121 - OP_ROLL = 122 - OP_ROT = 123 - OP_SWAP = 124 - OP_TUCK = 125 - OP_CAT = 126 - OP_SUBSTR = 127 - OP_LEFT = 128 - OP_RIGHT = 129 - OP_SIZE = 130 - OP_INVERT = 131 - OP_AND = 132 - OP_OR = 133 - OP_XOR = 134 - OP_EQUAL = 135 - OP_EQUALVERIFY = 136 - OP_RESERVED1 = 137 - OP_RESERVED2 = 138 - OP_1ADD = 139 - OP_1SUB = 140 - OP_2MUL = 141 - OP_2DIV = 142 - OP_NEGATE = 143 - OP_ABS = 144 - OP_NOT = 145 - OP_0NOTEQUAL = 146 - OP_ADD = 147 - OP_SUB = 148 - OP_MUL = 149 - OP_DIV = 150 - OP_MOD = 151 - OP_LSHIFT = 152 - OP_RSHIFT = 153 - OP_BOOLAND = 154 - OP_BOOLOR = 155 - OP_NUMEQUAL = 156 - OP_NUMEQUALVERIFY = 157 - OP_NUMNOTEQUAL = 158 - OP_LESSTHAN = 159 - OP_GREATERTHAN = 160 - OP_LESSTHANOREQUAL = 161 - OP_GREATERTHANOREQUAL = 162 - OP_MIN = 163 - OP_MAX = 164 - OP_WITHIN = 165 - OP_RIPEMD160 = 166 - OP_SHA1 = 167 - OP_SHA256 = 168 - OP_HASH160 = 169 - OP_HASH256 = 170 - OP_CODESEPARATOR = 171 - OP_CHECKSIG = 172 - OP_CHECKSIGVERIFY = 173 - OP_CHECKMULTISIG = 174 - OP_CHECKMULTISIGVERIFY = 175 - OP_NOP1 = 176 - OP_NOP2 = 177 - OP_NOP3 = 178 - OP_NOP4 = 179 - OP_NOP5 = 180 - OP_NOP6 = 181 - OP_NOP7 = 182 - OP_NOP8 = 183 - OP_NOP9 = 184 - OP_NOP10 = 185 - OP_UNKNOWN186 = 186 - OP_UNKNOWN187 = 187 - OP_UNKNOWN188 = 188 - OP_UNKNOWN189 = 189 - OP_UNKNOWN190 = 190 - OP_UNKNOWN191 = 191 - OP_UNKNOWN192 = 192 - OP_UNKNOWN193 = 193 - OP_UNKNOWN194 = 194 - OP_UNKNOWN195 = 195 - OP_UNKNOWN196 = 196 - OP_UNKNOWN197 = 197 - OP_UNKNOWN198 = 198 - OP_UNKNOWN199 = 199 - OP_UNKNOWN200 = 200 - OP_UNKNOWN201 = 201 - OP_UNKNOWN202 = 202 - OP_UNKNOWN203 = 203 - OP_UNKNOWN204 = 204 - OP_UNKNOWN205 = 205 - OP_UNKNOWN206 = 206 - OP_UNKNOWN207 = 207 - OP_UNKNOWN208 = 208 - OP_UNKNOWN209 = 209 - OP_UNKNOWN210 = 210 - OP_UNKNOWN211 = 211 - OP_UNKNOWN212 = 212 - OP_UNKNOWN213 = 213 - OP_UNKNOWN214 = 214 - OP_UNKNOWN215 = 215 - OP_UNKNOWN216 = 216 - OP_UNKNOWN217 = 217 - OP_UNKNOWN218 = 218 - OP_UNKNOWN219 = 219 - OP_UNKNOWN220 = 220 - OP_UNKNOWN221 = 221 - OP_UNKNOWN222 = 222 - OP_UNKNOWN223 = 223 - OP_UNKNOWN224 = 224 - OP_UNKNOWN225 = 225 - OP_UNKNOWN226 = 226 - OP_UNKNOWN227 = 227 - OP_UNKNOWN228 = 228 - OP_UNKNOWN229 = 229 - OP_UNKNOWN230 = 230 - OP_UNKNOWN231 = 231 - OP_UNKNOWN232 = 232 - OP_UNKNOWN233 = 233 - OP_UNKNOWN234 = 234 - OP_UNKNOWN235 = 235 - OP_UNKNOWN236 = 236 - OP_UNKNOWN237 = 237 - OP_UNKNOWN238 = 238 - OP_UNKNOWN239 = 239 - OP_UNKNOWN240 = 240 - OP_UNKNOWN241 = 241 - OP_UNKNOWN242 = 242 - OP_UNKNOWN243 = 243 - OP_UNKNOWN244 = 244 - OP_UNKNOWN245 = 245 - OP_UNKNOWN246 = 246 - OP_UNKNOWN247 = 247 - OP_UNKNOWN248 = 248 - OP_UNKNOWN249 = 249 - OP_UNKNOWN250 = 250 - OP_UNKNOWN251 = 251 - OP_UNKNOWN252 = 252 - OP_PUBKEYHASH = 253 // bitcoind internal, for completeness - OP_PUBKEY = 254 // bitcoind internal, for completeness - OP_INVALIDOPCODE = 255 // bitcoind internal, for completeness + OP_0 = 0x00 // 0 + OP_FALSE = 0x00 // 0 - AKA OP_0 + OP_DATA_1 = 0x01 // 1 + OP_DATA_2 = 0x02 // 2 + OP_DATA_3 = 0x03 // 3 + OP_DATA_4 = 0x04 // 4 + OP_DATA_5 = 0x05 // 5 + OP_DATA_6 = 0x06 // 6 + OP_DATA_7 = 0x07 // 7 + OP_DATA_8 = 0x08 // 8 + OP_DATA_9 = 0x09 // 9 + OP_DATA_10 = 0x0a // 10 + OP_DATA_11 = 0x0b // 11 + OP_DATA_12 = 0x0c // 12 + OP_DATA_13 = 0x0d // 13 + OP_DATA_14 = 0x0e // 14 + OP_DATA_15 = 0x0f // 15 + OP_DATA_16 = 0x10 // 16 + OP_DATA_17 = 0x11 // 17 + OP_DATA_18 = 0x12 // 18 + OP_DATA_19 = 0x13 // 19 + OP_DATA_20 = 0x14 // 20 + OP_DATA_21 = 0x15 // 21 + OP_DATA_22 = 0x16 // 22 + OP_DATA_23 = 0x17 // 23 + OP_DATA_24 = 0x18 // 24 + OP_DATA_25 = 0x19 // 25 + OP_DATA_26 = 0x1a // 26 + OP_DATA_27 = 0x1b // 27 + OP_DATA_28 = 0x1c // 28 + OP_DATA_29 = 0x1d // 29 + OP_DATA_30 = 0x1e // 30 + OP_DATA_31 = 0x1f // 31 + OP_DATA_32 = 0x20 // 32 + OP_DATA_33 = 0x21 // 33 + OP_DATA_34 = 0x22 // 34 + OP_DATA_35 = 0x23 // 35 + OP_DATA_36 = 0x24 // 36 + OP_DATA_37 = 0x25 // 37 + OP_DATA_38 = 0x26 // 38 + OP_DATA_39 = 0x27 // 39 + OP_DATA_40 = 0x28 // 40 + OP_DATA_41 = 0x29 // 41 + OP_DATA_42 = 0x2a // 42 + OP_DATA_43 = 0x2b // 43 + OP_DATA_44 = 0x2c // 44 + OP_DATA_45 = 0x2d // 45 + OP_DATA_46 = 0x2e // 46 + OP_DATA_47 = 0x2f // 47 + OP_DATA_48 = 0x30 // 48 + OP_DATA_49 = 0x31 // 49 + OP_DATA_50 = 0x32 // 50 + OP_DATA_51 = 0x33 // 51 + OP_DATA_52 = 0x34 // 52 + OP_DATA_53 = 0x35 // 53 + OP_DATA_54 = 0x36 // 54 + OP_DATA_55 = 0x37 // 55 + OP_DATA_56 = 0x38 // 56 + OP_DATA_57 = 0x39 // 57 + OP_DATA_58 = 0x3a // 58 + OP_DATA_59 = 0x3b // 59 + OP_DATA_60 = 0x3c // 60 + OP_DATA_61 = 0x3d // 61 + OP_DATA_62 = 0x3e // 62 + OP_DATA_63 = 0x3f // 63 + OP_DATA_64 = 0x40 // 64 + OP_DATA_65 = 0x41 // 65 + OP_DATA_66 = 0x42 // 66 + OP_DATA_67 = 0x43 // 67 + OP_DATA_68 = 0x44 // 68 + OP_DATA_69 = 0x45 // 69 + OP_DATA_70 = 0x46 // 70 + OP_DATA_71 = 0x47 // 71 + OP_DATA_72 = 0x48 // 72 + OP_DATA_73 = 0x49 // 73 + OP_DATA_74 = 0x4a // 74 + OP_DATA_75 = 0x4b // 75 + OP_PUSHDATA1 = 0x4c // 76 + OP_PUSHDATA2 = 0x4d // 77 + OP_PUSHDATA4 = 0x4e // 78 + OP_1NEGATE = 0x4f // 79 + OP_RESERVED = 0x50 // 80 + OP_1 = 0x51 // 81 - AKA OP_TRUE + OP_TRUE = 0x51 // 81 + OP_2 = 0x52 // 82 + OP_3 = 0x53 // 83 + OP_4 = 0x54 // 84 + OP_5 = 0x55 // 85 + OP_6 = 0x56 // 86 + OP_7 = 0x57 // 87 + OP_8 = 0x58 // 88 + OP_9 = 0x59 // 89 + OP_10 = 0x5a // 90 + OP_11 = 0x5b // 91 + OP_12 = 0x5c // 92 + OP_13 = 0x5d // 93 + OP_14 = 0x5e // 94 + OP_15 = 0x5f // 95 + OP_16 = 0x60 // 96 + OP_NOP = 0x61 // 97 + OP_VER = 0x62 // 98 + OP_IF = 0x63 // 99 + OP_NOTIF = 0x64 // 100 + OP_VERIF = 0x65 // 101 + OP_VERNOTIF = 0x66 // 102 + OP_ELSE = 0x67 // 103 + OP_ENDIF = 0x68 // 104 + OP_VERIFY = 0x69 // 105 + OP_RETURN = 0x6a // 106 + OP_TOALTSTACK = 0x6b // 107 + OP_FROMALTSTACK = 0x6c // 108 + OP_2DROP = 0x6d // 109 + OP_2DUP = 0x6e // 110 + OP_3DUP = 0x6f // 111 + OP_2OVER = 0x70 // 112 + OP_2ROT = 0x71 // 113 + OP_2SWAP = 0x72 // 114 + OP_IFDUP = 0x73 // 115 + OP_DEPTH = 0x74 // 116 + OP_DROP = 0x75 // 117 + OP_DUP = 0x76 // 118 + OP_NIP = 0x77 // 119 + OP_OVER = 0x78 // 120 + OP_PICK = 0x79 // 121 + OP_ROLL = 0x7a // 122 + OP_ROT = 0x7b // 123 + OP_SWAP = 0x7c // 124 + OP_TUCK = 0x7d // 125 + OP_CAT = 0x7e // 126 + OP_SUBSTR = 0x7f // 127 + OP_LEFT = 0x80 // 128 + OP_RIGHT = 0x81 // 129 + OP_SIZE = 0x82 // 130 + OP_INVERT = 0x83 // 131 + OP_AND = 0x84 // 132 + OP_OR = 0x85 // 133 + OP_XOR = 0x86 // 134 + OP_EQUAL = 0x87 // 135 + OP_EQUALVERIFY = 0x88 // 136 + OP_RESERVED1 = 0x89 // 137 + OP_RESERVED2 = 0x8a // 138 + OP_1ADD = 0x8b // 139 + OP_1SUB = 0x8c // 140 + OP_2MUL = 0x8d // 141 + OP_2DIV = 0x8e // 142 + OP_NEGATE = 0x8f // 143 + OP_ABS = 0x90 // 144 + OP_NOT = 0x91 // 145 + OP_0NOTEQUAL = 0x92 // 146 + OP_ADD = 0x93 // 147 + OP_SUB = 0x94 // 148 + OP_MUL = 0x95 // 149 + OP_DIV = 0x96 // 150 + OP_MOD = 0x97 // 151 + OP_LSHIFT = 0x98 // 152 + OP_RSHIFT = 0x99 // 153 + OP_BOOLAND = 0x9a // 154 + OP_BOOLOR = 0x9b // 155 + OP_NUMEQUAL = 0x9c // 156 + OP_NUMEQUALVERIFY = 0x9d // 157 + OP_NUMNOTEQUAL = 0x9e // 158 + OP_LESSTHAN = 0x9f // 159 + OP_GREATERTHAN = 0xa0 // 160 + OP_LESSTHANOREQUAL = 0xa1 // 161 + OP_GREATERTHANOREQUAL = 0xa2 // 162 + OP_MIN = 0xa3 // 163 + OP_MAX = 0xa4 // 164 + OP_WITHIN = 0xa5 // 165 + OP_RIPEMD160 = 0xa6 // 166 + OP_SHA1 = 0xa7 // 167 + OP_SHA256 = 0xa8 // 168 + OP_HASH160 = 0xa9 // 169 + OP_HASH256 = 0xaa // 170 + OP_CODESEPARATOR = 0xab // 171 + OP_CHECKSIG = 0xac // 172 + OP_CHECKSIGVERIFY = 0xad // 173 + OP_CHECKMULTISIG = 0xae // 174 + OP_CHECKMULTISIGVERIFY = 0xaf // 175 + OP_NOP1 = 0xb0 // 176 + OP_NOP2 = 0xb1 // 177 + OP_NOP3 = 0xb2 // 178 + OP_NOP4 = 0xb3 // 179 + OP_NOP5 = 0xb4 // 180 + OP_NOP6 = 0xb5 // 181 + OP_NOP7 = 0xb6 // 182 + OP_NOP8 = 0xb7 // 183 + OP_NOP9 = 0xb8 // 184 + OP_NOP10 = 0xb9 // 185 + OP_UNKNOWN186 = 0xba // 186 + OP_UNKNOWN187 = 0xbb // 187 + OP_UNKNOWN188 = 0xbc // 188 + OP_UNKNOWN189 = 0xbd // 189 + OP_UNKNOWN190 = 0xbe // 190 + OP_UNKNOWN191 = 0xbf // 191 + OP_UNKNOWN192 = 0xc0 // 192 + OP_UNKNOWN193 = 0xc1 // 193 + OP_UNKNOWN194 = 0xc2 // 194 + OP_UNKNOWN195 = 0xc3 // 195 + OP_UNKNOWN196 = 0xc4 // 196 + OP_UNKNOWN197 = 0xc5 // 197 + OP_UNKNOWN198 = 0xc6 // 198 + OP_UNKNOWN199 = 0xc7 // 199 + OP_UNKNOWN200 = 0xc8 // 200 + OP_UNKNOWN201 = 0xc9 // 201 + OP_UNKNOWN202 = 0xca // 202 + OP_UNKNOWN203 = 0xcb // 203 + OP_UNKNOWN204 = 0xcc // 204 + OP_UNKNOWN205 = 0xcd // 205 + OP_UNKNOWN206 = 0xce // 206 + OP_UNKNOWN207 = 0xcf // 207 + OP_UNKNOWN208 = 0xd0 // 208 + OP_UNKNOWN209 = 0xd1 // 209 + OP_UNKNOWN210 = 0xd2 // 210 + OP_UNKNOWN211 = 0xd3 // 211 + OP_UNKNOWN212 = 0xd4 // 212 + OP_UNKNOWN213 = 0xd5 // 213 + OP_UNKNOWN214 = 0xd6 // 214 + OP_UNKNOWN215 = 0xd7 // 215 + OP_UNKNOWN216 = 0xd8 // 216 + OP_UNKNOWN217 = 0xd9 // 217 + OP_UNKNOWN218 = 0xda // 218 + OP_UNKNOWN219 = 0xdb // 219 + OP_UNKNOWN220 = 0xdc // 220 + OP_UNKNOWN221 = 0xdd // 221 + OP_UNKNOWN222 = 0xde // 222 + OP_UNKNOWN223 = 0xdf // 223 + OP_UNKNOWN224 = 0xe0 // 224 + OP_UNKNOWN225 = 0xe1 // 225 + OP_UNKNOWN226 = 0xe2 // 226 + OP_UNKNOWN227 = 0xe3 // 227 + OP_UNKNOWN228 = 0xe4 // 228 + OP_UNKNOWN229 = 0xe5 // 229 + OP_UNKNOWN230 = 0xe6 // 230 + OP_UNKNOWN231 = 0xe7 // 231 + OP_UNKNOWN232 = 0xe8 // 232 + OP_UNKNOWN233 = 0xe9 // 233 + OP_UNKNOWN234 = 0xea // 234 + OP_UNKNOWN235 = 0xeb // 235 + OP_UNKNOWN236 = 0xec // 236 + OP_UNKNOWN237 = 0xed // 237 + OP_UNKNOWN238 = 0xee // 238 + OP_UNKNOWN239 = 0xef // 239 + OP_UNKNOWN240 = 0xf0 // 240 + OP_UNKNOWN241 = 0xf1 // 241 + OP_UNKNOWN242 = 0xf2 // 242 + OP_UNKNOWN243 = 0xf3 // 243 + OP_UNKNOWN244 = 0xf4 // 244 + OP_UNKNOWN245 = 0xf5 // 245 + OP_UNKNOWN246 = 0xf6 // 246 + OP_UNKNOWN247 = 0xf7 // 247 + OP_UNKNOWN248 = 0xf8 // 248 + OP_SMALLDATA = 0xf9 // 249 - bitcoin core internal + OP_SMALLINTEGER = 0xfa // 250 - bitcoin core internal + OP_PUBKEYS = 0xfb // 251 - bitcoin core internal + OP_UNKNOWN252 = 0xfc // 252 + OP_PUBKEYHASH = 0xfd // 253 - bitcoin core internal + OP_PUBKEY = 0xfe // 254 - bitcoin core internal + OP_INVALIDOPCODE = 0xff // 255 - bitcoin core internal ) // conditional execution constants @@ -815,11 +815,11 @@ var opcodemapPreinit = map[byte]*opcode{ opfunc: opcodeInvalid}, OP_UNKNOWN248: {value: OP_UNKNOWN248, name: "OP_UNKNOWN248", length: 1, opfunc: opcodeInvalid}, - OP_UNKNOWN249: {value: OP_UNKNOWN249, name: "OP_UNKNOWN249", length: 1, + OP_SMALLDATA: {value: OP_SMALLDATA, name: "OP_SMALLDATA", length: 1, opfunc: opcodeInvalid}, - OP_UNKNOWN250: {value: OP_UNKNOWN250, name: "OP_UNKNOWN250", length: 1, - opfunc: opcodeInvalid}, - OP_UNKNOWN251: {value: OP_UNKNOWN251, name: "OP_UNKNOWN251", length: 1, + OP_SMALLINTEGER: {value: OP_SMALLINTEGER, name: "OP_SMALLINTEGER", + length: 1, opfunc: opcodeInvalid}, + OP_PUBKEYS: {value: OP_PUBKEYS, name: "OP_PUBKEYS", length: 1, opfunc: opcodeInvalid}, OP_UNKNOWN252: {value: OP_UNKNOWN252, name: "OP_UNKNOWN252", length: 1, opfunc: opcodeInvalid}, @@ -827,8 +827,8 @@ var opcodemapPreinit = map[byte]*opcode{ opfunc: opcodeInvalid}, OP_PUBKEY: {value: OP_PUBKEY, name: "OP_PUBKEY", length: 1, opfunc: opcodeInvalid}, - OP_INVALIDOPCODE: {value: OP_INVALIDOPCODE, name: "OP_INVALIDOPCODE", length: 1, - opfunc: opcodeInvalid}, + OP_INVALIDOPCODE: {value: OP_INVALIDOPCODE, name: "OP_INVALIDOPCODE", + length: 1, opfunc: opcodeInvalid}, } // opcodeOnelineRepls defines opcode names which are replaced when doing a diff --git a/txscript/opcode_test.go b/txscript/opcode_test.go index 2efb225e4..b5da79573 100644 --- a/txscript/opcode_test.go +++ b/txscript/opcode_test.go @@ -3798,22 +3798,22 @@ var detailedTests = []detailedTest{ disassembly: "OP_UNKNOWN248", }, { - name: "invalid opcode 249", - script: []byte{txscript.OP_UNKNOWN249}, + name: "invalid opcode OP_SMALLDATA", + script: []byte{txscript.OP_SMALLDATA}, expectedReturn: txscript.ErrStackInvalidOpcode, - disassembly: "OP_UNKNOWN249", + disassembly: "OP_SMALLDATA", }, { - name: "invalid opcode 250", - script: []byte{txscript.OP_UNKNOWN250}, + name: "invalid opcode OP_SMALLINTEGER", + script: []byte{txscript.OP_SMALLINTEGER}, expectedReturn: txscript.ErrStackInvalidOpcode, - disassembly: "OP_UNKNOWN250", + disassembly: "OP_SMALLINTEGER", }, { - name: "invalid opcode 251", - script: []byte{txscript.OP_UNKNOWN251}, + name: "invalid opcode OP_PUBKEYS", + script: []byte{txscript.OP_PUBKEYS}, expectedReturn: txscript.ErrStackInvalidOpcode, - disassembly: "OP_UNKNOWN251", + disassembly: "OP_PUBKEYS", }, { name: "invalid opcode 252", @@ -3821,6 +3821,24 @@ var detailedTests = []detailedTest{ expectedReturn: txscript.ErrStackInvalidOpcode, disassembly: "OP_UNKNOWN252", }, + { + name: "invalid opcode OP_PUBKEYHASH", + script: []byte{txscript.OP_PUBKEYHASH}, + expectedReturn: txscript.ErrStackInvalidOpcode, + disassembly: "OP_PUBKEYHASH", + }, + { + name: "invalid opcode OP_PUBKEY", + script: []byte{txscript.OP_PUBKEY}, + expectedReturn: txscript.ErrStackInvalidOpcode, + disassembly: "OP_PUBKEY", + }, + { + name: "invalid opcode OP_INVALIDOPCODE", + script: []byte{txscript.OP_INVALIDOPCODE}, + expectedReturn: txscript.ErrStackInvalidOpcode, + disassembly: "OP_INVALIDOPCODE", + }, { name: "invalid opcode 186 if noexec", @@ -4201,22 +4219,22 @@ var detailedTests = []detailedTest{ disassembly: "0 OP_IF OP_UNKNOWN248 OP_ELSE 1 OP_ENDIF", }, { - name: "invalid opcode 249 if noexec", - script: []byte{txscript.OP_FALSE, txscript.OP_IF, txscript.OP_UNKNOWN249, txscript.OP_ELSE, txscript.OP_TRUE, txscript.OP_ENDIF}, + name: "invalid opcode OP_SMALLDATA if noexec", + script: []byte{txscript.OP_FALSE, txscript.OP_IF, txscript.OP_SMALLDATA, txscript.OP_ELSE, txscript.OP_TRUE, txscript.OP_ENDIF}, after: [][]byte{{0x01}}, - disassembly: "0 OP_IF OP_UNKNOWN249 OP_ELSE 1 OP_ENDIF", + disassembly: "0 OP_IF OP_SMALLDATA OP_ELSE 1 OP_ENDIF", }, { - name: "invalid opcode 250 if noexec", - script: []byte{txscript.OP_FALSE, txscript.OP_IF, txscript.OP_UNKNOWN250, txscript.OP_ELSE, txscript.OP_TRUE, txscript.OP_ENDIF}, + name: "invalid opcode OP_SMALLINTEGER if noexec", + script: []byte{txscript.OP_FALSE, txscript.OP_IF, txscript.OP_SMALLINTEGER, txscript.OP_ELSE, txscript.OP_TRUE, txscript.OP_ENDIF}, after: [][]byte{{0x01}}, - disassembly: "0 OP_IF OP_UNKNOWN250 OP_ELSE 1 OP_ENDIF", + disassembly: "0 OP_IF OP_SMALLINTEGER OP_ELSE 1 OP_ENDIF", }, { - name: "invalid opcode 251 if noexec", - script: []byte{txscript.OP_FALSE, txscript.OP_IF, txscript.OP_UNKNOWN251, txscript.OP_ELSE, txscript.OP_TRUE, txscript.OP_ENDIF}, + name: "invalid opcode OP_PUBKEYS if noexec", + script: []byte{txscript.OP_FALSE, txscript.OP_IF, txscript.OP_PUBKEYS, txscript.OP_ELSE, txscript.OP_TRUE, txscript.OP_ENDIF}, after: [][]byte{{0x01}}, - disassembly: "0 OP_IF OP_UNKNOWN251 OP_ELSE 1 OP_ENDIF", + disassembly: "0 OP_IF OP_PUBKEYS OP_ELSE 1 OP_ENDIF", }, { name: "invalid opcode 252 if noexec", @@ -4224,24 +4242,23 @@ var detailedTests = []detailedTest{ after: [][]byte{{0x01}}, disassembly: "0 OP_IF OP_UNKNOWN252 OP_ELSE 1 OP_ENDIF", }, - { - name: "invalid opcode OP_PUBKEY", - script: []byte{txscript.OP_PUBKEY}, - expectedReturn: txscript.ErrStackInvalidOpcode, - disassembly: "OP_PUBKEY", + name: "invalid opcode OP_PUBKEYHASH if noexec", + script: []byte{txscript.OP_FALSE, txscript.OP_IF, txscript.OP_PUBKEYHASH, txscript.OP_ELSE, txscript.OP_TRUE, txscript.OP_ENDIF}, + after: [][]byte{{0x01}}, + disassembly: "0 OP_IF OP_PUBKEYHASH OP_ELSE 1 OP_ENDIF", }, { - name: "invalid opcode OP_PUBKEYHASH", - script: []byte{txscript.OP_PUBKEYHASH}, - expectedReturn: txscript.ErrStackInvalidOpcode, - disassembly: "OP_PUBKEYHASH", + name: "invalid opcode OP_PUBKEY if noexec", + script: []byte{txscript.OP_FALSE, txscript.OP_IF, txscript.OP_PUBKEY, txscript.OP_ELSE, txscript.OP_TRUE, txscript.OP_ENDIF}, + after: [][]byte{{0x01}}, + disassembly: "0 OP_IF OP_PUBKEY OP_ELSE 1 OP_ENDIF", }, { - name: "invalid opcode OP_INVALIDOPCODE", - script: []byte{txscript.OP_INVALIDOPCODE}, - expectedReturn: txscript.ErrStackInvalidOpcode, - disassembly: "OP_INVALIDOPCODE", + name: "invalid opcode OP_INVALIDOPCODE if noexec", + script: []byte{txscript.OP_FALSE, txscript.OP_IF, txscript.OP_INVALIDOPCODE, txscript.OP_ELSE, txscript.OP_TRUE, txscript.OP_ENDIF}, + after: [][]byte{{0x01}}, + disassembly: "0 OP_IF OP_INVALIDOPCODE OP_ELSE 1 OP_ENDIF", }, }