From 981363bfaa4423e01d36946101a7a8a1bf3dda4b Mon Sep 17 00:00:00 2001 From: Oleksandr Date: Fri, 21 Feb 2025 18:33:22 +0200 Subject: [PATCH 1/2] Beefy data structure definition and implementation --- .../java/com/limechain/beefy/dto/Commitment.java | 13 +++++++++++++ .../com/limechain/beefy/dto/PayloadElement.java | 9 +++++++++ .../com/limechain/beefy/dto/SignedCommitment.java | 13 +++++++++++++ .../beefy/dto/SignedCommitmentWitness.java | 13 +++++++++++++ .../java/com/limechain/beefy/dto/ValidatorSet.java | 12 ++++++++++++ .../java/com/limechain/beefy/dto/VoteMessage.java | 13 +++++++++++++ 6 files changed, 73 insertions(+) create mode 100644 src/main/java/com/limechain/beefy/dto/Commitment.java create mode 100644 src/main/java/com/limechain/beefy/dto/PayloadElement.java create mode 100644 src/main/java/com/limechain/beefy/dto/SignedCommitment.java create mode 100644 src/main/java/com/limechain/beefy/dto/SignedCommitmentWitness.java create mode 100644 src/main/java/com/limechain/beefy/dto/ValidatorSet.java create mode 100644 src/main/java/com/limechain/beefy/dto/VoteMessage.java diff --git a/src/main/java/com/limechain/beefy/dto/Commitment.java b/src/main/java/com/limechain/beefy/dto/Commitment.java new file mode 100644 index 000000000..46acfe27f --- /dev/null +++ b/src/main/java/com/limechain/beefy/dto/Commitment.java @@ -0,0 +1,13 @@ +package com.limechain.beefy.dto; + +import lombok.Data; + +import java.math.BigInteger; +import java.util.List; + +@Data +public class Commitment { + private List payload; + private BigInteger blockNumber; + private BigInteger validatorSetId; +} diff --git a/src/main/java/com/limechain/beefy/dto/PayloadElement.java b/src/main/java/com/limechain/beefy/dto/PayloadElement.java new file mode 100644 index 000000000..113ebf3db --- /dev/null +++ b/src/main/java/com/limechain/beefy/dto/PayloadElement.java @@ -0,0 +1,9 @@ +package com.limechain.beefy.dto; + +import lombok.Data; + +@Data +public class PayloadElement { + private byte[] payloadId; + private byte[] data; +} diff --git a/src/main/java/com/limechain/beefy/dto/SignedCommitment.java b/src/main/java/com/limechain/beefy/dto/SignedCommitment.java new file mode 100644 index 000000000..56985cede --- /dev/null +++ b/src/main/java/com/limechain/beefy/dto/SignedCommitment.java @@ -0,0 +1,13 @@ +package com.limechain.beefy.dto; + +import com.limechain.runtime.hostapi.dto.Signature; +import lombok.Data; + +import java.util.List; +import java.util.Optional; + +@Data +public class SignedCommitment { + private Commitment commitment; + private List> signature; +} diff --git a/src/main/java/com/limechain/beefy/dto/SignedCommitmentWitness.java b/src/main/java/com/limechain/beefy/dto/SignedCommitmentWitness.java new file mode 100644 index 000000000..fe6f85c84 --- /dev/null +++ b/src/main/java/com/limechain/beefy/dto/SignedCommitmentWitness.java @@ -0,0 +1,13 @@ +package com.limechain.beefy.dto; + +import com.limechain.runtime.hostapi.dto.Signature; +import lombok.Data; + +import java.util.List; + +@Data +public class SignedCommitmentWitness { + private Commitment commitment; + private List signedBy; + private Signature signature; +} diff --git a/src/main/java/com/limechain/beefy/dto/ValidatorSet.java b/src/main/java/com/limechain/beefy/dto/ValidatorSet.java new file mode 100644 index 000000000..87c6fb300 --- /dev/null +++ b/src/main/java/com/limechain/beefy/dto/ValidatorSet.java @@ -0,0 +1,12 @@ +package com.limechain.beefy.dto; + +import io.libp2p.core.crypto.PubKey; +import lombok.Data; + +import java.util.List; + +@Data +public class ValidatorSet { + List validators; + private long id; +} diff --git a/src/main/java/com/limechain/beefy/dto/VoteMessage.java b/src/main/java/com/limechain/beefy/dto/VoteMessage.java new file mode 100644 index 000000000..4466f0b48 --- /dev/null +++ b/src/main/java/com/limechain/beefy/dto/VoteMessage.java @@ -0,0 +1,13 @@ +package com.limechain.beefy.dto; + +import com.limechain.runtime.hostapi.dto.Signature; +import lombok.Data; + +import java.math.BigInteger; + +@Data +public class VoteMessage { + private Commitment commitment; + private BigInteger authorityId; + private Signature signature; +} From d6f04a17c1b75c69f89f198e987cd10658a6c4e0 Mon Sep 17 00:00:00 2001 From: Oleksandr Date: Mon, 24 Feb 2025 22:44:17 +0200 Subject: [PATCH 2/2] fix comments --- .../limechain/beefy/dto/BeefyPayloadId.java | 24 +++++++++++++++++++ .../limechain/beefy/dto/PayloadElement.java | 4 ++-- .../beefy/dto/SignedCommitmentWitness.java | 13 ---------- .../com/limechain/beefy/dto/ValidatorSet.java | 4 ++-- 4 files changed, 28 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/limechain/beefy/dto/BeefyPayloadId.java delete mode 100644 src/main/java/com/limechain/beefy/dto/SignedCommitmentWitness.java diff --git a/src/main/java/com/limechain/beefy/dto/BeefyPayloadId.java b/src/main/java/com/limechain/beefy/dto/BeefyPayloadId.java new file mode 100644 index 000000000..e7a6f202d --- /dev/null +++ b/src/main/java/com/limechain/beefy/dto/BeefyPayloadId.java @@ -0,0 +1,24 @@ +package com.limechain.beefy.dto; + +public enum BeefyPayloadId { + MMR(new byte[]{'m', 'h'}); + + private final byte[] id; + + BeefyPayloadId(byte[] id) { + this.id = id; + } + + public byte[] getId() { + return id; + } + + public static BeefyPayloadId fromBytes(byte[] bytes) { + for (BeefyPayloadId value : values()) { + if (java.util.Arrays.equals(value.id, bytes)) { + return value; + } + } + throw new IllegalArgumentException("Unknown BeefyPayloadId: " + java.util.Arrays.toString(bytes)); + } +} \ No newline at end of file diff --git a/src/main/java/com/limechain/beefy/dto/PayloadElement.java b/src/main/java/com/limechain/beefy/dto/PayloadElement.java index 113ebf3db..33e0b7a80 100644 --- a/src/main/java/com/limechain/beefy/dto/PayloadElement.java +++ b/src/main/java/com/limechain/beefy/dto/PayloadElement.java @@ -4,6 +4,6 @@ @Data public class PayloadElement { - private byte[] payloadId; - private byte[] data; + private BeefyPayloadId payloadId; + private byte[] data; } diff --git a/src/main/java/com/limechain/beefy/dto/SignedCommitmentWitness.java b/src/main/java/com/limechain/beefy/dto/SignedCommitmentWitness.java deleted file mode 100644 index fe6f85c84..000000000 --- a/src/main/java/com/limechain/beefy/dto/SignedCommitmentWitness.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.limechain.beefy.dto; - -import com.limechain.runtime.hostapi.dto.Signature; -import lombok.Data; - -import java.util.List; - -@Data -public class SignedCommitmentWitness { - private Commitment commitment; - private List signedBy; - private Signature signature; -} diff --git a/src/main/java/com/limechain/beefy/dto/ValidatorSet.java b/src/main/java/com/limechain/beefy/dto/ValidatorSet.java index 87c6fb300..d1b6bb13a 100644 --- a/src/main/java/com/limechain/beefy/dto/ValidatorSet.java +++ b/src/main/java/com/limechain/beefy/dto/ValidatorSet.java @@ -7,6 +7,6 @@ @Data public class ValidatorSet { - List validators; - private long id; + private List validators; + private long id; }