diff --git a/crates/blockifier/src/blockifier/stateful_validator.rs b/crates/blockifier/src/blockifier/stateful_validator.rs index 3882a66ccd..14964e1a56 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; @@ -113,7 +114,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 d3af66848e..e9e309df68 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, diff --git a/crates/blockifier/src/execution/entry_point.rs b/crates/blockifier/src/execution/entry_point.rs index 6cd2274cc0..9493bf105a 100644 --- a/crates/blockifier/src/execution/entry_point.rs +++ b/crates/blockifier/src/execution/entry_point.rs @@ -283,7 +283,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 053bc04408..73a84a9b35 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 = entry_point_call.execute_directly_given_tx_info(state, tx_info, false, execution_mode); diff --git a/crates/blockifier/src/test_utils/struct_impls.rs b/crates/blockifier/src/test_utils/struct_impls.rs index c711a3dbf8..5d6b86450e 100644 --- a/crates/blockifier/src/test_utils/struct_impls.rs +++ b/crates/blockifier/src/test_utils/struct_impls.rs @@ -49,11 +49,12 @@ 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 { + let limit_steps_by_resources = false; // Do not limit steps by resources as we use default reasources. self.execute_directly_given_tx_info( state, // TODO(Yoni, 1/12/2024): change the default to V3. TransactionInfo::Deprecated(DeprecatedTransactionInfo::default()), - true, + limit_steps_by_resources, ExecutionMode::Execute, ) } @@ -82,10 +83,12 @@ impl CallEntryPoint { self, state: &mut dyn State, ) -> EntryPointExecutionResult { + let limit_steps_by_resources = false; // Do not limit steps by resources as we use default reasources. self.execute_directly_given_tx_info( state, + // TODO(Yoni, 1/12/2024): change the default to V3. TransactionInfo::Deprecated(DeprecatedTransactionInfo::default()), - true, + limit_steps_by_resources, ExecutionMode::Validate, ) } diff --git a/crates/blockifier/src/transaction/account_transaction.rs b/crates/blockifier/src/transaction/account_transaction.rs index 0f164bf303..8ae5e146c7 100644 --- a/crates/blockifier/src/transaction/account_transaction.rs +++ b/crates/blockifier/src/transaction/account_transaction.rs @@ -463,7 +463,7 @@ impl AccountTransaction { concurrency_mode: bool, ) -> TransactionExecutionResult> { if !charge_fee || actual_fee == Fee(0) { - // Fee charging is not enforced in some transaction simulations and tests. + // Fee charging is not enforced in some tests. return Ok(None); } @@ -510,7 +510,6 @@ impl AccountTransaction { initial_gas: remaining_gas_for_fee_transfer, }; - 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 abcd0ec455..5b4a1b5acc 100644 --- a/crates/blockifier/src/transaction/transaction_execution.rs +++ b/crates/blockifier/src/transaction/transaction_execution.rs @@ -138,9 +138,10 @@ impl ExecutableTransaction for L1HandlerTransaction { _execution_flags: ExecutionFlags, ) -> TransactionExecutionResult { let tx_context = Arc::new(block_context.to_tx_context(self)); - + let limit_steps_by_resources = false; 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 = tx_context.initial_sierra_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 a57b46a85c..4e83607822 100644 --- a/crates/papyrus_execution/src/lib.rs +++ b/crates/papyrus_execution/src/lib.rs @@ -246,14 +246,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