From 338924c40434a9718c5c4c883027b3ae41dfcfe4 Mon Sep 17 00:00:00 2001 From: lightsing Date: Fri, 13 Sep 2024 15:37:00 +0800 Subject: [PATCH] gc when delete --- src/trie/zktrie/imp.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/trie/zktrie/imp.rs b/src/trie/zktrie/imp.rs index ef7e97a..840ea6b 100644 --- a/src/trie/zktrie/imp.rs +++ b/src/trie/zktrie/imp.rs @@ -429,13 +429,14 @@ impl> ZkTrie { if level >= H::TRIE_MAX_LEVELS { return Err(ZkTrieError::MaxLevelReached); } - let root = self.get_node_by_hash(root_hash)?; + let root = self.get_node_by_hash(root_hash.clone())?; match root.node_type() { NodeType::Empty => Err(ZkTrieError::NodeNotFound), NodeType::Leaf => { if root.as_leaf().unwrap().node_key() != &node_key { Err(ZkTrieError::NodeNotFound) } else { + self.gc_nodes.insert(root_hash); Ok((LazyNodeHash::Hash(ZkHash::ZERO), true)) } } @@ -502,6 +503,7 @@ impl> ZkTrie { resolved: new_parent.node_hash.clone(), }); + self.gc_nodes.insert(root_hash); self.dirty_branch_nodes.push(new_parent); Ok((lazy_hash, false))