Script: parseChunks now uses bufferutils

This commit is contained in:
Daniel Cousens 2014-06-12 17:21:43 +10:00
parent 005ca31fb3
commit 3521584b3a

View file

@ -40,47 +40,30 @@ Script.parseChunks = function(buffer) {
var chunks = []
// Cursor
var i = 0
// Read n bytes and store result as a chunk
function readChunk(n) {
chunks.push(buffer.slice(i, i + n))
i += n
}
while (i < buffer.length) {
var opcode = buffer[i++]
if (opcode >= 0xF0) {
// Two byte opcode
opcode = (opcode << 8) | buffer[i++]
}
var opcode = buffer.readUInt8(i)
if ((opcode > opcodes.OP_0) && (opcode <= opcodes.OP_PUSHDATA4)) {
var d = bufferutils.readPushDataInt(buffer, i)
i += d.size
var data = buffer.slice(i, i + d.number)
i += d.number
chunks.push(data)
var len
if (opcode > 0 && opcode < opcodes.OP_PUSHDATA1) {
// Read some bytes of data, opcode value is the length of data
readChunk(opcode)
} else if (opcode == opcodes.OP_PUSHDATA1) {
len = buffer[i++]
readChunk(len)
} else if (opcode == opcodes.OP_PUSHDATA2) {
len = (buffer[i++] << 8) | buffer[i++]
readChunk(len)
} else if (opcode == opcodes.OP_PUSHDATA4) {
len = (buffer[i++] << 24) |
(buffer[i++] << 16) |
(buffer[i++] << 8) |
buffer[i++]
readChunk(len)
} else {
chunks.push(opcode)
++i
}
}
return chunks
}
/**
* Compare the script to known templates of scriptPubKey.
*