diff --git a/crates/storage/provider/src/providers/state/latest.rs b/crates/storage/provider/src/providers/state/latest.rs index df515f78e..a12eef463 100644 --- a/crates/storage/provider/src/providers/state/latest.rs +++ b/crates/storage/provider/src/providers/state/latest.rs @@ -9,10 +9,9 @@ use reth_db::{ }; use reth_interfaces::provider::{ProviderError, ProviderResult}; use reth_primitives::{ - keccak256, trie::AccountProof, Account, Address, BlockNumber, Bytecode, StorageKey, - StorageValue, B256, + trie::AccountProof, Account, Address, BlockNumber, Bytecode, StorageKey, StorageValue, B256, }; -use reth_trie::updates::TrieUpdates; +use reth_trie::{proof::Proof, updates::TrieUpdates}; /// State provider over latest state that takes tx reference. #[derive(Debug)] @@ -95,17 +94,10 @@ impl<'b, TX: DbTx> StateProvider for LatestStateProviderRef<'b, TX> { self.db.get::(code_hash).map_err(Into::into) } - fn proof(&self, address: Address, _keys: &[B256]) -> ProviderResult { - let _hashed_address = keccak256(address); - let _root = self - .db - .cursor_read::()? - .last()? - .ok_or_else(|| ProviderError::HeaderNotFound(0.into()))? - .1 - .state_root; - - unimplemented!() + fn proof(&self, address: Address, slots: &[B256]) -> ProviderResult { + Ok(Proof::new(self.db) + .account_proof(address, slots) + .map_err(Into::::into)?) } }