feat: implement functionality needed for computing openings for recent blocks (#367) * refactor: make `InnerNode` and `NodeMutation` public * feat: implement serialization for `LeafIndex`
polydez 155382956+polydez@users.noreply.github.com
Sat, 25 Jan 2025 06:32:30 +0500
5 files changed,
23 insertions(+),
7 deletions(-)
M
CHANGELOG.md
→
CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.13.2 (2025-01-24) + +- Made `InnerNode` and `NodeMutation` public. Implemented (de)serialization of `LeafIndex` (#367). + ## 0.13.1 (2024-12-26) - Generate reverse mutations set on applying of mutations set, implemented serialization of `MutationsSet` (#355).
M
Cargo.lock
→
Cargo.lock
@@ -526,7 +526,7 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
[[package]] name = "miden-crypto" -version = "0.13.1" +version = "0.13.2" dependencies = [ "assert_matches", "blake3",
M
Cargo.toml
→
Cargo.toml
@@ -1,6 +1,6 @@
[package] name = "miden-crypto" -version = "0.13.1" +version = "0.13.2" description = "Miden Cryptographic primitives" authors = ["miden contributors"] readme = "README.md"
M
src/merkle/mod.rs
→
src/merkle/mod.rs
@@ -22,8 +22,8 @@ pub use path::{MerklePath, RootPath, ValuePath};
mod smt; pub use smt::{ - LeafIndex, MutationSet, SimpleSmt, Smt, SmtLeaf, SmtLeafError, SmtProof, SmtProofError, - SMT_DEPTH, SMT_MAX_DEPTH, SMT_MIN_DEPTH, + InnerNode, LeafIndex, MutationSet, NodeMutation, SimpleSmt, Smt, SmtLeaf, SmtLeafError, + SmtProof, SmtProofError, SMT_DEPTH, SMT_MAX_DEPTH, SMT_MIN_DEPTH, }; mod mmr;
M
src/merkle/smt/mod.rs
→
src/merkle/smt/mod.rs
@@ -492,17 +492,29 @@ Self::new(node_index.value())
} } +impl<const DEPTH: u8> Serializable for LeafIndex<DEPTH> { + fn write_into<W: ByteWriter>(&self, target: &mut W) { + self.index.write_into(target); + } +} + +impl<const DEPTH: u8> Deserializable for LeafIndex<DEPTH> { + fn read_from<R: ByteReader>(source: &mut R) -> Result<Self, DeserializationError> { + Ok(Self { index: source.read()? }) + } +} + // MUTATIONS // ================================================================================================ -/// A change to an inner node of a [`SparseMerkleTree`] that hasn't yet been applied. +/// A change to an inner node of a sparse Merkle tree that hasn't yet been applied. /// [`MutationSet`] stores this type in relation to a [`NodeIndex`] to keep track of what changes /// need to occur at which node indices. #[derive(Debug, Clone, PartialEq, Eq)] pub enum NodeMutation { - /// Corresponds to [`SparseMerkleTree::remove_inner_node()`]. + /// Node needs to be removed. Removal, - /// Corresponds to [`SparseMerkleTree::insert_inner_node()`]. + /// Node needs to be inserted. Addition(InnerNode), }