chore(provider): move state_provider_from_state to BlockState impl (#11777)

This commit is contained in:
joshieDo
2024-10-16 17:13:30 +09:00
committed by GitHub
parent b8147708ad
commit 183cea4577
2 changed files with 11 additions and 15 deletions

View File

@ -504,20 +504,6 @@ impl CanonicalInMemoryState {
self.inner.canon_state_notification_sender.send(event).ok();
}
/// Return state provider with reference to in-memory blocks that overlay database state.
///
/// This merges the state of all blocks that are part of the chain that the requested block is
/// the head of. This includes all blocks that connect back to the canonical block on disk.
pub fn state_provider_from_state(
&self,
state: &BlockState,
historical: StateProviderBox,
) -> MemoryOverlayStateProvider {
let in_memory = state.chain().into_iter().map(|block_state| block_state.block()).collect();
MemoryOverlayStateProvider::new(historical, in_memory)
}
/// Return state provider with reference to in-memory blocks that overlay database state.
///
/// This merges the state of all blocks that are part of the chain that the requested block is
@ -723,6 +709,16 @@ impl BlockState {
pub fn iter(self: Arc<Self>) -> impl Iterator<Item = Arc<Self>> {
std::iter::successors(Some(self), |state| state.parent.clone())
}
/// Return state provider with reference to in-memory blocks that overlay database state.
///
/// This merges the state of all blocks that are part of the chain that the this block is
/// the head of. This includes all blocks that connect back to the canonical block on disk.
pub fn state_provider(&self, historical: StateProviderBox) -> MemoryOverlayStateProvider {
let in_memory = self.chain().into_iter().map(|block_state| block_state.block()).collect();
MemoryOverlayStateProvider::new(historical, in_memory)
}
}
/// Represents an executed block stored in-memory.

View File

@ -402,7 +402,7 @@ impl<N: ProviderNodeTypes> BlockchainProvider2<N> {
) -> ProviderResult<MemoryOverlayStateProvider> {
let anchor_hash = state.anchor().hash;
let latest_historical = self.database.history_by_block_hash(anchor_hash)?;
Ok(self.canonical_in_memory_state.state_provider_from_state(state, latest_historical))
Ok(state.state_provider(latest_historical))
}
/// Fetches data from either in-memory state or persistent storage for a range of transactions.