diff --git a/crates/trie/sparse/src/blinded.rs b/crates/trie/sparse/src/blinded.rs index 22471cf99f..a9f0e89c29 100644 --- a/crates/trie/sparse/src/blinded.rs +++ b/crates/trie/sparse/src/blinded.rs @@ -24,7 +24,7 @@ pub trait BlindedProvider { type Error: Into; /// Retrieve blinded node by path. - fn blinded_node(&mut self, path: Nibbles) -> Result, Self::Error>; + fn blinded_node(&mut self, path: &Nibbles) -> Result, Self::Error>; } /// Default blinded node provider factory that creates [`DefaultBlindedProvider`]. @@ -51,7 +51,7 @@ pub struct DefaultBlindedProvider; impl BlindedProvider for DefaultBlindedProvider { type Error = SparseTrieError; - fn blinded_node(&mut self, _path: Nibbles) -> Result, Self::Error> { + fn blinded_node(&mut self, _path: &Nibbles) -> Result, Self::Error> { Ok(None) } } diff --git a/crates/trie/sparse/src/trie.rs b/crates/trie/sparse/src/trie.rs index dd5acc639c..3f2d6f58bd 100644 --- a/crates/trie/sparse/src/trie.rs +++ b/crates/trie/sparse/src/trie.rs @@ -878,7 +878,7 @@ where if self.updates.is_some() { // Check if the extension node child is a hash that needs to be revealed if self.nodes.get(¤t).unwrap().is_hash() { - if let Some(node) = self.provider.blinded_node(current.clone())? { + if let Some(node) = self.provider.blinded_node(¤t)? { let decoded = TrieNode::decode(&mut &node[..])?; trace!(target: "trie::sparse", ?current, ?decoded, "Revealing extension node child"); // We'll never have to update the revealed child node, only @@ -1031,7 +1031,7 @@ where if self.nodes.get(&child_path).unwrap().is_hash() { trace!(target: "trie::sparse", ?child_path, "Retrieving remaining blinded branch child"); - if let Some(node) = self.provider.blinded_node(child_path.clone())? { + if let Some(node) = self.provider.blinded_node(&child_path)? { let decoded = TrieNode::decode(&mut &node[..])?; trace!(target: "trie::sparse", ?child_path, ?decoded, "Revealing remaining blinded branch child"); // We'll never have to update the revealed branch node, only remove diff --git a/crates/trie/trie/src/proof/blinded.rs b/crates/trie/trie/src/proof/blinded.rs index 1383453f34..19a0023d4e 100644 --- a/crates/trie/trie/src/proof/blinded.rs +++ b/crates/trie/trie/src/proof/blinded.rs @@ -86,15 +86,15 @@ where { type Error = SparseTrieError; - fn blinded_node(&mut self, path: Nibbles) -> Result, Self::Error> { - let targets = HashMap::from_iter([(pad_path_to_key(&path), HashSet::default())]); + fn blinded_node(&mut self, path: &Nibbles) -> Result, Self::Error> { + let targets = HashMap::from_iter([(pad_path_to_key(path), HashSet::default())]); let proof = Proof::new(self.trie_cursor_factory.clone(), self.hashed_cursor_factory.clone()) .with_prefix_sets_mut(self.prefix_sets.as_ref().clone()) .multiproof(targets) .map_err(|error| SparseTrieErrorKind::Other(Box::new(error)))?; - Ok(proof.account_subtree.into_inner().remove(&path)) + Ok(proof.account_subtree.into_inner().remove(path)) } } @@ -130,8 +130,8 @@ where { type Error = SparseTrieError; - fn blinded_node(&mut self, path: Nibbles) -> Result, Self::Error> { - let targets = HashSet::from_iter([pad_path_to_key(&path)]); + fn blinded_node(&mut self, path: &Nibbles) -> Result, Self::Error> { + let targets = HashSet::from_iter([pad_path_to_key(path)]); let storage_prefix_set = self.prefix_sets.storage_prefix_sets.get(&self.account).cloned().unwrap_or_default(); let proof = StorageProof::new_hashed( @@ -143,6 +143,6 @@ where .storage_multiproof(targets) .map_err(|error| SparseTrieErrorKind::Other(Box::new(error)))?; - Ok(proof.subtree.into_inner().remove(&path)) + Ok(proof.subtree.into_inner().remove(path)) } } diff --git a/crates/trie/trie/src/witness.rs b/crates/trie/trie/src/witness.rs index 5e56cbf21c..a3741d6793 100644 --- a/crates/trie/trie/src/witness.rs +++ b/crates/trie/trie/src/witness.rs @@ -249,7 +249,7 @@ where { type Error = P::Error; - fn blinded_node(&mut self, path: Nibbles) -> Result, Self::Error> { + fn blinded_node(&mut self, path: &Nibbles) -> Result, Self::Error> { let maybe_node = self.provider.blinded_node(path)?; if let Some(node) = &maybe_node { self.tx