diff --git a/build.gradle b/build.gradle index c5dddfc9..0833b109 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,6 @@ plugins { apply plugin:'java' apply plugin:'maven' apply plugin:'maven-publish' -apply plugin:'signing' repositories { jcenter() @@ -88,6 +87,7 @@ uploadArchives { } if (project.hasProperty("signing.keyId")) { + apply plugin: 'signing' signing { sign configurations.archives } diff --git a/src/main/java/org/arkecosystem/crypto/transactions/Transaction.java b/src/main/java/org/arkecosystem/crypto/transactions/Transaction.java index 4794ba74..8252062d 100644 --- a/src/main/java/org/arkecosystem/crypto/transactions/Transaction.java +++ b/src/main/java/org/arkecosystem/crypto/transactions/Transaction.java @@ -12,6 +12,7 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; public class Transaction { @@ -31,6 +32,7 @@ public class Transaction { public String signature; public String signSignature; public String vendorField; + public String vendorFieldHex; public static Transaction deserialize(String serialized) { @@ -212,10 +214,52 @@ public String serialize() { } public String toJson() { + + HashMap map = new HashMap(); + map.put("network", this.network); + map.put("id", this.id); + map.put("timestamp", this.timestamp); + map.put("expiration", this.expiration); + map.put("type", this.type); + map.put("amount", this.amount); + map.put("fee", this.fee); + map.put("recipientId", this.recipientId); + map.put("signature", this.signature); + map.put("senderPublicKey", this.senderPublicKey); + + if (this.vendorField != null && !this.vendorField.isEmpty()) { + map.put("vendorField", this.vendorField); + } + + if (this.signSignature!= null && !this.signSignature.isEmpty()) { + map.put("signSignature", this.signSignature); + } + + HashMap asset = new HashMap(); + if (this.type == Types.SECOND_SIGNATURE_REGISTRATION) { + HashMap publicKey = new HashMap(); + publicKey.put("publicKey", this.asset.signature.publicKey); + asset.put("signature", publicKey); + } else if (this.type == Types.VOTE) { + asset.put("votes", this.asset.votes); + } else if (this.type == Types.DELEGATE_REGISTRATION) { + HashMap delegate = new HashMap(); + delegate.put("username", this.asset.delegate.username); + asset.put("delegate", delegate); + } else if (this.type == Types.MULTI_SIGNATURE_REGISTRATION) { + HashMap multisignature = new HashMap(); + multisignature.put("min", this.asset.multisignature.min); + multisignature.put("lifetime", this.asset.multisignature.lifetime); + multisignature.put("keysgroup", this.asset.multisignature.keysgroup); + asset.put("multisignature", multisignature); + } + + if (!asset.isEmpty()) { + map.put("asset", asset); + } + GsonBuilder gsonBuilder = new GsonBuilder(); - gsonBuilder.registerTypeAdapter(Types.class, new TransactionTypeDeserializer()); - gsonBuilder.registerTypeAdapter(Types.class, new TransactionTypeSerializer()); - return gsonBuilder.create().toJson(this); + return gsonBuilder.create().toJson(map); } private static class TransactionTypeDeserializer implements diff --git a/src/main/java/org/arkecosystem/crypto/transactions/builder/AbstractTransaction.java b/src/main/java/org/arkecosystem/crypto/transactions/builder/AbstractTransaction.java index 2d52a8b3..93f2abd3 100644 --- a/src/main/java/org/arkecosystem/crypto/transactions/builder/AbstractTransaction.java +++ b/src/main/java/org/arkecosystem/crypto/transactions/builder/AbstractTransaction.java @@ -13,6 +13,7 @@ public AbstractTransaction() { this.transaction.type = this.getType(); this.transaction.fee = Fee.get(this.getType()); this.transaction.timestamp = Slot.time(); + this.transaction.version = 1; } public AbstractTransaction sign(String passphrase) { diff --git a/src/main/java/org/arkecosystem/crypto/transactions/builder/MultiSignatureRegistration.java b/src/main/java/org/arkecosystem/crypto/transactions/builder/MultiSignatureRegistration.java index 76af1e0c..6b280264 100644 --- a/src/main/java/org/arkecosystem/crypto/transactions/builder/MultiSignatureRegistration.java +++ b/src/main/java/org/arkecosystem/crypto/transactions/builder/MultiSignatureRegistration.java @@ -36,7 +36,7 @@ public MultiSignatureRegistration keysgroup(List keysgroup) { } public Types getType() { - return Types.TRANSFER; + return Types.MULTI_SIGNATURE_REGISTRATION; } } diff --git a/src/main/java/org/arkecosystem/crypto/utils/Slot.java b/src/main/java/org/arkecosystem/crypto/utils/Slot.java index 0c22a716..da29a5a8 100644 --- a/src/main/java/org/arkecosystem/crypto/utils/Slot.java +++ b/src/main/java/org/arkecosystem/crypto/utils/Slot.java @@ -9,7 +9,7 @@ public class Slot { public static int time() { - return (int) (new Date().getTime() - epoch()) / 1000; + return (int)((new Date().getTime() - epoch()) / 1000); } public static long epoch() {