diff --git a/portal-bridge/src/types/beacon.rs b/portal-bridge/src/types/beacon.rs index 9ef05b7..6c58b6c 100644 --- a/portal-bridge/src/types/beacon.rs +++ b/portal-bridge/src/types/beacon.rs @@ -3,24 +3,24 @@ use serde::{Deserialize, Serialize}; use crate::types::witness::ExecutionWitness; -#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct SignedBeaconBlock { pub message: BeaconBlock, } -#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct BeaconBlock { pub parent_root: B256, pub state_root: B256, pub body: BeaconBlockBody, } -#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct BeaconBlockBody { pub execution_payload: ExecutionPayload, } -#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct ExecutionPayload { pub block_number: U64, pub block_hash: B256, diff --git a/portal-bridge/src/types/genesis.rs b/portal-bridge/src/types/genesis.rs index 1dae05e..5c60901 100644 --- a/portal-bridge/src/types/genesis.rs +++ b/portal-bridge/src/types/genesis.rs @@ -6,7 +6,7 @@ use verkle_core::{storage::AccountStorageLayout, Stem, TrieKey, TrieValue}; use super::witness::{StateDiff, StemStateDiff, SuffixStateDiff}; -#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[serde(deny_unknown_fields)] pub struct AccountAlloc { pub balance: U256, @@ -15,7 +15,7 @@ pub struct AccountAlloc { pub storage: Option>, } -#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct GenesisConfig { pub alloc: HashMap, } diff --git a/portal-bridge/src/types/mod.rs b/portal-bridge/src/types/mod.rs index 9b510cd..ddef711 100644 --- a/portal-bridge/src/types/mod.rs +++ b/portal-bridge/src/types/mod.rs @@ -7,7 +7,7 @@ pub mod genesis; pub mod state_write; pub mod witness; -#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct JsonResponseMessage { pub data: SignedBeaconBlock, } diff --git a/portal-bridge/src/types/state_write.rs b/portal-bridge/src/types/state_write.rs index 81fb036..d8f237a 100644 --- a/portal-bridge/src/types/state_write.rs +++ b/portal-bridge/src/types/state_write.rs @@ -3,7 +3,7 @@ use verkle_core::{Stem, TrieValue}; use super::witness::{StateDiff, StemStateDiff, SuffixStateDiff}; -#[derive(Debug, Clone)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct SuffixStateWrites { pub suffix: u8, pub old_value: Option, @@ -30,7 +30,7 @@ impl SuffixStateWrites { } } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct StemStateWrite { pub stem: Stem, pub suffix_writes: Vec, diff --git a/portal-bridge/src/types/witness.rs b/portal-bridge/src/types/witness.rs index 52915ff..e8d4510 100644 --- a/portal-bridge/src/types/witness.rs +++ b/portal-bridge/src/types/witness.rs @@ -3,7 +3,7 @@ use serde::{Deserialize, Serialize}; use serde_nested_with::serde_nested; use verkle_core::{proof::IpaProof, Point, Stem, TrieValue}; -#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[serde(deny_unknown_fields)] pub struct SuffixStateDiff { pub suffix: U8, @@ -13,7 +13,7 @@ pub struct SuffixStateDiff { pub new_value: Option, } -#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[serde(deny_unknown_fields)] pub struct StemStateDiff { pub stem: Stem, @@ -24,7 +24,7 @@ pub struct StemStateDiff { pub type StateDiff = Vec; #[serde_nested] -#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[serde(deny_unknown_fields)] pub struct VerkleProof { #[serde(alias = "otherStems")] @@ -38,7 +38,7 @@ pub struct VerkleProof { pub ipa_proof: IpaProof, } -#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[serde(deny_unknown_fields)] pub struct ExecutionWitness { #[serde(alias = "stateDiff")] diff --git a/portal-verkle-trie/src/nodes/portal/ssz/mod.rs b/portal-verkle-trie/src/nodes/portal/ssz/mod.rs index 6ebe51a..5a2faa5 100644 --- a/portal-verkle-trie/src/nodes/portal/ssz/mod.rs +++ b/portal-verkle-trie/src/nodes/portal/ssz/mod.rs @@ -7,7 +7,7 @@ pub mod sparse_vector; pub type TriePath = VariableList; -#[derive(Debug, Clone, Encode, Decode)] +#[derive(Debug, Clone, PartialEq, Eq, Encode, Decode)] pub struct TrieProof { pub commitments_by_path: VariableList, pub multi_point_proof: MultiPointProof, diff --git a/portal-verkle-trie/src/nodes/portal/ssz/nodes.rs b/portal-verkle-trie/src/nodes/portal/ssz/nodes.rs index 9c643f8..eca28d0 100644 --- a/portal-verkle-trie/src/nodes/portal/ssz/nodes.rs +++ b/portal-verkle-trie/src/nodes/portal/ssz/nodes.rs @@ -4,13 +4,13 @@ use verkle_core::{constants::PORTAL_NETWORK_NODE_WIDTH, Point, Stem, TrieValue}; use super::{sparse_vector::SparseVector, BundleProof, TriePath, TrieProof}; -#[derive(Debug, Clone, Encode, Decode)] +#[derive(Debug, Clone, PartialEq, Eq, Encode, Decode)] pub struct BranchBundleNode { pub fragments: SparseVector, pub proof: BundleProof, } -#[derive(Debug, Clone, Encode, Decode)] +#[derive(Debug, Clone, PartialEq, Eq, Encode, Decode)] pub struct BranchBundleNodeWithProof { pub node: BranchBundleNode, pub block_hash: B256, @@ -18,13 +18,13 @@ pub struct BranchBundleNodeWithProof { pub proof: TrieProof, } -#[derive(Debug, Clone, Encode, Decode)] +#[derive(Debug, Clone, PartialEq, Eq, Encode, Decode)] pub struct BranchFragmentNode { pub fragment_index: u8, pub children: SparseVector, } -#[derive(Debug, Clone, Encode, Decode)] +#[derive(Debug, Clone, PartialEq, Eq, Encode, Decode)] pub struct BranchFragmentNodeWithProof { pub node: BranchFragmentNode, pub block_hash: B256, @@ -32,7 +32,7 @@ pub struct BranchFragmentNodeWithProof { pub proof: TrieProof, } -#[derive(Debug, Clone, Encode, Decode)] +#[derive(Debug, Clone, PartialEq, Eq, Encode, Decode)] pub struct LeafBundleNode { pub marker: u64, pub stem: Stem, @@ -40,20 +40,20 @@ pub struct LeafBundleNode { pub proof: BundleProof, } -#[derive(Debug, Clone, Encode, Decode)] +#[derive(Debug, Clone, PartialEq, Eq, Encode, Decode)] pub struct LeafBundleNodeWithProof { pub node: LeafBundleNode, pub block_hash: B256, pub proof: TrieProof, } -#[derive(Debug, Clone, Encode, Decode)] +#[derive(Debug, Clone, PartialEq, Eq, Encode, Decode)] pub struct LeafFragmentNode { pub fragment_index: u8, pub children: SparseVector, } -#[derive(Debug, Clone, Encode, Decode)] +#[derive(Debug, Clone, PartialEq, Eq, Encode, Decode)] pub struct LeafFragmentNodeWithProof { pub node: LeafFragmentNode, pub block_hash: B256, diff --git a/verkle-core/src/proof/mod.rs b/verkle-core/src/proof/mod.rs index 33b9a22..58ad7ca 100644 --- a/verkle-core/src/proof/mod.rs +++ b/verkle-core/src/proof/mod.rs @@ -5,7 +5,7 @@ use ssz_types::{typenum, FixedVector}; use crate::{Point, ScalarField}; /// The multi-point proof based on IPA. -#[derive(Debug, Clone, Serialize, Deserialize, Encode, Decode)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Encode, Decode)] #[serde(deny_unknown_fields)] pub struct MultiPointProof { #[serde(alias = "ipaProof")] @@ -15,7 +15,7 @@ pub struct MultiPointProof { } /// The inner product argument proof. -#[derive(Debug, Clone, Serialize, Deserialize, Encode, Decode)] +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Encode, Decode)] #[serde(deny_unknown_fields)] pub struct IpaProof { pub cl: FixedVector, @@ -23,3 +23,6 @@ pub struct IpaProof { #[serde(alias = "finalEvaluation")] pub final_evaluation: ScalarField, } + +// TODO: Add this to Derive once ssz_types updates. +impl Eq for IpaProof {}