diff --git a/crates/engine/tree/src/tree/payload_validator.rs b/crates/engine/tree/src/tree/payload_validator.rs index 9a8ac70463..b159292b53 100644 --- a/crates/engine/tree/src/tree/payload_validator.rs +++ b/crates/engine/tree/src/tree/payload_validator.rs @@ -762,20 +762,27 @@ where { debug!(target: "engine::tree::payload_validator", "Executing block"); - let mut db = State::builder() - .with_database(StateProviderDatabase::new(state_provider)) - .with_bundle_update() - .without_state_clear() - .build(); + let mut db = debug_span!(target: "engine::tree", "build_state_db").in_scope(|| { + State::builder() + .with_database(StateProviderDatabase::new(state_provider)) + .with_bundle_update() + .without_state_clear() + .build() + }); - let spec_id = *env.evm_env.spec_id(); - let evm = self.evm_config.evm_with_env(&mut db, env.evm_env); - let ctx = - self.execution_ctx_for(input).map_err(|e| InsertBlockErrorKind::Other(Box::new(e)))?; - let mut executor = self.evm_config.create_executor(evm, ctx); + let (spec_id, mut executor) = { + let _span = debug_span!(target: "engine::tree", "create_evm").entered(); + let spec_id = *env.evm_env.spec_id(); + let evm = self.evm_config.evm_with_env(&mut db, env.evm_env); + let ctx = self + .execution_ctx_for(input) + .map_err(|e| InsertBlockErrorKind::Other(Box::new(e)))?; + let executor = self.evm_config.create_executor(evm, ctx); + (spec_id, executor) + }; if !self.config.precompile_cache_disabled() { - // Only cache pure precompiles to avoid issues with stateful precompiles + let _span = debug_span!(target: "engine::tree", "setup_precompile_cache").entered(); executor.evm_mut().precompiles_mut().map_pure_precompiles(|address, precompile| { let metrics = self .precompile_cache_metrics