diff --git a/crates/engine/tree/src/tree/payload_processor/sparse_trie.rs b/crates/engine/tree/src/tree/payload_processor/sparse_trie.rs index e926298682..a16b6a01cc 100644 --- a/crates/engine/tree/src/tree/payload_processor/sparse_trie.rs +++ b/crates/engine/tree/src/tree/payload_processor/sparse_trie.rs @@ -613,13 +613,13 @@ where } // Get the current account state either from the trie or from latest account update. - let trie_account = if let Some(LeafUpdate::Changed(encoded)) = self.account_updates.get(addr) { - Some(encoded).filter(|encoded| !encoded.is_empty()) - } else if !self.account_updates.contains_key(addr) { - self.trie.get_account_value(addr) - } else { + let trie_account = match self.account_updates.get(addr) { + Some(LeafUpdate::Changed(encoded)) => { + Some(encoded).filter(|encoded| !encoded.is_empty()) + } // Needs to be revealed first - return true; + Some(LeafUpdate::Touched) => return true, + None => self.trie.get_account_value(addr), }; let trie_account = trie_account.map(|value| TrieAccount::decode(&mut &value[..]).expect("invalid account RLP"));