From b58de182fbdecd4ed38e9e9fdb6e17b29f5ee236 Mon Sep 17 00:00:00 2001 From: "liquan.eth" Date: Wed, 13 May 2026 09:18:19 +0800 Subject: [PATCH 1/2] public fx_hashmap_serde --- salt/src/lib.rs | 2 +- salt/src/proof/mod.rs | 2 +- salt/src/proof/prover.rs | 11 ++++++----- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/salt/src/lib.rs b/salt/src/lib.rs index 2f5d03d3..1f339884 100644 --- a/salt/src/lib.rs +++ b/salt/src/lib.rs @@ -7,7 +7,7 @@ extern crate alloc as std; pub mod constant; pub mod empty_salt; pub mod proof; -pub use proof::{ProofError, SaltProof, SaltWitness, Witness}; +pub use proof::{ProofError, SaltProof, SaltWitness, Witness, fx_hashmap_serde}; pub mod state; pub use state::{ hasher, state::EphemeralSaltState, state::PlainStateProvider, updates::StateUpdates, diff --git a/salt/src/proof/mod.rs b/salt/src/proof/mod.rs index 0db6ce8c..9fe4388e 100644 --- a/salt/src/proof/mod.rs +++ b/salt/src/proof/mod.rs @@ -76,7 +76,7 @@ pub mod witness; #[cfg(test)] mod test_utils; -pub use prover::{SaltProof, SerdeCommitment, SerdeMultiPointProof}; +pub use prover::{SaltProof, SerdeCommitment, SerdeMultiPointProof, fx_hashmap_serde}; pub use salt_witness::SaltWitness; pub use witness::Witness; diff --git a/salt/src/proof/prover.rs b/salt/src/proof/prover.rs index d206cce9..d7d90602 100644 --- a/salt/src/proof/prover.rs +++ b/salt/src/proof/prover.rs @@ -118,11 +118,12 @@ pub struct SaltProof { pub levels: FxHashMap, } -// Hand-written (de)serialization for `levels` so the salt crate doesn't need -// to enable `hashbrown/serde` (which transitively pulls in serde_core 1.0.221+ -// and breaks downstream alloy-tx-macros 1.0.23). Entries are emitted in -// ascending key order to keep proof bytes deterministic across provers. -mod fx_hashmap_serde { +/// Hand-written (de)serialization for `levels` so the salt crate doesn't need +/// to enable `hashbrown/serde` (which transitively pulls in serde_core 1.0.221+ +/// and breaks downstream alloy-tx-macros 1.0.23). Entries are emitted in +/// ascending key order to keep proof bytes deterministic across provers. +/// Also reused downstream (e.g. `stateless-core::LightWitness`) via `#[serde(with = "salt::fx_hashmap_serde")]`. +pub mod fx_hashmap_serde { use super::*; pub fn serialize( From 1f54a0aef46c27b1245b825cd362091999206caa Mon Sep 17 00:00:00 2001 From: "liquan.eth" Date: Wed, 13 May 2026 09:23:23 +0800 Subject: [PATCH 2/2] fix fmt --- salt/src/lib.rs | 2 +- salt/src/proof/mod.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/salt/src/lib.rs b/salt/src/lib.rs index 1f339884..bec38a1d 100644 --- a/salt/src/lib.rs +++ b/salt/src/lib.rs @@ -7,7 +7,7 @@ extern crate alloc as std; pub mod constant; pub mod empty_salt; pub mod proof; -pub use proof::{ProofError, SaltProof, SaltWitness, Witness, fx_hashmap_serde}; +pub use proof::{fx_hashmap_serde, ProofError, SaltProof, SaltWitness, Witness}; pub mod state; pub use state::{ hasher, state::EphemeralSaltState, state::PlainStateProvider, updates::StateUpdates, diff --git a/salt/src/proof/mod.rs b/salt/src/proof/mod.rs index 9fe4388e..bff27f0c 100644 --- a/salt/src/proof/mod.rs +++ b/salt/src/proof/mod.rs @@ -76,7 +76,7 @@ pub mod witness; #[cfg(test)] mod test_utils; -pub use prover::{SaltProof, SerdeCommitment, SerdeMultiPointProof, fx_hashmap_serde}; +pub use prover::{fx_hashmap_serde, SaltProof, SerdeCommitment, SerdeMultiPointProof}; pub use salt_witness::SaltWitness; pub use witness::Witness;