diff --git a/salt/src/lib.rs b/salt/src/lib.rs index 2f5d03d3..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}; +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 0db6ce8c..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}; +pub use prover::{fx_hashmap_serde, SaltProof, SerdeCommitment, SerdeMultiPointProof}; 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(