mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
chore(provider): move state_provider_from_state to BlockState impl (#11777)
This commit is contained in:
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
Reference in New Issue
Block a user