Skip to content

Commit 520735f

Browse files
authored
feat: add transaction serialize method (#185)
1 parent 07ad144 commit 520735f

13 files changed

Lines changed: 48 additions & 31 deletions

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public Transaction deserialize() {
6161
deserializeCommon();
6262
deserializeVendorField();
6363

64-
this.transaction.deserialize(this.buffer);
64+
this.transaction.deserializeData(this.buffer);
6565

6666
deserializeSignatures();
6767

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public byte[] serialize(
3333
byte[] common = serializeCommon();
3434
byte[] vendorField = serializeVendorField();
3535

36-
byte[] typeBuffer = this.transaction.serialize();
36+
byte[] typeBuffer = this.transaction.serializeData();
3737

3838
byte[] signatures =
3939
serializeSignatures(skipSignature, skipSecondSignature, skipMultiSignature);

src/main/java/org/arkecosystem/crypto/transactions/types/MultiPayment.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public HashMap<String, Object> assetToHashMap() {
4343
}
4444

4545
@Override
46-
public byte[] serialize() {
46+
public byte[] serializeData() {
4747
ByteBuffer buffer = ByteBuffer.allocate(2 + this.asset.multiPayment.payments.size() * 28);
4848
buffer.order(ByteOrder.LITTLE_ENDIAN);
4949
buffer.putShort((short) this.asset.multiPayment.payments.size());
@@ -56,7 +56,7 @@ public byte[] serialize() {
5656
}
5757

5858
@Override
59-
public void deserialize(ByteBuffer buffer) {
59+
public void deserializeData(ByteBuffer buffer) {
6060
int paymentLength = buffer.getShort() & 0xff;
6161

6262
for (int i = 0; i < paymentLength; i++) {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public HashMap<String, Object> assetToHashMap() {
3232
}
3333

3434
@Override
35-
public byte[] serialize() {
35+
public byte[] serializeData() {
3636
ByteBuffer buffer =
3737
ByteBuffer.allocate(2 + this.asset.multiSignature.publicKeys.size() * 33);
3838
buffer.order(ByteOrder.LITTLE_ENDIAN);
@@ -48,7 +48,7 @@ public byte[] serialize() {
4848
}
4949

5050
@Override
51-
public void deserialize(ByteBuffer buffer) {
51+
public void deserializeData(ByteBuffer buffer) {
5252
this.asset.multiSignature.min = buffer.get();
5353

5454
int publicKeyLength = buffer.get();

src/main/java/org/arkecosystem/crypto/transactions/types/SecondSignatureRegistration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,15 @@ public HashMap<String, Object> assetToHashMap() {
3030
}
3131

3232
@Override
33-
public byte[] serialize() {
33+
public byte[] serializeData() {
3434
ByteBuffer buffer = ByteBuffer.allocate(33);
3535
buffer.order(ByteOrder.LITTLE_ENDIAN);
3636
buffer.put(Hex.decode(this.asset.signature.publicKey));
3737
return buffer.array();
3838
}
3939

4040
@Override
41-
public void deserialize(ByteBuffer buffer) {
41+
public void deserializeData(ByteBuffer buffer) {
4242
byte[] publicKeyBuffer = new byte[33];
4343
buffer.get(publicKeyBuffer);
4444
this.asset.signature.publicKey = Hex.encode(publicKeyBuffer);

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

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,14 @@ public void computeId() {
4141
}
4242

4343
public String getId() {
44-
return Hex.encode(Sha256Hash.hash(Serializer.serialize(this)));
44+
return Hex.encode(Sha256Hash.hash(this.serialize()));
4545
}
4646

4747
public Transaction sign(String passphrase) {
4848
ECKey privateKey = PrivateKey.fromPassphrase(passphrase);
4949

5050
this.senderPublicKey = privateKey.getPublicKeyAsHex();
51-
Sha256Hash hash = Sha256Hash.of(Serializer.serialize(this, true, true, false));
51+
Sha256Hash hash = Sha256Hash.of(this.serialize(true, true, false));
5252

5353
this.signature = Hex.encode(signer().sign(hash.getBytes(), privateKey));
5454

@@ -58,7 +58,7 @@ public Transaction sign(String passphrase) {
5858
public Transaction secondSign(String passphrase) {
5959
ECKey privateKey = PrivateKey.fromPassphrase(passphrase);
6060

61-
Sha256Hash hash = Sha256Hash.of(Serializer.serialize(this, false, true, false));
61+
Sha256Hash hash = Sha256Hash.of(this.serialize(false, true));
6262

6363
this.secondSignature = Hex.encode(signer().sign(hash.getBytes(), privateKey));
6464

@@ -89,7 +89,7 @@ public boolean verify() {
8989
ECKey keys = ECKey.fromPublicOnly(Hex.decode(this.senderPublicKey));
9090

9191
byte[] signature = Hex.decode(this.signature);
92-
byte[] hash = Sha256Hash.hash(Serializer.serialize(this, true, true, false));
92+
byte[] hash = Sha256Hash.hash(this.serialize(true, true, false));
9393

9494
return verifier().verify(hash, keys, signature);
9595
}
@@ -98,7 +98,7 @@ public boolean secondVerify(String secondPublicKey) {
9898
ECKey keys = ECKey.fromPublicOnly(Hex.decode(secondPublicKey));
9999

100100
byte[] signature = Hex.decode(this.secondSignature);
101-
byte[] hash = Sha256Hash.hash(Serializer.serialize(this, false, true, false));
101+
byte[] hash = Sha256Hash.hash(this.serialize(false, true, false));
102102

103103
return verifier().verify(hash, keys, signature);
104104
}
@@ -145,9 +145,26 @@ public HashMap toHashMap() {
145145
return map;
146146
}
147147

148-
public abstract byte[] serialize();
148+
public byte[] serialize(
149+
boolean skipSignature, boolean skipSecondSignature, boolean skipMultiSignature) {
150+
return Serializer.serialize(this, skipSignature, skipSecondSignature, skipMultiSignature);
151+
}
152+
153+
public byte[] serialize(boolean skipSignature, boolean skipSecondSignature) {
154+
return serialize(skipSignature, skipSecondSignature, false);
155+
}
156+
157+
public byte[] serialize(boolean skipSignature) {
158+
return serialize(skipSignature, false, false);
159+
}
160+
161+
public byte[] serialize() {
162+
return serialize(false, false, false);
163+
}
164+
165+
public abstract byte[] serializeData();
149166

150-
public abstract void deserialize(ByteBuffer buffer);
167+
public abstract void deserializeData(ByteBuffer buffer);
151168

152169
public abstract int getTransactionType();
153170

src/main/java/org/arkecosystem/crypto/transactions/types/Transfer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public HashMap<String, Object> assetToHashMap() {
3131
}
3232

3333
@Override
34-
public byte[] serialize() {
34+
public byte[] serializeData() {
3535
ByteBuffer buffer = ByteBuffer.allocate(32);
3636
buffer.order(ByteOrder.LITTLE_ENDIAN);
3737
buffer.putLong(this.amount);
@@ -45,7 +45,7 @@ public byte[] serialize() {
4545
}
4646

4747
@Override
48-
public void deserialize(ByteBuffer buffer) {
48+
public void deserializeData(ByteBuffer buffer) {
4949
buffer.order(ByteOrder.LITTLE_ENDIAN);
5050

5151
this.amount = buffer.getLong();

src/main/java/org/arkecosystem/crypto/transactions/types/UsernameRegistration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public HashMap<String, Object> assetToHashMap() {
2727
}
2828

2929
@Override
30-
public byte[] serialize() {
30+
public byte[] serializeData() {
3131
byte[] username = this.asset.username.getBytes();
3232

3333
ByteBuffer buffer = ByteBuffer.allocate(username.length + 1);
@@ -41,7 +41,7 @@ public byte[] serialize() {
4141
}
4242

4343
@Override
44-
public void deserialize(ByteBuffer buffer) {
44+
public void deserializeData(ByteBuffer buffer) {
4545
int usernameLength = buffer.get() & 0xff;
4646

4747
byte[] username = new byte[usernameLength];

src/main/java/org/arkecosystem/crypto/transactions/types/UsernameResignation.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ public HashMap<String, Object> assetToHashMap() {
2222
}
2323

2424
@Override
25-
public byte[] serialize() {
25+
public byte[] serializeData() {
2626
return new byte[0];
2727
}
2828

2929
@Override
30-
public void deserialize(ByteBuffer buffer) {}
30+
public void deserializeData(ByteBuffer buffer) {}
3131
}

src/main/java/org/arkecosystem/crypto/transactions/types/ValidatorRegistration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public HashMap<String, Object> assetToHashMap() {
2828
}
2929

3030
@Override
31-
public byte[] serialize() {
31+
public byte[] serializeData() {
3232
ByteBuffer buffer = ByteBuffer.allocate(48);
3333
buffer.order(ByteOrder.LITTLE_ENDIAN);
3434
buffer.put(Hex.decode(this.asset.validatorPublicKey));
@@ -37,7 +37,7 @@ public byte[] serialize() {
3737
}
3838

3939
@Override
40-
public void deserialize(ByteBuffer buffer) {
40+
public void deserializeData(ByteBuffer buffer) {
4141
byte[] validatorPublicKey = new byte[48];
4242
buffer.get(validatorPublicKey);
4343
this.asset.validatorPublicKey = Hex.encode(validatorPublicKey);

0 commit comments

Comments
 (0)