diff --git a/lib/bcoin/script.js b/lib/bcoin/script.js index 1617a245..88e143db 100644 --- a/lib/bcoin/script.js +++ b/lib/bcoin/script.js @@ -1237,10 +1237,10 @@ Script.checkPush = function checkPush(value, flags) { return pushdata.opcode == null && pushdata.len === value.length; if (value.length <= 255) - return pushdata.opcode === 'pushdata1'; + return pushdata.opcode === constants.opcodes.pushdata1; if (value.length <= 65535) - return pushdata.opcode === 'pushdata2'; + return pushdata.opcode === constants.opcodes.pushdata2; return true; }; @@ -2596,7 +2596,7 @@ Script.sign = function sign(msg, key, type) { Script.decode = function decode(buf) { var code = []; var off = 0; - var b, opcode, len; + var b, len; assert(Buffer.isBuffer(buf)); @@ -2637,48 +2637,46 @@ Script.decode = function decode(buf) { continue; } - opcode = constants.opcodesByVal[b]; - if (off >= buf.length) { - code.push(opcode || b); + code.push(constants.opcodesByVal[b] || b); continue; } - if (opcode === 'pushdata1') { + if (b === constants.opcodes.pushdata1) { len = buf[off]; off += 1; code.push(buf.slice(off, off + len)); off += len; if (len <= 0x4b || off > buf.length) { utils.hidden(code[code.length - 1], 'pushdata', { - opcode: opcode, + opcode: b, len: len }); } - } else if (opcode === 'pushdata2') { + } else if (b === constants.opcodes.pushdata2) { len = utils.readU16(buf, off); off += 2; code.push(buf.slice(off, off + len)); off += len; if (len <= 0xff || off > buf.length) { utils.hidden(code[code.length - 1], 'pushdata', { - opcode: opcode, + opcode: b, len: len }); } - } else if (opcode === 'pushdata4') { + } else if (b === constants.opcodes.pushdata4) { len = utils.readU32(buf, off); off += 4; code.push(buf.slice(off, off + len)); off += len; if (len <= 0xffff || off > buf.length) { utils.hidden(code[code.length - 1], 'pushdata', { - opcode: opcode, + opcode: b, len: len }); } } else { - code.push(opcode || b); + code.push(constants.opcodesByVal[b] || b); } } @@ -2704,15 +2702,15 @@ Script.encode = function encode(code) { if (op.pushdata.opcode === null) { p.writeU8(op.pushdata.len); p.writeBytes(op); - } else if (op.pushdata.opcode === 'pushdata1') { + } else if (op.pushdata.opcode === opcodes.pushdata1) { p.writeU8(opcodes.pushdata1); p.writeU8(op.pushdata.len); p.writeBytes(op); - } else if (op.pushdata.opcode === 'pushdata2') { + } else if (op.pushdata.opcode === opcodes.pushdata2) { p.writeU8(opcodes.pushdata2); p.writeU16(op.pushdata.len); p.writeBytes(op); - } else if (op.pushdata.opcode === 'pushdata4') { + } else if (op.pushdata.opcode === opcodes.pushdata4) { p.writeU8(opcodes.pushdata4); p.writeU32(op.pushdata.len); p.writeBytes(op);