Skip to content

Commit 237b4de

Browse files
bet
1 parent 139b201 commit 237b4de

File tree

3 files changed

+57
-43
lines changed

3 files changed

+57
-43
lines changed

crates/common/src/tree.rs

Lines changed: 56 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,65 @@ use jmt::{
66
storage::{NodeBatch, TreeReader, TreeUpdateBatch, TreeWriter},
77
JellyfishMerkleTree, KeyHash, RootHash, SimpleHasher,
88
};
9-
use serde::{Deserialize, Serialize};
9+
use serde::{ser::SerializeTupleStruct, Deserialize, Serialize};
1010
use std::sync::Arc;
1111

1212
use crate::hashchain::Hashchain;
1313

1414
pub const SPARSE_MERKLE_PLACEHOLDER_HASH: Digest =
1515
Digest::new(*b"SPARSE_MERKLE_PLACEHOLDER_HASH__");
1616

17-
pub type Hasher = sha2::Sha256;
17+
#[derive(Debug, Clone, Default)]
18+
pub struct Hasher(sha2::Sha256);
19+
20+
impl Serialize for Hasher {
21+
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
22+
where
23+
S: serde::Serializer,
24+
{
25+
serializer.serialize_tuple_struct("Sha256Wrapper", 0)?.end()
26+
}
27+
}
28+
29+
impl<'de> Deserialize<'de> for Hasher {
30+
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
31+
where
32+
D: serde::Deserializer<'de>,
33+
{
34+
struct Sha256WrapperVisitor;
35+
36+
impl<'de> serde::de::Visitor<'de> for Sha256WrapperVisitor {
37+
type Value = Hasher;
38+
39+
fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
40+
formatter.write_str("a Sha256Wrapper")
41+
}
42+
43+
fn visit_seq<A>(self, _seq: A) -> Result<Self::Value, A::Error>
44+
where
45+
A: serde::de::SeqAccess<'de>,
46+
{
47+
Ok(Hasher::default())
48+
}
49+
}
50+
51+
deserializer.deserialize_tuple_struct("Sha256Wrapper", 0, Sha256WrapperVisitor)
52+
}
53+
}
54+
55+
impl SimpleHasher for Hasher {
56+
fn new() -> Self {
57+
Self(sha2::Sha256::new())
58+
}
59+
60+
fn update(&mut self, data: &[u8]) {
61+
self.0.update(data);
62+
}
63+
64+
fn finalize(self) -> [u8; 32] {
65+
self.0.finalize()
66+
}
67+
}
1868

1969
pub fn hash(data: &[u8]) -> Digest {
2070
let mut hasher = Hasher::new();
@@ -109,49 +159,13 @@ pub struct Batch {
109159
pub proofs: Vec<Proof>,
110160
}
111161

112-
impl Serialize for Proof {
113-
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
114-
where
115-
S: serde::Serializer,
116-
{
117-
let bytes = bincode::serialize(self).map_err(serde::ser::Error::custom)?;
118-
serializer.serialize_bytes(&bytes)
119-
}
120-
}
121-
122-
impl<'de> Deserialize<'de> for Proof {
123-
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
124-
where
125-
D: serde::Deserializer<'de>,
126-
{
127-
struct ProofVisitor;
128-
129-
impl<'de> serde::de::Visitor<'de> for ProofVisitor {
130-
type Value = Proof;
131-
132-
fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
133-
formatter.write_str("a byte array containing serialized Proof")
134-
}
135-
136-
fn visit_bytes<E>(self, v: &[u8]) -> Result<Self::Value, E>
137-
where
138-
E: serde::de::Error,
139-
{
140-
bincode::deserialize(v).map_err(serde::de::Error::custom)
141-
}
142-
}
143-
144-
deserializer.deserialize_bytes(ProofVisitor)
145-
}
146-
}
147-
148-
#[derive(Debug, Clone)]
162+
#[derive(Debug, Clone, Serialize, Deserialize)]
149163
pub enum Proof {
150164
Update(UpdateProof),
151165
Insert(InsertProof),
152166
}
153167

154-
#[derive(Debug, Clone)]
168+
#[derive(Debug, Clone, Serialize, Deserialize)]
155169
pub struct NonMembershipProof {
156170
pub root: Digest,
157171
pub proof: SparseMerkleProof<Hasher>,
@@ -164,7 +178,7 @@ impl NonMembershipProof {
164178
}
165179
}
166180

167-
#[derive(Debug, Clone)]
181+
#[derive(Debug, Clone, Serialize, Deserialize)]
168182
pub struct InsertProof {
169183
pub non_membership_proof: NonMembershipProof,
170184

@@ -191,7 +205,7 @@ impl InsertProof {
191205
}
192206
}
193207

194-
#[derive(Debug, Clone)]
208+
#[derive(Debug, Clone, Serialize, Deserialize)]
195209
pub struct UpdateProof {
196210
pub old_root: RootHash,
197211
pub new_root: RootHash,

crates/prism/src/node_types/sequencer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ impl Sequencer {
331331
stdin.write(&batch);
332332

333333
let client = self.prover_client.lock().await;
334-
let proof = client.prove(&self.proving_key, stdin).plonk().run()?;
334+
let proof = client.prove(&self.proving_key, stdin).run()?;
335335

336336
let epoch_json = FinalizedEpoch {
337337
height: epoch,

elf/riscv32im-succinct-zkvm-elf

93.9 KB
Binary file not shown.

0 commit comments

Comments
 (0)