From 8552867695bac9e9903109938a8a9205822f37c7 Mon Sep 17 00:00:00 2001 From: Thomas Kerin <me@thomaskerin.io> Date: Thu, 15 Dec 2016 11:50:58 +0100 Subject: [PATCH] bscript.compie - minimal encoding of -1 stack element --- src/script.js | 8 +++++++- test/fixtures/script.json | 7 +++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/script.js b/src/script.js index f849371..62c5d3a 100644 --- a/src/script.js +++ b/src/script.js @@ -39,7 +39,7 @@ function compile (chunks) { // data chunk if (Buffer.isBuffer(chunk)) { // adhere to BIP62.3, minimal push policy - if (chunk.length === 1 && chunk[0] >= 1 && chunk[0] <= 16) { + if (chunk.length === 1 && (chunk[0] === 0x81 || chunk[0] >= 1 && chunk[0] <= 16)) { return accum + 1 } @@ -64,6 +64,12 @@ function compile (chunks) { return } + if (chunk.length === 1 && chunk[0] === 0x81) { + buffer.writeUInt8(OPS.OP_1NEGATE, offset) + offset += 1 + return + } + offset += bufferutils.writePushDataInt(buffer, chunk.length, offset) chunk.copy(buffer, offset) diff --git a/test/fixtures/script.json b/test/fixtures/script.json index 89456c9..c6a0eea 100644 --- a/test/fixtures/script.json +++ b/test/fixtures/script.json @@ -1,5 +1,12 @@ { "valid": [ + { + "asm": "OP_1NEGATE", + "script": "4f", + "stack": [ + "81" + ] + }, { "asm": "304402207515cf147d201f411092e6be5a64a6006f9308fad7b2a8fdaab22cd86ce764c202200974b8aca7bf51dbf54150d3884e1ae04f675637b926ec33bf75939446f6ca2801", "script": "47304402207515cf147d201f411092e6be5a64a6006f9308fad7b2a8fdaab22cd86ce764c202200974b8aca7bf51dbf54150d3884e1ae04f675637b926ec33bf75939446f6ca2801",