From 8de5a8c0ac0e5df9355897e71665e0effad22ecf Mon Sep 17 00:00:00 2001 From: YaelD <70628564+Yael-Starkware@users.noreply.github.com> Date: Mon, 12 Feb 2024 19:14:29 +0200 Subject: [PATCH 1/2] fix: update the event limit constants (#1483) --- .../deprecated_syscalls_test.rs | 21 +++++-------------- .../blockifier/src/execution/syscalls/mod.rs | 6 +++--- .../src/execution/syscalls/syscalls_test.rs | 21 +++++-------------- .../src/transaction/transactions_test.rs | 15 ++----------- 4 files changed, 15 insertions(+), 48 deletions(-) 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 741c75ed1d..9b2dc57d89 100644 --- a/crates/blockifier/src/execution/deprecated_syscalls/deprecated_syscalls_test.rs +++ b/crates/blockifier/src/execution/deprecated_syscalls/deprecated_syscalls_test.rs @@ -26,9 +26,7 @@ use crate::execution::entry_point::{CallEntryPoint, CallType}; use crate::execution::errors::EntryPointExecutionError; use crate::execution::execution_utils::felt_to_stark_felt; use crate::execution::syscalls::hint_processor::EmitEventError; -use crate::execution::syscalls::{ - SYSCALL_MAX_EVENT_DATA, SYSCALL_MAX_EVENT_KEYS, SYSCALL_MAX_N_EMITTED_EVENTS, -}; +use crate::execution::syscalls::{SYSCALL_MAX_EVENT_DATA, SYSCALL_MAX_EVENT_KEYS}; use crate::retdata; use crate::state::state_api::StateReader; use crate::test_utils::{ @@ -512,30 +510,21 @@ fn test_emit_event() { max_keys_length: SYSCALL_MAX_EVENT_KEYS, }; assert!(error.to_string().contains(format!("{}", expected_error).as_str())); - - // Negative flow, the number of events exceeds the limit. - let n_emitted_events_too_big = vec![stark_felt!((SYSCALL_MAX_N_EMITTED_EVENTS + 1) as u16)]; - let error = emit_events(&n_emitted_events_too_big, &keys, &data).unwrap_err(); - let expected_error = EmitEventError::ExceedsMaxNumberOfEmittedEvents { - n_emitted_events: SYSCALL_MAX_N_EMITTED_EVENTS + 1, - max_n_emitted_events: SYSCALL_MAX_N_EMITTED_EVENTS, - }; - assert!(error.to_string().contains(format!("{}", expected_error).as_str())); } fn emit_events( n_emitted_events: &[StarkFelt], - keys: &Vec, - data: &Vec, + keys: &[StarkFelt], + data: &[StarkFelt], ) -> Result { let mut state = deprecated_create_test_state(); let calldata = Calldata( concat(vec![ n_emitted_events.to_owned(), vec![stark_felt!(keys.len() as u16)], - keys.clone(), + keys.to_owned(), vec![stark_felt!(data.len() as u16)], - data.clone(), + data.to_owned(), ]) .into(), ); diff --git a/crates/blockifier/src/execution/syscalls/mod.rs b/crates/blockifier/src/execution/syscalls/mod.rs index 5c71ad3b60..3285a774d5 100644 --- a/crates/blockifier/src/execution/syscalls/mod.rs +++ b/crates/blockifier/src/execution/syscalls/mod.rs @@ -42,9 +42,9 @@ pub type WriteResponseResult = SyscallResult<()>; type SyscallSelector = DeprecatedSyscallSelector; -pub const SYSCALL_MAX_EVENT_KEYS: usize = 256; -pub const SYSCALL_MAX_EVENT_DATA: usize = 256; -pub const SYSCALL_MAX_N_EMITTED_EVENTS: usize = 128; +pub const SYSCALL_MAX_EVENT_KEYS: usize = 40; +pub const SYSCALL_MAX_EVENT_DATA: usize = 40; +pub const SYSCALL_MAX_N_EMITTED_EVENTS: usize = 1_000_000_000; pub trait SyscallRequest: Sized { fn read(_vm: &VirtualMachine, _ptr: &mut Relocatable) -> SyscallResult; diff --git a/crates/blockifier/src/execution/syscalls/syscalls_test.rs b/crates/blockifier/src/execution/syscalls/syscalls_test.rs index 3ff9c51839..d85ea69b42 100644 --- a/crates/blockifier/src/execution/syscalls/syscalls_test.rs +++ b/crates/blockifier/src/execution/syscalls/syscalls_test.rs @@ -37,9 +37,7 @@ use crate::execution::execution_utils::{felt_to_stark_felt, stark_felt_to_felt}; use crate::execution::syscalls::hint_processor::{ EmitEventError, BLOCK_NUMBER_OUT_OF_RANGE_ERROR, L1_GAS, L2_GAS, OUT_OF_GAS_ERROR, }; -use crate::execution::syscalls::{ - SYSCALL_MAX_EVENT_DATA, SYSCALL_MAX_EVENT_KEYS, SYSCALL_MAX_N_EMITTED_EVENTS, -}; +use crate::execution::syscalls::{SYSCALL_MAX_EVENT_DATA, SYSCALL_MAX_EVENT_KEYS}; use crate::retdata; use crate::state::state_api::{State, StateReader}; use crate::test_utils::{ @@ -151,30 +149,21 @@ fn test_emit_event() { max_keys_length: SYSCALL_MAX_EVENT_KEYS, }; assert!(error.to_string().contains(format!("{}", expected_error).as_str())); - - // Negative flow, the number of events exceeds the limit. - let n_emitted_events_too_big = vec![stark_felt!((SYSCALL_MAX_N_EMITTED_EVENTS + 1) as u16)]; - let error = emit_events(&n_emitted_events_too_big, &keys, &data).unwrap_err(); - let expected_error = EmitEventError::ExceedsMaxNumberOfEmittedEvents { - n_emitted_events: SYSCALL_MAX_N_EMITTED_EVENTS + 1, - max_n_emitted_events: SYSCALL_MAX_N_EMITTED_EVENTS, - }; - assert!(error.to_string().contains(format!("{}", expected_error).as_str())); } fn emit_events( n_emitted_events: &[StarkFelt], - keys: &Vec, - data: &Vec, + keys: &[StarkFelt], + data: &[StarkFelt], ) -> Result { let mut state = create_test_state(); let calldata = Calldata( concat(vec![ n_emitted_events.to_owned(), vec![stark_felt!(keys.len() as u16)], - keys.clone(), + keys.to_owned(), vec![stark_felt!(data.len() as u16)], - data.clone(), + data.to_owned(), ]) .into(), ); diff --git a/crates/blockifier/src/transaction/transactions_test.rs b/crates/blockifier/src/transaction/transactions_test.rs index f15565bd17..ad7e15eb10 100644 --- a/crates/blockifier/src/transaction/transactions_test.rs +++ b/crates/blockifier/src/transaction/transactions_test.rs @@ -31,9 +31,7 @@ use crate::execution::entry_point::{CallEntryPoint, CallType}; use crate::execution::errors::EntryPointExecutionError; use crate::execution::execution_utils::felt_to_stark_felt; use crate::execution::syscalls::hint_processor::EmitEventError; -use crate::execution::syscalls::{ - SYSCALL_MAX_EVENT_DATA, SYSCALL_MAX_EVENT_KEYS, SYSCALL_MAX_N_EMITTED_EVENTS, -}; +use crate::execution::syscalls::{SYSCALL_MAX_EVENT_DATA, SYSCALL_MAX_EVENT_KEYS}; use crate::fee::fee_utils::calculate_tx_fee; use crate::fee::gas_usage::{ calculate_tx_gas_usage, estimate_minimal_l1_gas, get_onchain_data_cost, @@ -1330,18 +1328,9 @@ fn test_only_query_flag(#[case] only_query: bool) { #[test_case( vec![stark_felt!(1_u16); SYSCALL_MAX_EVENT_KEYS], vec![stark_felt!(2_u16); SYSCALL_MAX_EVENT_DATA], - SYSCALL_MAX_N_EMITTED_EVENTS, + 10, None; "Positive flow")] -#[test_case( - vec![stark_felt!(1_u16)], - vec![stark_felt!(2_u16)], - SYSCALL_MAX_N_EMITTED_EVENTS + 1, - Some(EmitEventError::ExceedsMaxNumberOfEmittedEvents { - n_emitted_events: SYSCALL_MAX_N_EMITTED_EVENTS + 1, - max_n_emitted_events: SYSCALL_MAX_N_EMITTED_EVENTS, - }); - "exceeds max number of events")] #[test_case( vec![stark_felt!(3_u16); SYSCALL_MAX_EVENT_KEYS + 1], vec![stark_felt!(4_u16)], From 4c55b4aa00fc839b8ccbe035d0a79c06661a8c42 Mon Sep 17 00:00:00 2001 From: Elin Tulchinsky Date: Mon, 12 Feb 2024 19:38:30 +0200 Subject: [PATCH 2/2] Merge `main-v0.13.0-hotfix` into `main-v0.13.1` (resolve conflicts). --- .../deprecated_syscalls_test.rs | 35 ------------------- .../blockifier/src/execution/syscalls/mod.rs | 10 ------ .../src/execution/syscalls/syscalls_test.rs | 35 ------------------- .../src/transaction/transactions_test.rs | 15 ++++++-- 4 files changed, 13 insertions(+), 82 deletions(-) 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 cc28f7d8e1..66885dcf3d 100644 --- a/crates/blockifier/src/execution/deprecated_syscalls/deprecated_syscalls_test.rs +++ b/crates/blockifier/src/execution/deprecated_syscalls/deprecated_syscalls_test.rs @@ -27,19 +27,9 @@ use crate::execution::entry_point::{CallEntryPoint, CallType}; use crate::execution::errors::EntryPointExecutionError; use crate::execution::execution_utils::felt_to_stark_felt; use crate::execution::syscalls::hint_processor::EmitEventError; -<<<<<<< HEAD use crate::execution::syscalls::{ SYSCALL_MAX_EVENT_DATA, SYSCALL_MAX_EVENT_KEYS, SYSCALL_MAX_N_EMITTED_EVENTS, }; -||||||| d1b5bb4f -use crate::execution::syscalls::{ - SYSCALL_MAX_EVENT_DATA, SYSCALL_MAX_EVENT_KEYS, SYSCALL_MAX_N_EMITTED_EVENTS, -}; -use crate::retdata; -======= -use crate::execution::syscalls::{SYSCALL_MAX_EVENT_DATA, SYSCALL_MAX_EVENT_KEYS}; -use crate::retdata; ->>>>>>> origin/main-v0.13.0-hotfix use crate::state::state_api::StateReader; use crate::test_utils::cached_state::{ deprecated_create_deploy_test_state, deprecated_create_test_state, @@ -554,7 +544,6 @@ fn test_emit_event() { max_keys_length: SYSCALL_MAX_EVENT_KEYS, }; assert!(error.to_string().contains(format!("{}", expected_error).as_str())); -<<<<<<< HEAD // Negative flow, the number of events exceeds the limit. let n_emitted_events_too_big = vec![stark_felt!( @@ -566,18 +555,6 @@ fn test_emit_event() { max_n_emitted_events: SYSCALL_MAX_N_EMITTED_EVENTS, }; assert!(error.to_string().contains(format!("{}", expected_error).as_str())); -||||||| d1b5bb4f - - // Negative flow, the number of events exceeds the limit. - let n_emitted_events_too_big = vec![stark_felt!((SYSCALL_MAX_N_EMITTED_EVENTS + 1) as u16)]; - let error = emit_events(&n_emitted_events_too_big, &keys, &data).unwrap_err(); - let expected_error = EmitEventError::ExceedsMaxNumberOfEmittedEvents { - n_emitted_events: SYSCALL_MAX_N_EMITTED_EVENTS + 1, - max_n_emitted_events: SYSCALL_MAX_N_EMITTED_EVENTS, - }; - assert!(error.to_string().contains(format!("{}", expected_error).as_str())); -======= ->>>>>>> origin/main-v0.13.0-hotfix } fn emit_events( @@ -589,22 +566,10 @@ fn emit_events( let calldata = Calldata( concat(vec![ n_emitted_events.to_owned(), -<<<<<<< HEAD vec![stark_felt!(u16::try_from(keys.len()).expect("Failed to convert usize to u16."))], keys.to_vec(), vec![stark_felt!(u16::try_from(data.len()).expect("Failed to convert usize to u16."))], data.to_vec(), -||||||| d1b5bb4f - vec![stark_felt!(keys.len() as u16)], - keys.clone(), - vec![stark_felt!(data.len() as u16)], - data.clone(), -======= - vec![stark_felt!(keys.len() as u16)], - keys.to_owned(), - vec![stark_felt!(data.len() as u16)], - data.to_owned(), ->>>>>>> origin/main-v0.13.0-hotfix ]) .into(), ); diff --git a/crates/blockifier/src/execution/syscalls/mod.rs b/crates/blockifier/src/execution/syscalls/mod.rs index d17bad8ba4..cca71cb6a8 100644 --- a/crates/blockifier/src/execution/syscalls/mod.rs +++ b/crates/blockifier/src/execution/syscalls/mod.rs @@ -42,19 +42,9 @@ pub type WriteResponseResult = SyscallResult<()>; type SyscallSelector = DeprecatedSyscallSelector; -<<<<<<< HEAD pub const SYSCALL_MAX_EVENT_KEYS: usize = 40; pub const SYSCALL_MAX_EVENT_DATA: usize = 40; pub const SYSCALL_MAX_N_EMITTED_EVENTS: usize = 1000; -||||||| d1b5bb4f -pub const SYSCALL_MAX_EVENT_KEYS: usize = 256; -pub const SYSCALL_MAX_EVENT_DATA: usize = 256; -pub const SYSCALL_MAX_N_EMITTED_EVENTS: usize = 128; -======= -pub const SYSCALL_MAX_EVENT_KEYS: usize = 40; -pub const SYSCALL_MAX_EVENT_DATA: usize = 40; -pub const SYSCALL_MAX_N_EMITTED_EVENTS: usize = 1_000_000_000; ->>>>>>> origin/main-v0.13.0-hotfix pub trait SyscallRequest: Sized { fn read(_vm: &VirtualMachine, _ptr: &mut Relocatable) -> SyscallResult; diff --git a/crates/blockifier/src/execution/syscalls/syscalls_test.rs b/crates/blockifier/src/execution/syscalls/syscalls_test.rs index 5636cd7339..e8e71b7f0b 100644 --- a/crates/blockifier/src/execution/syscalls/syscalls_test.rs +++ b/crates/blockifier/src/execution/syscalls/syscalls_test.rs @@ -36,19 +36,9 @@ use crate::execution::execution_utils::{felt_to_stark_felt, stark_felt_to_felt}; use crate::execution::syscalls::hint_processor::{ EmitEventError, BLOCK_NUMBER_OUT_OF_RANGE_ERROR, L1_GAS, L2_GAS, OUT_OF_GAS_ERROR, }; -<<<<<<< HEAD use crate::execution::syscalls::{ SYSCALL_MAX_EVENT_DATA, SYSCALL_MAX_EVENT_KEYS, SYSCALL_MAX_N_EMITTED_EVENTS, }; -||||||| d1b5bb4f -use crate::execution::syscalls::{ - SYSCALL_MAX_EVENT_DATA, SYSCALL_MAX_EVENT_KEYS, SYSCALL_MAX_N_EMITTED_EVENTS, -}; -use crate::retdata; -======= -use crate::execution::syscalls::{SYSCALL_MAX_EVENT_DATA, SYSCALL_MAX_EVENT_KEYS}; -use crate::retdata; ->>>>>>> origin/main-v0.13.0-hotfix use crate::state::state_api::{State, StateReader}; use crate::test_utils::cached_state::{create_deploy_test_state, create_test_state}; use crate::test_utils::contracts::FeatureContract; @@ -162,7 +152,6 @@ fn test_emit_event() { max_keys_length: SYSCALL_MAX_EVENT_KEYS, }; assert!(error.to_string().contains(format!("{}", expected_error).as_str())); -<<<<<<< HEAD // Negative flow, the number of events exceeds the limit. let n_emitted_events_too_big = vec![stark_felt!( @@ -174,18 +163,6 @@ fn test_emit_event() { max_n_emitted_events: SYSCALL_MAX_N_EMITTED_EVENTS, }; assert!(error.to_string().contains(format!("{}", expected_error).as_str())); -||||||| d1b5bb4f - - // Negative flow, the number of events exceeds the limit. - let n_emitted_events_too_big = vec![stark_felt!((SYSCALL_MAX_N_EMITTED_EVENTS + 1) as u16)]; - let error = emit_events(&n_emitted_events_too_big, &keys, &data).unwrap_err(); - let expected_error = EmitEventError::ExceedsMaxNumberOfEmittedEvents { - n_emitted_events: SYSCALL_MAX_N_EMITTED_EVENTS + 1, - max_n_emitted_events: SYSCALL_MAX_N_EMITTED_EVENTS, - }; - assert!(error.to_string().contains(format!("{}", expected_error).as_str())); -======= ->>>>>>> origin/main-v0.13.0-hotfix } fn emit_events( @@ -197,22 +174,10 @@ fn emit_events( let calldata = Calldata( concat(vec![ n_emitted_events.to_owned(), -<<<<<<< HEAD vec![stark_felt!(u16::try_from(keys.len()).expect("Failed to convert usize to u16."))], keys.to_vec(), vec![stark_felt!(u16::try_from(data.len()).expect("Failed to convert usize to u16."))], data.to_vec(), -||||||| d1b5bb4f - vec![stark_felt!(keys.len() as u16)], - keys.clone(), - vec![stark_felt!(data.len() as u16)], - data.clone(), -======= - vec![stark_felt!(keys.len() as u16)], - keys.to_owned(), - vec![stark_felt!(data.len() as u16)], - data.to_owned(), ->>>>>>> origin/main-v0.13.0-hotfix ]) .into(), ); diff --git a/crates/blockifier/src/transaction/transactions_test.rs b/crates/blockifier/src/transaction/transactions_test.rs index 0e250f789e..64b4af179a 100644 --- a/crates/blockifier/src/transaction/transactions_test.rs +++ b/crates/blockifier/src/transaction/transactions_test.rs @@ -35,7 +35,9 @@ use crate::execution::entry_point::{CallEntryPoint, CallType}; use crate::execution::errors::EntryPointExecutionError; use crate::execution::execution_utils::{felt_to_stark_felt, stark_felt_to_felt}; use crate::execution::syscalls::hint_processor::EmitEventError; -use crate::execution::syscalls::{SYSCALL_MAX_EVENT_DATA, SYSCALL_MAX_EVENT_KEYS}; +use crate::execution::syscalls::{ + SYSCALL_MAX_EVENT_DATA, SYSCALL_MAX_EVENT_KEYS, SYSCALL_MAX_N_EMITTED_EVENTS, +}; use crate::fee::fee_utils::calculate_tx_fee; use crate::fee::gas_usage::{ estimate_minimal_gas_vector, get_calldata_and_signature_gas_cost, get_code_gas_cost, @@ -1706,9 +1708,18 @@ fn test_execute_tx_with_invalid_transaction_version() { #[test_case( vec![stark_felt!(1_u16); SYSCALL_MAX_EVENT_KEYS], vec![stark_felt!(2_u16); SYSCALL_MAX_EVENT_DATA], - 10, + SYSCALL_MAX_N_EMITTED_EVENTS, None; "Positive flow")] +#[test_case( + vec![stark_felt!(1_u16)], + vec![stark_felt!(2_u16)], + SYSCALL_MAX_N_EMITTED_EVENTS + 1, + Some(EmitEventError::ExceedsMaxNumberOfEmittedEvents { + n_emitted_events: SYSCALL_MAX_N_EMITTED_EVENTS + 1, + max_n_emitted_events: SYSCALL_MAX_N_EMITTED_EVENTS, + }); + "exceeds max number of events")] #[test_case( vec![stark_felt!(3_u16); SYSCALL_MAX_EVENT_KEYS + 1], vec![stark_felt!(4_u16)],