UNPKG

lotus-sdk

Version:

Central repository for several classes of tools for integrating with, and building for, the Lotusia ecosystem

271 lines (270 loc) 7.09 kB
import { Preconditions } from './util/preconditions.js'; import { JSUtil } from './util/js.js'; export class Opcode { num; constructor(num) { if (typeof num === 'number') { JSUtil.defineImmutable(this, { num }); } else if (typeof num === 'string') { const value = Opcode.map[num]; if (value === undefined) { throw new Error(`Unknown opcode: ${num}`); } JSUtil.defineImmutable(this, { num: value }); } else { throw new TypeError(`Unrecognized num type: "${typeof num}" for Opcode`); } } static fromBuffer(buf) { Preconditions.checkArgument(Buffer.isBuffer(buf), 'buf', 'Must be a Buffer'); Preconditions.checkArgument(buf.length > 0, 'buf', 'Buffer cannot be empty'); return new Opcode(buf[0]); } toBuffer() { return Buffer.from([this.num]); } toString() { return this.num.toString(); } static OP_0 = 0; static OP_FALSE = 0; static OP_PUSHDATA1 = 76; static OP_PUSHDATA2 = 77; static OP_PUSHDATA4 = 78; static OP_1NEGATE = 79; static OP_RESERVED = 80; static OP_1 = 81; static OP_TRUE = 81; static OP_2 = 82; static OP_3 = 83; static OP_4 = 84; static OP_5 = 85; static OP_6 = 86; static OP_7 = 87; static OP_8 = 88; static OP_9 = 89; static OP_10 = 90; static OP_11 = 91; static OP_12 = 92; static OP_13 = 93; static OP_14 = 94; static OP_15 = 95; static OP_16 = 96; static OP_NOP = 97; static OP_SCRIPTTYPE = 98; static OP_VER = 98; static OP_IF = 99; static OP_NOTIF = 100; static OP_VERIF = 101; static OP_VERNOTIF = 102; static OP_ELSE = 103; static OP_ENDIF = 104; static OP_VERIFY = 105; static OP_RETURN = 106; static OP_TOALTSTACK = 107; static OP_FROMALTSTACK = 108; static OP_2DROP = 109; static OP_2DUP = 110; static OP_3DUP = 111; static OP_2OVER = 112; static OP_2ROT = 113; static OP_2SWAP = 114; static OP_IFDUP = 115; static OP_DEPTH = 116; static OP_DROP = 117; static OP_DUP = 118; static OP_NIP = 119; static OP_OVER = 120; static OP_PICK = 121; static OP_ROLL = 122; static OP_ROT = 123; static OP_SWAP = 124; static OP_TUCK = 125; static OP_CAT = 126; static OP_SPLIT = 127; static OP_NUM2BIN = 128; static OP_BIN2NUM = 129; static OP_SIZE = 130; static OP_INVERT = 131; static OP_AND = 132; static OP_OR = 133; static OP_XOR = 134; static OP_EQUAL = 135; static OP_EQUALVERIFY = 136; static OP_RESERVED1 = 137; static OP_RESERVED2 = 138; static OP_1ADD = 139; static OP_1SUB = 140; static OP_2MUL = 141; static OP_2DIV = 142; static OP_NEGATE = 143; static OP_ABS = 144; static OP_NOT = 145; static OP_0NOTEQUAL = 146; static OP_ADD = 147; static OP_SUB = 148; static OP_MUL = 149; static OP_DIV = 150; static OP_MOD = 151; static OP_LSHIFT = 152; static OP_RSHIFT = 153; static OP_BOOLAND = 154; static OP_BOOLOR = 155; static OP_NUMEQUAL = 156; static OP_NUMEQUALVERIFY = 157; static OP_NUMNOTEQUAL = 158; static OP_LESSTHAN = 159; static OP_GREATERTHAN = 160; static OP_LESSTHANOREQUAL = 161; static OP_GREATERTHANOREQUAL = 162; static OP_MIN = 163; static OP_MAX = 164; static OP_WITHIN = 165; static OP_RIPEMD160 = 166; static OP_SHA1 = 167; static OP_SHA256 = 168; static OP_HASH160 = 169; static OP_HASH256 = 170; static OP_CODESEPARATOR = 171; static OP_CHECKSIG = 172; static OP_CHECKSIGVERIFY = 173; static OP_CHECKMULTISIG = 174; static OP_CHECKMULTISIGVERIFY = 175; static OP_NOP1 = 176; static OP_CHECKLOCKTIMEVERIFY = 177; static OP_NOP2 = 177; static OP_CHECKSEQUENCEVERIFY = 178; static OP_NOP3 = 178; static OP_NOP4 = 179; static OP_NOP5 = 180; static OP_NOP6 = 181; static OP_NOP7 = 182; static OP_NOP8 = 183; static OP_NOP9 = 184; static OP_NOP10 = 185; static OP_CHECKDATASIG = 186; static OP_CHECKDATASIGVERIFY = 187; static OP_REVERSEBYTES = 188; static map = { OP_0: 0, OP_FALSE: 0, OP_PUSHDATA1: 76, OP_PUSHDATA2: 77, OP_PUSHDATA4: 78, OP_1NEGATE: 79, OP_RESERVED: 80, OP_1: 81, 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_SCRIPTTYPE: 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_SPLIT: 127, OP_NUM2BIN: 128, OP_BIN2NUM: 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_CHECKLOCKTIMEVERIFY: 177, OP_NOP2: 177, OP_CHECKSEQUENCEVERIFY: 178, 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_CHECKDATASIG: 186, OP_CHECKDATASIGVERIFY: 187, OP_REVERSEBYTES: 188, }; }