diff --git a/crates/blockifier/src/blockifier/stateful_validator.rs b/crates/blockifier/src/blockifier/stateful_validator.rs index b72e5f158d..3d84da4d58 100644 --- a/crates/blockifier/src/blockifier/stateful_validator.rs +++ b/crates/blockifier/src/blockifier/stateful_validator.rs @@ -19,6 +19,7 @@ use crate::state::errors::StateError; use crate::state::state_api::StateReader; use crate::transaction::account_transaction::AccountTransaction; use crate::transaction::errors::{TransactionExecutionError, TransactionPreValidationError}; +use crate::transaction::objects::TransactionInfoCreator; use crate::transaction::transaction_execution::Transaction; use crate::transaction::transactions::ValidatableTransaction; @@ -114,7 +115,7 @@ impl StatefulValidator { let mut execution_resources = ExecutionResources::default(); let tx_context = Arc::new(self.tx_executor.block_context.to_tx_context(tx)); - let limit_steps_by_resources = true; + let limit_steps_by_resources = tx.create_tx_info().enforce_fee(); let validate_call_info = tx.validate_tx( self.tx_executor.block_state.as_mut().expect(BLOCK_STATE_ACCESS_ERR), &mut execution_resources, diff --git a/crates/blockifier/src/execution/deprecated_syscalls/deprecated_syscalls_test.rs b/crates/blockifier/src/execution/deprecated_syscalls/deprecated_syscalls_test.rs index 525347a648..462bd6e2e4 100644 --- a/crates/blockifier/src/execution/deprecated_syscalls/deprecated_syscalls_test.rs +++ b/crates/blockifier/src/execution/deprecated_syscalls/deprecated_syscalls_test.rs @@ -491,7 +491,7 @@ fn test_tx_info(#[values(false, true)] only_query: bool) { }, max_fee, }); - let limit_steps_by_resources = true; + let limit_steps_by_resources = false; // Do not limit steps by resources as we use default reasources. let result = entry_point_call .execute_directly_given_tx_info(&mut state, tx_info, limit_steps_by_resources) .unwrap(); diff --git a/crates/blockifier/src/execution/entry_point.rs b/crates/blockifier/src/execution/entry_point.rs index a5873037f9..28e272e054 100644 --- a/crates/blockifier/src/execution/entry_point.rs +++ b/crates/blockifier/src/execution/entry_point.rs @@ -273,7 +273,7 @@ impl EntryPointExecutionContext { usize::MAX }); - if !limit_steps_by_resources || !tx_info.enforce_fee() { + if !limit_steps_by_resources { return block_upper_bound; } diff --git a/crates/blockifier/src/execution/syscalls/syscall_tests/get_execution_info.rs b/crates/blockifier/src/execution/syscalls/syscall_tests/get_execution_info.rs index ecd49fc9dd..946934955f 100644 --- a/crates/blockifier/src/execution/syscalls/syscall_tests/get_execution_info.rs +++ b/crates/blockifier/src/execution/syscalls/syscall_tests/get_execution_info.rs @@ -243,7 +243,6 @@ fn test_get_execution_info( ), ..trivial_external_entry_point_with_address(test_contract_address) }; - let result = match execution_mode { ExecutionMode::Validate => { entry_point_call.execute_directly_given_tx_info_in_validate_mode(state, tx_info, false) diff --git a/crates/blockifier/src/test_utils/struct_impls.rs b/crates/blockifier/src/test_utils/struct_impls.rs index 1a1529d127..e52009264e 100644 --- a/crates/blockifier/src/test_utils/struct_impls.rs +++ b/crates/blockifier/src/test_utils/struct_impls.rs @@ -48,11 +48,10 @@ impl CallEntryPoint { /// Executes the call directly, without account context. Limits the number of steps by resource /// bounds. pub fn execute_directly(self, state: &mut dyn State) -> EntryPointExecutionResult { - self.execute_directly_given_tx_info( - state, - TransactionInfo::Deprecated(DeprecatedTransactionInfo::default()), - true, - ) + let tx_info = TransactionInfo::Deprecated(DeprecatedTransactionInfo::default()); + let limit_steps_by_resources = false; // Do not limit steps by resources as we use default reasources. + + self.execute_directly_given_tx_info(state, tx_info, limit_steps_by_resources) } pub fn execute_directly_given_tx_info( @@ -74,10 +73,13 @@ impl CallEntryPoint { self, state: &mut dyn State, ) -> EntryPointExecutionResult { + let tx_info = TransactionInfo::Deprecated(DeprecatedTransactionInfo::default()); + let limit_steps_by_resources = false; // Do not limit steps by resources as we use default reasources. + self.execute_directly_given_tx_info_in_validate_mode( state, - TransactionInfo::Deprecated(DeprecatedTransactionInfo::default()), - true, + tx_info, + limit_steps_by_resources, ) } diff --git a/crates/blockifier/src/transaction/account_transaction.rs b/crates/blockifier/src/transaction/account_transaction.rs index ac2478413d..51fbfe4a85 100644 --- a/crates/blockifier/src/transaction/account_transaction.rs +++ b/crates/blockifier/src/transaction/account_transaction.rs @@ -511,7 +511,6 @@ impl AccountTransaction { .gas_costs .default_initial_gas_cost, }; - let mut context = EntryPointExecutionContext::new_invoke(tx_context, true); Ok(fee_transfer_call diff --git a/crates/blockifier/src/transaction/transaction_execution.rs b/crates/blockifier/src/transaction/transaction_execution.rs index aadfa71043..f22921d481 100644 --- a/crates/blockifier/src/transaction/transaction_execution.rs +++ b/crates/blockifier/src/transaction/transaction_execution.rs @@ -135,12 +135,13 @@ impl ExecutableTransaction for L1HandlerTransaction { &self, state: &mut TransactionalState<'_, U>, block_context: &BlockContext, - _execution_flags: ExecutionFlags, + execution_flags: ExecutionFlags, ) -> TransactionExecutionResult { let tx_context = Arc::new(block_context.to_tx_context(self)); - + let limit_steps_by_resources = execution_flags.charge_fee; let mut execution_resources = ExecutionResources::default(); - let mut context = EntryPointExecutionContext::new_invoke(tx_context.clone(), true); + let mut context = + EntryPointExecutionContext::new_invoke(tx_context.clone(), limit_steps_by_resources); let mut remaining_gas = block_context.versioned_constants.tx_default_initial_gas(); let execute_call_info = self.run_execute(state, &mut execution_resources, &mut context, &mut remaining_gas)?; diff --git a/crates/papyrus_execution/src/lib.rs b/crates/papyrus_execution/src/lib.rs index cfb61b6fd2..263ebc123b 100644 --- a/crates/papyrus_execution/src/lib.rs +++ b/crates/papyrus_execution/src/lib.rs @@ -245,14 +245,13 @@ pub fn execute_call( execution_config, override_kzg_da_to_false, )?; + // TODO(yair): fix when supporting v3 transactions + let tx_info = TransactionInfo::Deprecated(DeprecatedTransactionInfo::default()); + let limit_steps_by_resources = false; // Default resource bounds. let mut context = EntryPointExecutionContext::new_invoke( - // TODO(yair): fix when supporting v3 transactions - Arc::new(TransactionContext { - block_context, - tx_info: TransactionInfo::Deprecated(DeprecatedTransactionInfo::default()), - }), - true, // limit_steps_by_resources + Arc::new(TransactionContext { block_context, tx_info }), + limit_steps_by_resources, ); let res = call_entry_point