From ff8d76cf7e039e672e01ff04a1d261e4888ffbde Mon Sep 17 00:00:00 2001 From: Andreas Schildbach Date: Sat, 8 Mar 2014 23:39:39 +0100 Subject: [PATCH] Include PUSHDATA opcode in Script.toString(). Also, smallNums are printed in their decoded form. --- .../main/java/com/google/bitcoin/script/Script.java | 8 ++++++-- .../java/com/google/bitcoin/script/ScriptOpCodes.java | 10 ++++++++++ .../java/com/google/bitcoin/script/ScriptTest.java | 2 +- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/com/google/bitcoin/script/Script.java b/core/src/main/java/com/google/bitcoin/script/Script.java index 87ff448a..fad9697e 100644 --- a/core/src/main/java/com/google/bitcoin/script/Script.java +++ b/core/src/main/java/com/google/bitcoin/script/Script.java @@ -111,11 +111,15 @@ public class Script { if (chunk.isOpCode()) { buf.append(getOpCodeName(chunk.opcode)); buf.append(" "); - } else { + } else if (chunk.data != null) { // Data chunk + buf.append(getPushDataName(chunk.opcode)); buf.append("["); - buf.append(chunk.data != null ? bytesToHexString(chunk.data) : "null"); + buf.append(bytesToHexString(chunk.data)); buf.append("] "); + } else { + // Small num + buf.append(decodeFromOpN(chunk.opcode)); } } return buf.toString().trim(); diff --git a/core/src/main/java/com/google/bitcoin/script/ScriptOpCodes.java b/core/src/main/java/com/google/bitcoin/script/ScriptOpCodes.java index 34514587..93253d7c 100644 --- a/core/src/main/java/com/google/bitcoin/script/ScriptOpCodes.java +++ b/core/src/main/java/com/google/bitcoin/script/ScriptOpCodes.java @@ -392,6 +392,16 @@ public class ScriptOpCodes { return "NON_OP(" + opcode + ")"; } + /** + * Converts the given pushdata OpCode into a string (eg "PUSHDATA2", or "PUSHDATA(23)") + */ + public static String getPushDataName(int opcode) { + if (opCodeMap.containsKey(opcode)) + return opCodeMap.get(opcode); + + return "PUSHDATA(" + opcode + ")"; + } + /** * Converts the given OpCodeName into an int */ diff --git a/core/src/test/java/com/google/bitcoin/script/ScriptTest.java b/core/src/test/java/com/google/bitcoin/script/ScriptTest.java index 6735cadd..1c40a375 100644 --- a/core/src/test/java/com/google/bitcoin/script/ScriptTest.java +++ b/core/src/test/java/com/google/bitcoin/script/ScriptTest.java @@ -69,7 +69,7 @@ public class ScriptTest { // Check we can extract the to address byte[] pubkeyBytes = Hex.decode(pubkeyProg); Script pubkey = new Script(pubkeyBytes); - assertEquals("DUP HASH160 [33e81a941e64cda12c6a299ed322ddbdd03f8d0e] EQUALVERIFY CHECKSIG", pubkey.toString()); + assertEquals("DUP HASH160 PUSHDATA(20)[33e81a941e64cda12c6a299ed322ddbdd03f8d0e] EQUALVERIFY CHECKSIG", pubkey.toString()); Address toAddr = new Address(params, pubkey.getPubKeyHash()); assertEquals("mkFQohBpy2HDXrCwyMrYL5RtfrmeiuuPY2", toAddr.toString()); }