Skip to content

Commit

Permalink
refactor: move IpaProof into verkle-core
Browse files Browse the repository at this point in the history
  • Loading branch information
morph-dev committed Jun 28, 2024
1 parent 5006be9 commit bd89c80
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 20 deletions.
8 changes: 4 additions & 4 deletions portal-bridge/src/types/beacon.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,24 @@ use serde::{Deserialize, Serialize};

use crate::types::witness::ExecutionWitness;

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SignedBeaconBlock {
pub message: BeaconBlock,
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BeaconBlock {
pub parent_root: B256,
pub state_root: B256,
pub body: BeaconBlockBody,
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BeaconBlockBody {
pub execution_payload: ExecutionPayload,
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecutionPayload {
pub block_number: U64,
pub block_hash: B256,
Expand Down
2 changes: 1 addition & 1 deletion portal-bridge/src/types/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ pub mod beacon;
pub mod genesis;
pub mod witness;

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct JsonResponseMessage {
pub data: SignedBeaconBlock,
}
Expand Down
20 changes: 5 additions & 15 deletions portal-bridge/src/types/witness.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
use alloy_primitives::{Bytes, U8};
use serde::{Deserialize, Serialize};
use serde_nested_with::serde_nested;
use verkle_core::{constants::VERKLE_NODE_WIDTH_BITS, Point, ScalarField, Stem, TrieValue};
use verkle_core::{proof::IpaProof, Point, Stem, TrieValue};

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct ExecutionWitness {
#[serde(alias = "stateDiff")]
Expand All @@ -12,15 +12,15 @@ pub struct ExecutionWitness {
pub verkle_proof: VerkleProof,
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct StemStateDiff {
pub stem: Stem,
#[serde(alias = "suffixDiffs")]
pub suffix_diffs: Vec<SuffixStateDiff>,
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct SuffixStateDiff {
pub suffix: U8,
Expand All @@ -31,7 +31,7 @@ pub struct SuffixStateDiff {
}

#[serde_nested]
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct VerkleProof {
#[serde(alias = "otherStems")]
Expand All @@ -44,13 +44,3 @@ pub struct VerkleProof {
#[serde(alias = "ipaProof")]
pub ipa_proof: IpaProof,
}

#[serde_nested]
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct IpaProof {
pub cl: [Point; VERKLE_NODE_WIDTH_BITS],
pub cr: [Point; VERKLE_NODE_WIDTH_BITS],
#[serde(alias = "finalEvaluation")]
pub final_evaluation: ScalarField,
}
1 change: 1 addition & 0 deletions verkle-core/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ pub mod constants;

mod ec;
pub mod msm;
pub mod proof;
mod stem;
pub mod storage;
mod trie_key;
Expand Down
25 changes: 25 additions & 0 deletions verkle-core/src/proof/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
use serde::{Deserialize, Serialize};
use ssz_derive::{Decode, Encode};
use ssz_types::{typenum, FixedVector};

use crate::{Point, ScalarField};

/// The multi-point proof based on IPA.
#[derive(Debug, Clone, Serialize, Deserialize, Encode, Decode)]
#[serde(deny_unknown_fields)]
pub struct MultiPointProof {
#[serde(alias = "ipaProof")]
pub ipa_proof: IpaProof,
#[serde(alias = "gX")]
pub g_x: Point,
}

/// The inner product argument proof.
#[derive(Debug, Clone, Serialize, Deserialize, Encode, Decode)]
#[serde(deny_unknown_fields)]
pub struct IpaProof {
pub cl: FixedVector<Point, typenum::U8>,
pub cr: FixedVector<Point, typenum::U8>,
#[serde(alias = "finalEvaluation")]
pub final_evaluation: ScalarField,
}

0 comments on commit bd89c80

Please sign in to comment.