Skip to content

Commit fe83dad

Browse files
fletcher142FitzLu
authored andcommitted
add slash relevant tx parse
1 parent 4e77380 commit fe83dad

9 files changed

Lines changed: 265 additions & 51 deletions

File tree

src/main/java/com/binance/dex/api/client/TransactionConverter.java

Lines changed: 109 additions & 49 deletions
Large diffs are not rendered by default.

src/main/java/com/binance/dex/api/client/domain/broadcast/TxType.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,7 @@ public enum TxType {
3030
SIDECHAIN_UNBOND,
3131
CLAIM,
3232
TRANSFER_OUT,
33-
BIND
33+
BIND,
34+
BSC_SUBMIT_EVIDENCE,
35+
SIDECHAIN_UNJAIL
3436
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package com.binance.dex.api.client.domain.slash;
2+
3+
import com.binance.dex.api.client.encoding.serializer.BytesToPrefixedHexStringSerializer;
4+
import com.binance.dex.api.client.encoding.serializer.LongToHexStringSerializer;
5+
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
6+
import lombok.Getter;
7+
import lombok.Setter;
8+
9+
@Getter
10+
@Setter
11+
public class BscHeader {
12+
13+
@JsonSerialize(using = BytesToPrefixedHexStringSerializer.class)
14+
private byte[] parentHash;
15+
16+
@JsonSerialize(using = BytesToPrefixedHexStringSerializer.class)
17+
private byte[] sha3Uncles;
18+
19+
@JsonSerialize(using = BytesToPrefixedHexStringSerializer.class)
20+
private byte[] miner;
21+
22+
@JsonSerialize(using = BytesToPrefixedHexStringSerializer.class)
23+
private byte[] stateRoot;
24+
25+
@JsonSerialize(using = BytesToPrefixedHexStringSerializer.class)
26+
private byte[] transactionsRoot;
27+
28+
@JsonSerialize(using = BytesToPrefixedHexStringSerializer.class)
29+
private byte[] receiptsRoot;
30+
31+
@JsonSerialize(using = BytesToPrefixedHexStringSerializer.class)
32+
private byte[] logsBloom;
33+
34+
@JsonSerialize(using = LongToHexStringSerializer.class)
35+
private Long difficulty;
36+
37+
@JsonSerialize(using = LongToHexStringSerializer.class)
38+
private Long number;
39+
40+
@JsonSerialize(using = LongToHexStringSerializer.class)
41+
private Long gasLimit;
42+
43+
@JsonSerialize(using = LongToHexStringSerializer.class)
44+
private Long gasUsed;
45+
46+
@JsonSerialize(using = LongToHexStringSerializer.class)
47+
private Long timestamp;
48+
49+
@JsonSerialize(using = BytesToPrefixedHexStringSerializer.class)
50+
private byte[] extra;
51+
52+
@JsonSerialize(using = BytesToPrefixedHexStringSerializer.class)
53+
private byte[] mixHash;
54+
55+
@JsonSerialize(using = BytesToPrefixedHexStringSerializer.class)
56+
private byte[] nonce;
57+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.binance.dex.api.client.domain.slash;
2+
3+
import lombok.Getter;
4+
import lombok.Setter;
5+
6+
@Getter
7+
@Setter
8+
public class BscSubmitEvidence {
9+
10+
private String submitter;
11+
12+
private BscHeader[] headers;
13+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.binance.dex.api.client.domain.slash;
2+
3+
import lombok.Getter;
4+
import lombok.Setter;
5+
6+
@Getter
7+
@Setter
8+
public class SideChainUnJail {
9+
10+
private String validatorAddr;
11+
12+
private String sideChainId;
13+
14+
}

src/main/java/com/binance/dex/api/client/encoding/message/MessageType.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,10 @@ public enum MessageType {
4040
SideChainUndelegate("514F7E0E"),
4141
Claim("175A0521"),
4242
TransferOut("800819C0"),
43-
Bind("B9AE640C");
43+
Bind("B9AE640C"),
44+
BscSubmitEvidence("A38F1399"),
45+
SideChainUnJail("5681EC54");
46+
4447
private byte[] typePrefixBytes;
4548

4649
MessageType(String typePrefix) {
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.binance.dex.api.client.encoding.serializer;
2+
3+
import com.binance.dex.api.client.encoding.EncodeUtils;
4+
import com.fasterxml.jackson.core.JsonGenerator;
5+
import com.fasterxml.jackson.databind.JsonSerializer;
6+
import com.fasterxml.jackson.databind.SerializerProvider;
7+
8+
import java.io.IOException;
9+
10+
public class BytesToPrefixedHexStringSerializer extends JsonSerializer<byte[]> {
11+
12+
@Override
13+
public void serialize(byte[] bytes, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
14+
if(bytes != null){
15+
jsonGenerator.writeString("0x" + EncodeUtils.bytesToHex(bytes));
16+
}
17+
}
18+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.binance.dex.api.client.encoding.serializer;
2+
3+
import com.fasterxml.jackson.core.JsonGenerator;
4+
import com.fasterxml.jackson.databind.JsonSerializer;
5+
import com.fasterxml.jackson.databind.SerializerProvider;
6+
7+
import java.io.IOException;
8+
9+
public class LongToHexStringSerializer extends JsonSerializer<Long> {
10+
11+
@Override
12+
public void serialize(Long aLong, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
13+
if (aLong != null) {
14+
jsonGenerator.writeString("0x" + Long.toHexString(aLong));
15+
}
16+
}
17+
}

src/main/proto/dex.proto

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,36 @@ message ClaimHashTimerLockMsg {
342342
bytes random_number = 3;
343343
}
344344

345+
message SubmitEvidenceMsg {
346+
// A38F1399
347+
bytes submitter = 1;
348+
repeated BscHeader headers = 2;
349+
}
350+
351+
message BscHeader {
352+
bytes parentHash = 1;
353+
bytes sha3Uncles = 2;
354+
bytes miner = 3;
355+
bytes stateRoot = 4;
356+
bytes transactionsRoot = 5;
357+
bytes receiptsRoot = 6;
358+
bytes logsBloom = 7;
359+
int64 difficulty = 8;
360+
int64 number = 9;
361+
int64 gasLimit = 10;
362+
int64 gasUsed = 11;
363+
int64 timestamp = 12;
364+
bytes extraData = 13;
365+
bytes mixHash = 14;
366+
bytes nonce = 15;
367+
}
368+
369+
message SideChainUnJailMsg {
370+
// 5681EC54
371+
bytes address = 1;
372+
string side_chain_id = 2;
373+
}
374+
345375
message RefundHashTimerLockMsg {
346376
//
347377
bytes from = 1;

0 commit comments

Comments
 (0)