diff --git a/src/main/java/com/okexchain/msg/common/Data2Sign.java b/src/main/java/com/okexchain/msg/common/Data2Sign.java index 377ef30..d6a2ae7 100755 --- a/src/main/java/com/okexchain/msg/common/Data2Sign.java +++ b/src/main/java/com/okexchain/msg/common/Data2Sign.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.google.gson.annotations.SerializedName; +import com.okexchain.msg.tx.BoardcastTx; import com.okexchain.utils.Utils; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -88,16 +89,20 @@ public void setData(Fee fee) { @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE) - .append("account_number", accountNumber) - .append("chain_id", chainId) - .append("fee", fee) - .append("memo", memo) - .append("msgs", msgs) - .append("sequence", sequence) - .toString(); + .append("account_number", accountNumber) + .append("chain_id", chainId) + .append("fee", fee) + .append("memo", memo) + .append("msgs", msgs) + .append("sequence", sequence) + .toString(); } public String toJson() { return Utils.serializer.toJson(this); } + + public static Data2Sign fromJson(String json) { + return Utils.serializer.fromJson(json, Data2Sign.class); + } } diff --git a/src/main/java/com/okexchain/msg/tx/UnsignedTx.java b/src/main/java/com/okexchain/msg/tx/UnsignedTx.java index 002b0df..c1655e2 100644 --- a/src/main/java/com/okexchain/msg/tx/UnsignedTx.java +++ b/src/main/java/com/okexchain/msg/tx/UnsignedTx.java @@ -2,6 +2,7 @@ import com.okexchain.msg.common.Signature; import com.okexchain.msg.common.TxValue; +import com.okexchain.msg.common.Data2Sign; import java.util.ArrayList; import java.util.List; @@ -30,6 +31,7 @@ public BoardcastTx signed(Signature signature) { boardcastTx.getTx().setSignatures(signatureList); return boardcastTx; } + public BoardcastValue sign4gentx(Signature signature) { List signatureList = new ArrayList<>(); signatureList.add(signature); @@ -40,4 +42,18 @@ public BoardcastValue sign4gentx(Signature signature) { public String toString() { return unsignedTxJson; } + + + public static BoardcastTx genBroadcastTx(String unsignedTxStr, Signature signature) { + Data2Sign data = Data2Sign.fromJson(unsignedTxStr); + + TxValue txValue = new TxValue(); + txValue.setMsgs(data.getMsgs()); + txValue.setFee(data.getFee()); + txValue.setMemo(data.getMemo()); + + UnsignedTx unsignedTx = new UnsignedTx(txValue, unsignedTxStr); + + return unsignedTx.signed(signature); + } } diff --git a/src/main/java/com/okexchain/sample/ColdSign.java b/src/main/java/com/okexchain/sample/ColdSign.java index f9f340d..c45a899 100644 --- a/src/main/java/com/okexchain/sample/ColdSign.java +++ b/src/main/java/com/okexchain/sample/ColdSign.java @@ -19,10 +19,10 @@ public static void main(String[] args) { PrivateKey key = new PrivateKey("8145bfb1d3acc216c54490952c994d5e3bce09dd65ae73d0c79f892284f721e7"); MsgSend msg = new MsgSend(); - msg.init(key.getAddress(), key.getPubKey()); +// msg.init(key.getAddress(), key.getPubKey()); // or init by account number and sequence number - // msg.init(key.getPubKey(), "0", "10"); + msg.init(key.getPubKey(), "0", "10"); Message messages = msg.produceSendMsg( "okt", @@ -30,13 +30,16 @@ public static void main(String[] args) { "okexchain1v853tq96n9ghvyxlvqyxyj97589clccrufrkz9"); try { - UnsignedTx unsignedTx = msg.getUnsignedTx(messages,"0.01000000", "200000", "okexchain transfer!"); + UnsignedTx unsignedTx = msg.getUnsignedTx(messages, "0.01000000", "200000", "okexchain transfer!"); Signature signature = MsgBase.signTx(unsignedTx.toString(), key.getPriKey()); - BoardcastTx signedTx = unsignedTx.signed(signature); +// BoardcastTx signedTx = unsignedTx.signed(signature); + BoardcastTx signedTx = UnsignedTx.genBroadcastTx(unsignedTx.toString(), signature); + System.out.println(signedTx.toJson()); - MsgBase.boardcast(signedTx.toJson(), EnvInstance.getEnv().GetRestServerUrl()); + +// MsgBase.boardcast(signedTx.toJson(), EnvInstance.getEnv().GetRestServerUrl()); } catch (Exception e) { System.out.println("serialize transfer msg failed");