mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
feat: provide CanonicalInMemory state as input to EngineHandler (#9764)
This commit is contained in:
@ -23,7 +23,7 @@ use reth_payload_primitives::{PayloadAttributes, PayloadBuilderAttributes, Paylo
|
||||
use reth_payload_validator::ExecutionPayloadValidator;
|
||||
use reth_primitives::{
|
||||
Block, BlockNumHash, BlockNumber, GotExpected, Header, Receipts, Requests, SealedBlock,
|
||||
SealedBlockWithSenders, SealedHeader, B256, U256,
|
||||
SealedBlockWithSenders, B256, U256,
|
||||
};
|
||||
use reth_provider::{
|
||||
BlockReader, ExecutionOutcome, StateProvider, StateProviderFactory, StateRootProvider,
|
||||
@ -353,7 +353,7 @@ where
|
||||
incoming: Receiver<FromEngine<BeaconEngineMessage<T>>>,
|
||||
outgoing: UnboundedSender<EngineApiEvent>,
|
||||
state: EngineApiTreeState,
|
||||
header: SealedHeader,
|
||||
canonical_in_memory_state: CanonicalInMemoryState,
|
||||
persistence: PersistenceHandle,
|
||||
payload_builder: PayloadBuilderHandle<T>,
|
||||
) -> Self {
|
||||
@ -368,7 +368,7 @@ where
|
||||
persistence_state: PersistenceState::default(),
|
||||
is_backfill_active: false,
|
||||
state,
|
||||
canonical_in_memory_state: CanonicalInMemoryState::with_head(header),
|
||||
canonical_in_memory_state,
|
||||
payload_builder,
|
||||
}
|
||||
}
|
||||
@ -385,6 +385,7 @@ where
|
||||
incoming: Receiver<FromEngine<BeaconEngineMessage<T>>>,
|
||||
persistence: PersistenceHandle,
|
||||
payload_builder: PayloadBuilderHandle<T>,
|
||||
canonical_in_memory_state: CanonicalInMemoryState,
|
||||
) -> UnboundedReceiver<EngineApiEvent> {
|
||||
let best_block_number = provider.best_block_number().unwrap_or(0);
|
||||
let header = provider.sealed_header(best_block_number).ok().flatten().unwrap_or_default();
|
||||
@ -404,7 +405,7 @@ where
|
||||
incoming,
|
||||
tx,
|
||||
state,
|
||||
header,
|
||||
canonical_in_memory_state,
|
||||
persistence,
|
||||
payload_builder,
|
||||
);
|
||||
@ -1477,6 +1478,7 @@ mod tests {
|
||||
|
||||
let header = chain_spec.genesis_header().seal_slow();
|
||||
let engine_api_tree_state = EngineApiTreeState::new(10, 10, header.num_hash());
|
||||
let canonical_in_memory_state = CanonicalInMemoryState::with_head(header);
|
||||
|
||||
let (to_payload_service, payload_command_rx) = unbounded_channel();
|
||||
let payload_builder = PayloadBuilderHandle::new(to_payload_service);
|
||||
@ -1488,7 +1490,7 @@ mod tests {
|
||||
to_tree_rx,
|
||||
from_tree_tx,
|
||||
engine_api_tree_state,
|
||||
header,
|
||||
canonical_in_memory_state,
|
||||
persistence_handle,
|
||||
payload_builder,
|
||||
);
|
||||
@ -1544,6 +1546,7 @@ mod tests {
|
||||
};
|
||||
|
||||
let header = blocks.first().unwrap().block().header.clone();
|
||||
let canonical_in_memory_state = CanonicalInMemoryState::with_head(header);
|
||||
|
||||
let (to_payload_service, payload_command_rx) = unbounded_channel();
|
||||
let payload_builder = PayloadBuilderHandle::new(to_payload_service);
|
||||
@ -1555,7 +1558,7 @@ mod tests {
|
||||
to_tree_rx,
|
||||
from_tree_tx,
|
||||
engine_api_tree_state,
|
||||
header,
|
||||
canonical_in_memory_state,
|
||||
persistence_handle,
|
||||
payload_builder,
|
||||
);
|
||||
|
||||
@ -78,6 +78,8 @@ where
|
||||
let payload_validator = ExecutionPayloadValidator::new(chain_spec.clone());
|
||||
let executor_factory = EthExecutorProvider::ethereum(chain_spec);
|
||||
|
||||
let canonical_in_memory_state = blockchain_db.canonical_in_memory_state();
|
||||
|
||||
let from_tree = EngineApiTreeHandlerImpl::spawn_new(
|
||||
blockchain_db,
|
||||
executor_factory,
|
||||
@ -86,6 +88,7 @@ where
|
||||
to_tree_rx,
|
||||
persistence_handle,
|
||||
payload_builder,
|
||||
canonical_in_memory_state,
|
||||
);
|
||||
|
||||
let engine_handler = EngineApiRequestHandler::new(to_tree_tx, from_tree);
|
||||
|
||||
@ -83,6 +83,11 @@ where
|
||||
None => Err(ProviderError::HeaderNotFound(best.best_number.into())),
|
||||
}
|
||||
}
|
||||
|
||||
/// Gets a clone of `canonical_in_memory_state`.
|
||||
pub fn canonical_in_memory_state(&self) -> CanonicalInMemoryState {
|
||||
self.canonical_in_memory_state.clone()
|
||||
}
|
||||
}
|
||||
|
||||
impl<DB> BlockchainProvider2<DB>
|
||||
|
||||
Reference in New Issue
Block a user