From c2808f11641d21b06ff4a6933516ef8f808b6455 Mon Sep 17 00:00:00 2001 From: Alexey Shekhirin Date: Wed, 14 Aug 2024 17:32:53 -0700 Subject: [PATCH] feat(provider): `BlockchainProvider2::account_block_changeset` (#10311) --- .../src/providers/blockchain_provider.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/crates/storage/provider/src/providers/blockchain_provider.rs b/crates/storage/provider/src/providers/blockchain_provider.rs index cfcad59f00..2e0c6ca232 100644 --- a/crates/storage/provider/src/providers/blockchain_provider.rs +++ b/crates/storage/provider/src/providers/blockchain_provider.rs @@ -1284,7 +1284,23 @@ where &self, block_number: BlockNumber, ) -> ProviderResult> { - self.database.provider()?.account_block_changeset(block_number) + if let Some(state) = self.canonical_in_memory_state.state_by_number(block_number) { + let changesets = state + .block() + .execution_output + .bundle + .reverts + .clone() + .into_plain_state_reverts() + .accounts + .into_iter() + .flatten() + .map(|(address, info)| AccountBeforeTx { address, info: info.map(Into::into) }) + .collect(); + Ok(changesets) + } else { + self.database.provider()?.account_block_changeset(block_number) + } } }