diff --git a/crates/revm/src/optimism.rs b/crates/revm/src/optimism.rs index 2f910729c6..d515b757a4 100644 --- a/crates/revm/src/optimism.rs +++ b/crates/revm/src/optimism.rs @@ -7,9 +7,8 @@ mod l1block; mod precompile; pub use handler_register::{ - clear, deduct_caller, end, last_frame_return, load_accounts, load_precompiles, - optimism_handle_register, output, refund, reimburse_caller, reward_beneficiary, validate_env, - validate_tx_against_state, + clear, deduct_caller, end, last_frame_return, load_precompiles, optimism_handle_register, + output, refund, reimburse_caller, reward_beneficiary, validate_env, validate_tx_against_state, }; pub use l1block::{ L1BlockInfo, BASE_FEE_RECIPIENT, L1_BLOCK_CONTRACT, L1_FEE_RECIPIENT, OPERATOR_FEE_RECIPIENT, diff --git a/crates/revm/src/optimism/handler_register.rs b/crates/revm/src/optimism/handler_register.rs index e004f6444f..c6bc8a9437 100644 --- a/crates/revm/src/optimism/handler_register.rs +++ b/crates/revm/src/optimism/handler_register.rs @@ -28,8 +28,6 @@ pub fn optimism_handle_register(handler: &mut EvmHandler<'_, handler.validation.tx_against_state = Arc::new(validate_tx_against_state::); // Load additional precompiles for the given chain spec. handler.pre_execution.load_precompiles = Arc::new(load_precompiles::); - // load l1 data - handler.pre_execution.load_accounts = Arc::new(load_accounts::); // An estimated batch cost is charged from the caller and added to L1 Fee Vault. handler.pre_execution.deduct_caller = Arc::new(deduct_caller::); // Refund is calculated differently then mainnet. @@ -70,13 +68,21 @@ pub fn validate_env(env: &Env) -> Result<(), EVMError< pub fn validate_tx_against_state( context: &mut Context, ) -> Result<(), EVMError> { - let env @ Env { cfg, tx, .. } = context.evm.inner.env.as_ref(); - // No validation is needed for deposit transactions, as they are pre-verified on L1. - if tx.optimism.source_hash.is_some() { + if context.evm.inner.env.tx.optimism.source_hash.is_some() { return Ok(()); } + // the L1-cost fee is only computed for Optimism non-deposit transactions. + let l1_block_info = + crate::optimism::L1BlockInfo::try_fetch(&mut context.evm.inner.db, SPEC::SPEC_ID) + .map_err(EVMError::Database)?; + + // storage l1 block info for later use. + context.evm.inner.l1_block_info = Some(l1_block_info); + + let env @ Env { cfg, tx, .. } = context.evm.inner.env.as_ref(); + // load acc let tx_caller = tx.caller; let account = context @@ -312,25 +318,6 @@ pub fn load_precompiles() -> ContextPrecompiles( - context: &mut Context, -) -> Result<(), EVMError> { - // the L1-cost fee is only computed for Optimism non-deposit transactions. - - if context.evm.inner.env.tx.optimism.source_hash.is_none() { - let l1_block_info = - crate::optimism::L1BlockInfo::try_fetch(&mut context.evm.inner.db, SPEC::SPEC_ID) - .map_err(EVMError::Database)?; - - // storage l1 block info for later use. - context.evm.inner.l1_block_info = Some(l1_block_info); - } - - mainnet::load_accounts::(context) -} - /// Deduct max balance from caller #[inline] pub fn deduct_caller(