Skip to content

Commit 75f0ca8

Browse files
spkjpfaustbrian
authored andcommitted
fix: properly construct the JSON transaction (#23)
1 parent 8b75414 commit 75f0ca8

File tree

5 files changed

+51
-6
lines changed

5 files changed

+51
-6
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ plugins {
99
apply plugin:'java'
1010
apply plugin:'maven'
1111
apply plugin:'maven-publish'
12-
apply plugin:'signing'
1312

1413
repositories {
1514
jcenter()
@@ -88,6 +87,7 @@ uploadArchives {
8887
}
8988

9089
if (project.hasProperty("signing.keyId")) {
90+
apply plugin: 'signing'
9191
signing {
9292
sign configurations.archives
9393
}

src/main/java/org/arkecosystem/crypto/transactions/Transaction.java

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import java.nio.ByteBuffer;
1313
import java.nio.ByteOrder;
1414
import java.util.ArrayList;
15+
import java.util.HashMap;
1516
import java.util.List;
1617

1718
public class Transaction {
@@ -31,6 +32,7 @@ public class Transaction {
3132
public String signature;
3233
public String signSignature;
3334
public String vendorField;
35+
3436
public String vendorFieldHex;
3537

3638
public static Transaction deserialize(String serialized) {
@@ -212,10 +214,52 @@ public String serialize() {
212214
}
213215

214216
public String toJson() {
217+
218+
HashMap<String, Object> map = new HashMap<String, Object>();
219+
map.put("network", this.network);
220+
map.put("id", this.id);
221+
map.put("timestamp", this.timestamp);
222+
map.put("expiration", this.expiration);
223+
map.put("type", this.type);
224+
map.put("amount", this.amount);
225+
map.put("fee", this.fee);
226+
map.put("recipientId", this.recipientId);
227+
map.put("signature", this.signature);
228+
map.put("senderPublicKey", this.senderPublicKey);
229+
230+
if (this.vendorField != null && !this.vendorField.isEmpty()) {
231+
map.put("vendorField", this.vendorField);
232+
}
233+
234+
if (this.signSignature!= null && !this.signSignature.isEmpty()) {
235+
map.put("signSignature", this.signSignature);
236+
}
237+
238+
HashMap<String, Object> asset = new HashMap();
239+
if (this.type == Types.SECOND_SIGNATURE_REGISTRATION) {
240+
HashMap<String, String> publicKey = new HashMap();
241+
publicKey.put("publicKey", this.asset.signature.publicKey);
242+
asset.put("signature", publicKey);
243+
} else if (this.type == Types.VOTE) {
244+
asset.put("votes", this.asset.votes);
245+
} else if (this.type == Types.DELEGATE_REGISTRATION) {
246+
HashMap<String, String> delegate = new HashMap();
247+
delegate.put("username", this.asset.delegate.username);
248+
asset.put("delegate", delegate);
249+
} else if (this.type == Types.MULTI_SIGNATURE_REGISTRATION) {
250+
HashMap<String, Object> multisignature = new HashMap();
251+
multisignature.put("min", this.asset.multisignature.min);
252+
multisignature.put("lifetime", this.asset.multisignature.lifetime);
253+
multisignature.put("keysgroup", this.asset.multisignature.keysgroup);
254+
asset.put("multisignature", multisignature);
255+
}
256+
257+
if (!asset.isEmpty()) {
258+
map.put("asset", asset);
259+
}
260+
215261
GsonBuilder gsonBuilder = new GsonBuilder();
216-
gsonBuilder.registerTypeAdapter(Types.class, new TransactionTypeDeserializer());
217-
gsonBuilder.registerTypeAdapter(Types.class, new TransactionTypeSerializer());
218-
return gsonBuilder.create().toJson(this);
262+
return gsonBuilder.create().toJson(map);
219263
}
220264

221265
private static class TransactionTypeDeserializer implements

src/main/java/org/arkecosystem/crypto/transactions/builder/AbstractTransaction.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public AbstractTransaction() {
1313
this.transaction.type = this.getType();
1414
this.transaction.fee = Fee.get(this.getType());
1515
this.transaction.timestamp = Slot.time();
16+
this.transaction.version = 1;
1617
}
1718

1819
public AbstractTransaction sign(String passphrase) {

src/main/java/org/arkecosystem/crypto/transactions/builder/MultiSignatureRegistration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public MultiSignatureRegistration keysgroup(List<String> keysgroup) {
3636
}
3737

3838
public Types getType() {
39-
return Types.TRANSFER;
39+
return Types.MULTI_SIGNATURE_REGISTRATION;
4040
}
4141

4242
}

src/main/java/org/arkecosystem/crypto/utils/Slot.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
public class Slot {
1111
public static int time() {
12-
return (int) (new Date().getTime() - epoch()) / 1000;
12+
return (int)((new Date().getTime() - epoch()) / 1000);
1313
}
1414

1515
public static long epoch() {

0 commit comments

Comments
 (0)