OSDN Git Service

fix retire
authorshenao78 <shenao.78@163.com>
Tue, 9 Apr 2019 06:28:09 +0000 (14:28 +0800)
committershenao78 <shenao.78@163.com>
Tue, 9 Apr 2019 06:28:09 +0000 (14:28 +0800)
tx-signer/src/main/java/io/bytom/offline/api/Output.java
tx-signer/src/main/java/io/bytom/offline/common/VMUtil.java

index 12eddaf..8f7a2b0 100644 (file)
@@ -1,6 +1,7 @@
 package io.bytom.offline.api;
 
 import io.bytom.offline.common.Utils;
 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;
 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) {
     }
 
     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);
     }
 
         return new Output(assetID, amount, retireProgram);
     }
 
index 2c4845a..c1b9130 100644 (file)
@@ -5,13 +5,14 @@ import java.io.IOException;
 
 public class VMUtil {
 
 
 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);
 
     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};
         int len = data.length;
         if (len == 0) {
             return new byte[] {OP_0};