From 84860690c82adeb7742a63de8ed0e66343a044d4 Mon Sep 17 00:00:00 2001 From: shenao78 Date: Tue, 9 Apr 2019 14:28:09 +0800 Subject: [PATCH] fix retire --- .../src/main/java/io/bytom/offline/api/Output.java | 3 ++- .../src/main/java/io/bytom/offline/common/VMUtil.java | 17 +++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/tx-signer/src/main/java/io/bytom/offline/api/Output.java b/tx-signer/src/main/java/io/bytom/offline/api/Output.java index 12eddaf..8f7a2b0 100644 --- a/tx-signer/src/main/java/io/bytom/offline/api/Output.java +++ b/tx-signer/src/main/java/io/bytom/offline/api/Output.java @@ -1,6 +1,7 @@ package io.bytom.offline.api; import io.bytom.offline.common.Utils; +import io.bytom.offline.common.VMUtil; import org.bouncycastle.util.encoders.Hex; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -39,7 +40,7 @@ public class Output { } public static Output newRetireOutput(String assetID, long amount, String arbitrary) { - String retireProgram = "6a" + Integer.toString(Hex.decode(arbitrary).length,16) + arbitrary; + String retireProgram = Hex.toHexString(new byte[]{VMUtil.OP_FAIL}) + Hex.toHexString(VMUtil.pushDataBytes(Hex.decode(arbitrary))); return new Output(assetID, amount, retireProgram); } diff --git a/tx-signer/src/main/java/io/bytom/offline/common/VMUtil.java b/tx-signer/src/main/java/io/bytom/offline/common/VMUtil.java index 2c4845a..c1b9130 100644 --- a/tx-signer/src/main/java/io/bytom/offline/common/VMUtil.java +++ b/tx-signer/src/main/java/io/bytom/offline/common/VMUtil.java @@ -5,13 +5,14 @@ import java.io.IOException; public class VMUtil { - private static final byte OP_0 = (byte) 0x00; - private static final byte OP_1 = (byte) 0x51; - private static final byte OP_PUSHDATA1 = (byte) 0x4c; - private static final byte OP_PUSHDATA2 = (byte) 0x4d; - private static final byte OP_PUSHDATA4 = (byte) 0x43; - private static final byte OP_TXSIGHASH = (byte) 0xae; - private static final byte OP_CHECKMULTISIG = (byte) 0xad; + public static final byte OP_0 = (byte) 0x00; + public static final byte OP_1 = (byte) 0x51; + public static final byte OP_PUSHDATA1 = (byte) 0x4c; + public static final byte OP_PUSHDATA2 = (byte) 0x4d; + public static final byte OP_PUSHDATA4 = (byte) 0x43; + public static final byte OP_TXSIGHASH = (byte) 0xae; + public static final byte OP_CHECKMULTISIG = (byte) 0xad; + public static final byte OP_FAIL = (byte) 0x6a; public static byte[] p2spMultiSigProgram(byte[][] pubKeys, int nRequired) { checkMultiSigParams(nRequired, pubKeys.length); @@ -37,7 +38,7 @@ public class VMUtil { } } - private static byte[] pushDataBytes(byte[] data) { + public static byte[] pushDataBytes(byte[] data) { int len = data.length; if (len == 0) { return new byte[] {OP_0}; -- 2.11.0