diff --git a/src/script.js b/src/script.js index 114f728..d8785f0 100644 --- a/src/script.js +++ b/src/script.js @@ -21,8 +21,12 @@ function isOPInt (value) { (value === OPS.OP_1NEGATE) } -function pushOnlyChunk (value) { - return types.oneOf(Buffer, isOPInt) +function isPushOnlyChunk (value) { + return types.Buffer(value) || isOPInt(value) +} + +function isPushOnly (value) { + return types.Array(value) && value.every(isPushOnlyChunk) } function compile (chunks) { @@ -143,7 +147,7 @@ function fromASM (asm) { function decompilePushOnly (script) { var chunks = decompile(script) - typeforce([pushOnlyChunk], chunks) + typeforce(isPushOnly, chunks) return chunks.map(function (op) { if (Buffer.isBuffer(op)) return op @@ -154,7 +158,7 @@ function decompilePushOnly (script) { } function compilePushOnly (chunks) { - typeforce([pushOnlyChunk], chunks) + typeforce(isPushOnly, chunks) return compile(chunks) }