From 3a780961c5cbc3589920dbb88a1f04cc943241d4 Mon Sep 17 00:00:00 2001 From: Kirill Date: Wed, 19 Jun 2024 15:29:24 +0400 Subject: [PATCH 01/28] Update blockifier to 0.8.0-dev.0 --- starknet/rust/Cargo.toml | 2 +- vm/rust/Cargo.toml | 7 ++-- vm/rust/src/jsonrpc.rs | 42 ++++++++++++------------ vm/rust/src/juno_state_reader.rs | 34 ++++++++++++++------ vm/rust/src/lib.rs | 55 +++++++++++++++++++------------- 5 files changed, 84 insertions(+), 56 deletions(-) diff --git a/starknet/rust/Cargo.toml b/starknet/rust/Cargo.toml index 10fdc905dc..33d9a6bb37 100644 --- a/starknet/rust/Cargo.toml +++ b/starknet/rust/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" [dependencies] serde = "1.0.171" serde_json = { version = "1.0.96", features = ["raw_value"] } -cairo-lang-starknet-classes = "=2.6.0" +cairo-lang-starknet-classes = "=2.7.0-dev.0" [lib] crate-type = ["staticlib"] diff --git a/vm/rust/Cargo.toml b/vm/rust/Cargo.toml index fe134dc3cb..86d2c570ba 100644 --- a/vm/rust/Cargo.toml +++ b/vm/rust/Cargo.toml @@ -8,9 +8,10 @@ edition = "2021" [dependencies] serde = "1.0.171" serde_json = { version = "1.0.96", features = ["raw_value"] } -blockifier = "=0.6.0-rc.2" -starknet_api = "=0.10.0" -cairo-vm = "=0.9.2" +blockifier = "=0.8.0-dev.0" +starknet_api = "=0.13.0-dev.6" +starknet-types-core = { version = "0.1.2", features = ["hash"] } +cairo-vm = "=1.0.0-rc3" indexmap = "2.1.0" cached = "0.46.1" once_cell = "1.18.0" diff --git a/vm/rust/src/jsonrpc.rs b/vm/rust/src/jsonrpc.rs index 04984300f0..4ff36af5ce 100644 --- a/vm/rust/src/jsonrpc.rs +++ b/vm/rust/src/jsonrpc.rs @@ -1,20 +1,20 @@ use blockifier; use blockifier::execution::entry_point::CallType; use blockifier::execution::call_info::OrderedL2ToL1Message; -use cairo_vm::vm::runners::builtin_runner::{ - BITWISE_BUILTIN_NAME, EC_OP_BUILTIN_NAME, HASH_BUILTIN_NAME, - POSEIDON_BUILTIN_NAME, RANGE_CHECK_BUILTIN_NAME, SIGNATURE_BUILTIN_NAME, KECCAK_BUILTIN_NAME, - SEGMENT_ARENA_BUILTIN_NAME, -}; +use cairo_vm::types::builtin_name::BuiltinName; use blockifier::state::cached_state::TransactionalState; use blockifier::state::errors::StateError; use blockifier::state::state_api::{State, StateReader}; use serde::Serialize; use starknet_api::core::{ClassHash, ContractAddress, EntryPointSelector, PatriciaKey, EthAddress}; use starknet_api::deprecated_contract_class::EntryPointType; -use starknet_api::hash::StarkFelt; +// use starknet_api::hash::StarkFelt; +use starknet_types_core::felt::Felt; use starknet_api::transaction::{Calldata, EventContent, L2ToL1Payload}; use starknet_api::transaction::{DeclareTransaction, Transaction as StarknetApiTransaction}; +use blockifier::state::cached_state::CachedState; + +type StarkFelt = Felt; use crate::juno_state_reader::JunoStateReader; @@ -104,7 +104,7 @@ type BlockifierTxInfo = blockifier::transaction::objects::TransactionExecutionIn pub fn new_transaction_trace( tx: &StarknetApiTransaction, info: BlockifierTxInfo, - state: &mut TransactionalState, + state: &mut TransactionalState>, ) -> Result { let mut trace = TransactionTrace::default(); let mut deprecated_declared_class: Option = None; @@ -150,7 +150,7 @@ pub fn new_transaction_trace( } }; - trace.state_diff = make_state_diff(state, deprecated_declared_class)?; + //trace.state_diff = make_state_diff(state, deprecated_declared_class)?; Ok(trace) } @@ -205,14 +205,14 @@ impl From for ExecutionResources { } else { None }, - range_check_builtin_applications: val.builtin_instance_counter.get(RANGE_CHECK_BUILTIN_NAME).cloned(), - pedersen_builtin_applications: val.builtin_instance_counter.get(HASH_BUILTIN_NAME).cloned(), - poseidon_builtin_applications: val.builtin_instance_counter.get(POSEIDON_BUILTIN_NAME).cloned(), - ec_op_builtin_applications: val.builtin_instance_counter.get(EC_OP_BUILTIN_NAME).cloned(), - ecdsa_builtin_applications: val.builtin_instance_counter.get(SIGNATURE_BUILTIN_NAME).cloned(), - bitwise_builtin_applications: val.builtin_instance_counter.get(BITWISE_BUILTIN_NAME).cloned(), - keccak_builtin_applications: val.builtin_instance_counter.get(KECCAK_BUILTIN_NAME).cloned(), - segment_arena_builtin: val.builtin_instance_counter.get(SEGMENT_ARENA_BUILTIN_NAME).cloned(), + range_check_builtin_applications: val.builtin_instance_counter.get(&BuiltinName::range_check).cloned(), + pedersen_builtin_applications: val.builtin_instance_counter.get(&BuiltinName::pedersen).cloned(), + poseidon_builtin_applications: val.builtin_instance_counter.get(&BuiltinName::poseidon).cloned(), + ec_op_builtin_applications: val.builtin_instance_counter.get(&BuiltinName::ec_op).cloned(), + ecdsa_builtin_applications: val.builtin_instance_counter.get(&BuiltinName::ecdsa).cloned(), + bitwise_builtin_applications: val.builtin_instance_counter.get(&BuiltinName::bitwise).cloned(), + keccak_builtin_applications: val.builtin_instance_counter.get(&BuiltinName::keccak).cloned(), + segment_arena_builtin: val.builtin_instance_counter.get(&BuiltinName::segment_arena).cloned(), } } } @@ -297,15 +297,16 @@ impl From for OrderedMessage { #[derive(Debug, Serialize)] pub struct Retdata(pub Vec); +/* fn make_state_diff( - state: &mut TransactionalState, + state: &mut TransactionalState, // todo remove mut deprecated_declared_class: Option, ) -> Result { - let diff = state.to_state_diff(); + let diff = state.to_state_diff().unwrap();// todo remove unwrap let mut deployed_contracts = Vec::new(); let mut replaced_classes = Vec::new(); - for pair in diff.address_to_class_hash { + for pair in diff.class_hashes { let existing_class_hash = state.state.get_class_hash_at(pair.0)?; if existing_class_hash == ClassHash::default() { #[rustfmt::skip] @@ -337,7 +338,7 @@ fn make_state_diff( }).collect() }).collect(), #[rustfmt::skip] - declared_classes: diff.class_hash_to_compiled_class_hash.into_iter().map(| v | DeclaredClass { + declared_classes: diff.compiled_class_hashes.into_iter().map(| v | DeclaredClass { class_hash: v.0.0, compiled_class_hash: v.1.0, }).collect(), @@ -350,3 +351,4 @@ fn make_state_diff( replaced_classes, }) } +*/ \ No newline at end of file diff --git a/vm/rust/src/juno_state_reader.rs b/vm/rust/src/juno_state_reader.rs index af662ea008..f13727a43f 100644 --- a/vm/rust/src/juno_state_reader.rs +++ b/vm/rust/src/juno_state_reader.rs @@ -6,17 +6,23 @@ use std::{ use blockifier::execution::contract_class::ContractClass; use blockifier::state::errors::StateError; +use blockifier::state::state_api::{UpdatableState}; +use std::collections::{HashMap, HashSet}; use blockifier::{ execution::contract_class::{ClassInfo as BlockifierClassInfo, ContractClassV0, ContractClassV1}, state::state_api::{StateReader, StateResult}, + state::cached_state::{StateMaps, ContractClassMapping}, }; use cached::{Cached, SizedCache}; use once_cell::sync::Lazy; use serde::Deserialize; use starknet_api::core::{ClassHash, CompiledClassHash, ContractAddress, Nonce}; -use starknet_api::hash::StarkFelt; +// use starknet_api::hash::StarkFelt; +use starknet_types_core::felt::Felt; use starknet_api::state::StorageKey; +type StarkFelt = Felt; + extern "C" { fn JunoFree(ptr: *const c_void); @@ -58,7 +64,7 @@ impl JunoStateReader { impl StateReader for JunoStateReader { fn get_storage_at( - &mut self, + &self, contract_address: ContractAddress, key: StorageKey, ) -> StateResult { @@ -82,7 +88,7 @@ impl StateReader for JunoStateReader { /// Returns the nonce of the given contract instance. /// Default: 0 for an uninitialized contract address. - fn get_nonce_at(&mut self, contract_address: ContractAddress) -> StateResult { + fn get_nonce_at(&self, contract_address: ContractAddress) -> StateResult { let addr = felt_to_byte_array(contract_address.0.key()); let ptr = unsafe { JunoStateGetNonceAt(self.handle, addr.as_ptr()) }; if ptr.is_null() { @@ -99,7 +105,7 @@ impl StateReader for JunoStateReader { /// Returns the class hash of the contract class at the given contract instance. /// Default: 0 (uninitialized class hash) for an uninitialized contract address. - fn get_class_hash_at(&mut self, contract_address: ContractAddress) -> StateResult { + fn get_class_hash_at(&self, contract_address: ContractAddress) -> StateResult { let addr = felt_to_byte_array(contract_address.0.key()); let ptr = unsafe { JunoStateGetClassHashAt(self.handle, addr.as_ptr()) }; if ptr.is_null() { @@ -117,7 +123,7 @@ impl StateReader for JunoStateReader { /// Returns the contract class of the given class hash. fn get_compiled_contract_class( - &mut self, + &self, class_hash: ClassHash, ) -> StateResult { if let Some(cached_class) = CLASS_CACHE.lock().unwrap().cache_get(&class_hash) { @@ -168,21 +174,31 @@ impl StateReader for JunoStateReader { /// Returns the compiled class hash of the given class hash. fn get_compiled_class_hash( - &mut self, + &self, _class_hash: ClassHash, ) -> StateResult { unimplemented!() } } +impl UpdatableState for JunoStateReader { + fn apply_writes( + &mut self, + writes: &StateMaps, + class_hash_to_class: &ContractClassMapping, + visited_pcs: &HashMap>, + ) { + unimplemented!() + } +} + pub fn felt_to_byte_array(felt: &StarkFelt) -> [u8; 32] { - felt.bytes().try_into().expect("StarkFelt not [u8; 32]") + felt.to_bytes_be().try_into().expect("StarkFelt not [u8; 32]") } pub fn ptr_to_felt(bytes: *const c_uchar) -> StarkFelt { let slice = unsafe { slice::from_raw_parts(bytes, 32) }; - StarkFelt::new(slice.try_into().expect("Juno felt not [u8; 32]")) - .expect("cannot new Starkfelt from Juno bytes") + StarkFelt::from_bytes_be_slice(slice) } #[derive(Deserialize)] diff --git a/vm/rust/src/lib.rs b/vm/rust/src/lib.rs index 54a9c9ab3a..6319628ab6 100644 --- a/vm/rust/src/lib.rs +++ b/vm/rust/src/lib.rs @@ -9,11 +9,13 @@ use std::{ collections::HashMap, ffi::{c_char, c_longlong, c_uchar, c_ulonglong, c_void, CStr, CString}, num::NonZeroU128, slice, sync::Arc }; +use blockifier::state::global_cache::GlobalContractCache; +use blockifier::blockifier::block::{pre_process_block, BlockInfo as BlockifierBlockInfo, BlockNumberHashPair, GasPrices}; use blockifier::{ - block::{pre_process_block, BlockInfo as BlockifierBlockInfo, BlockNumberHashPair, GasPrices}, context::{BlockContext, ChainInfo, FeeTokenAddresses, TransactionContext}, execution::{ + context::{BlockContext, ChainInfo, FeeTokenAddresses, TransactionContext}, execution::{ contract_class::ClassInfo, entry_point::{CallEntryPoint, CallType, EntryPointExecutionContext}, - }, fee::fee_utils::calculate_tx_fee, state::{cached_state::{CachedState, GlobalContractCache}, state_api::State}, transaction::{ + }, fee::fee_utils::calculate_tx_fee, state::{cached_state::{CachedState}, state_api::State}, transaction::{ errors::TransactionExecutionError::{ ContractConstructorExecutionFailed, ExecutionError, @@ -27,15 +29,20 @@ use serde::Deserialize; use starknet_api::{block::BlockHash, core::PatriciaKey, transaction::{Calldata, Transaction as StarknetApiTransaction, TransactionHash}}; use starknet_api::{ deprecated_contract_class::EntryPointType, - hash::StarkFelt, transaction::Fee, }; +// use starknet_api::hash::StarkFelt; +use starknet_types_core::felt::Felt; use starknet_api::{ core::{ChainId, ClassHash, ContractAddress, EntryPointSelector}, hash::StarkHash, }; use std::str::FromStr; +type StarkFelt = Felt; + +const CONCURRENCY_MODE: bool = false; + extern "C" { fn JunoReportError(reader_handle: usize, txnIndex: c_longlong, err: *const c_char); fn JunoAppendTrace(reader_handle: usize, json_trace: *const c_void, len: usize); @@ -81,13 +88,13 @@ pub extern "C" fn cairoVMCall( let call_info = unsafe { *call_info_ptr }; let reader = JunoStateReader::new(reader_handle, block_info.block_number); - let contract_addr_felt = StarkFelt::new(call_info.contract_address).unwrap(); + let contract_addr_felt = StarkFelt::from_bytes_be(&call_info.contract_address); let class_hash = if call_info.class_hash == [0; 32] { None } else { - Some(ClassHash(StarkFelt::new(call_info.class_hash).unwrap())) + Some(ClassHash(StarkFelt::from_bytes_be(&call_info.class_hash))) }; - let entry_point_selector_felt = StarkFelt::new(call_info.entry_point_selector).unwrap(); + let entry_point_selector_felt = StarkFelt::from_bytes_be(&call_info.entry_point_selector); let chain_id_str = unsafe { CStr::from_ptr(chain_id) }.to_str().unwrap(); let mut calldata_vec: Vec = Vec::with_capacity(call_info.len_calldata); @@ -108,10 +115,10 @@ pub extern "C" fn cairoVMCall( class_hash: class_hash, code_address: None, caller_address: ContractAddress::default(), - initial_gas: get_versioned_constants(block_info.version).gas_cost("initial_gas_cost"), + initial_gas: get_versioned_constants(block_info.version).tx_initial_gas(), }; - let mut state = CachedState::new(reader, GlobalContractCache::new(1)); + let mut state = CachedState::new(reader); let mut resources = ExecutionResources::default(); let context = EntryPointExecutionContext::new_invoke( Arc::new(TransactionContext { @@ -187,7 +194,7 @@ pub extern "C" fn cairoVMExecute( } }; - let mut state = CachedState::new(reader, GlobalContractCache::new(1)); + let mut state = CachedState::new(reader); let txns_and_query_bits = txns_and_query_bits.unwrap(); let mut classes = classes.unwrap(); let block_context: BlockContext = build_block_context(&mut state, &block_info, chain_id_str, None); @@ -254,9 +261,9 @@ pub extern "C" fn cairoVMExecute( match res { Err(error) => { let err_string = match &error { - ContractConstructorExecutionFailed(e) - | ExecutionError(e) - | ValidateTransactionError(e) => format!("{error} {e}"), + ContractConstructorExecutionFailed(e) => format!("{error} {e}"), + /*| ExecutionError(e) + | ValidateTransactionError(e)*/ other => other.to_string() }; report_error( @@ -317,7 +324,8 @@ pub extern "C" fn cairoVMExecute( } fn felt_to_u128(felt: StarkFelt) -> u128 { - let bytes = felt.bytes(); + // todo find Into trait or similar + let bytes = felt.to_bytes_be(); let mut arr = [0u8; 16]; arr.copy_from_slice(&bytes[16..32]); @@ -381,18 +389,18 @@ fn build_block_context( chain_id_str: &str, max_steps: Option, ) -> BlockContext { - let sequencer_addr = StarkFelt::new(block_info.sequencer_address).unwrap(); - let gas_price_wei_felt = StarkFelt::new(block_info.gas_price_wei).unwrap(); - let gas_price_fri_felt = StarkFelt::new(block_info.gas_price_fri).unwrap(); - let data_gas_price_wei_felt = StarkFelt::new(block_info.data_gas_price_wei).unwrap(); - let data_gas_price_fri_felt = StarkFelt::new(block_info.data_gas_price_fri).unwrap(); + let sequencer_addr = StarkFelt::from_bytes_be(&block_info.sequencer_address); + let gas_price_wei_felt = StarkFelt::from_bytes_be(&block_info.gas_price_wei); + let gas_price_fri_felt = StarkFelt::from_bytes_be(&block_info.gas_price_fri); + let data_gas_price_wei_felt = StarkFelt::from_bytes_be(&block_info.data_gas_price_wei); + let data_gas_price_fri_felt = StarkFelt::from_bytes_be(&block_info.data_gas_price_fri); let default_gas_price = NonZeroU128::new(1).unwrap(); let mut old_block_number_and_hash: Option = None; if block_info.block_number >= 10 { old_block_number_and_hash = Some(BlockNumberHashPair{ number: starknet_api::block::BlockNumber(block_info.block_number - 10), - hash: BlockHash(StarkFelt::new(block_info.block_hash_to_be_revealed).unwrap()), + hash: BlockHash(StarkFelt::from_bytes_be(&block_info.block_hash_to_be_revealed)), }) } let mut constants = get_versioned_constants(block_info.version); @@ -412,13 +420,13 @@ fn build_block_context( }, use_kzg_da: block_info.use_blob_data == 1, }, ChainInfo{ - chain_id: ChainId(chain_id_str.to_string()), + chain_id: ChainId::Other(chain_id_str.to_string()), // todo change that fee_token_addresses: FeeTokenAddresses { // both addresses are the same for all networks - eth_fee_token_address: ContractAddress::try_from(StarkHash::try_from("0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7").unwrap()).unwrap(), - strk_fee_token_address: ContractAddress::try_from(StarkHash::try_from("0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d").unwrap()).unwrap(), + eth_fee_token_address: ContractAddress::try_from(StarkHash::from_hex("0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7").unwrap()).unwrap(), + strk_fee_token_address: ContractAddress::try_from(StarkHash::from_hex("0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d").unwrap()).unwrap(), }, - }, constants).unwrap() + }, constants, CONCURRENCY_MODE).unwrap() } @@ -429,6 +437,7 @@ lazy_static! { let mut m = HashMap::new(); m.insert("0.13.0".to_string(), serde_json::from_slice(include_bytes!("../versioned_constants_13_0.json")).unwrap()); m.insert("0.13.1".to_string(), serde_json::from_slice(include_bytes!("../versioned_constants_13_1.json")).unwrap()); + // todo add 0.13.2 ? m }; } From a36430e2990712b20499c62387576691fa9de746 Mon Sep 17 00:00:00 2001 From: Kirill Date: Fri, 21 Jun 2024 15:32:42 +0400 Subject: [PATCH 02/28] Update versioned_constants json files --- vm/rust/versioned_constants_13_0.json | 186 ++++++-- vm/rust/versioned_constants_13_1.json | 227 +++++++--- vm/rust/versioned_constants_13_1_1.json | 577 ++++++++++++++++++++++++ 3 files changed, 905 insertions(+), 85 deletions(-) create mode 100644 vm/rust/versioned_constants_13_1_1.json diff --git a/vm/rust/versioned_constants_13_0.json b/vm/rust/versioned_constants_13_0.json index 28bec8d829..d21317ef2b 100644 --- a/vm/rust/versioned_constants_13_0.json +++ b/vm/rust/versioned_constants_13_0.json @@ -346,49 +346,177 @@ }, "execute_txs_inner": { "Declare": { - "builtin_instance_counter": { - "pedersen_builtin": 15, - "range_check_builtin": 63 + "resources": { + "constant": { + "builtin_instance_counter": { + "pedersen_builtin": 15, + "range_check_builtin": 63 + }, + "n_memory_holes": 0, + "n_steps": 2711 + }, + "calldata_factor": { + "n_steps": 0, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + } }, - "n_memory_holes": 0, - "n_steps": 2711 + "deprecated_resources": { + "constant": { + "builtin_instance_counter": { + "pedersen_builtin": 15, + "range_check_builtin": 63 + }, + "n_memory_holes": 0, + "n_steps": 2711 + }, + "calldata_factor": { + "n_steps": 0, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + } + } }, "DeployAccount": { - "builtin_instance_counter": { - "pedersen_builtin": 23, - "range_check_builtin": 83 + "resources": { + "constant": { + "builtin_instance_counter": { + "pedersen_builtin": 23, + "range_check_builtin": 83 + }, + "n_memory_holes": 0, + "n_steps": 3628 + }, + "calldata_factor": { + "n_steps": 0, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + } }, - "n_memory_holes": 0, - "n_steps": 3628 + "deprecated_resources": { + "constant": { + "builtin_instance_counter": { + "pedersen_builtin": 23, + "range_check_builtin": 83 + }, + "n_memory_holes": 0, + "n_steps": 3628 + }, + "calldata_factor": { + "n_steps": 0, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + } + } }, "InvokeFunction": { - "builtin_instance_counter": { - "pedersen_builtin": 16, - "range_check_builtin": 80 + "resources": { + "constant": { + "builtin_instance_counter": { + "pedersen_builtin": 16, + "range_check_builtin": 80 + }, + "n_memory_holes": 0, + "n_steps": 3382 + }, + "calldata_factor": { + "n_steps": 0, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + } }, - "n_memory_holes": 0, - "n_steps": 3382 + "deprecated_resources": { + "constant": { + "builtin_instance_counter": { + "pedersen_builtin": 16, + "range_check_builtin": 80 + }, + "n_memory_holes": 0, + "n_steps": 3382 + }, + "calldata_factor": { + "n_steps": 0, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + } + } }, "L1Handler": { - "builtin_instance_counter": { - "pedersen_builtin": 11, - "range_check_builtin": 17 + "resources": { + "constant": { + "builtin_instance_counter": { + "pedersen_builtin": 11, + "range_check_builtin": 17 + }, + "n_memory_holes": 0, + "n_steps": 1069 + }, + "calldata_factor": { + "n_steps": 0, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + } }, - "n_memory_holes": 0, - "n_steps": 1069 + "deprecated_resources": { + "constant": { + "builtin_instance_counter": { + "pedersen_builtin": 11, + "range_check_builtin": 17 + }, + "n_memory_holes": 0, + "n_steps": 1069 + }, + "calldata_factor": { + "n_steps": 0, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + } + } } + }, + "compute_os_kzg_commitment_info": { + "n_steps": 0, + "builtin_instance_counter": {}, + "n_memory_holes": 0 } }, "validate_max_n_steps": 1000000, "vm_resource_fee_cost": { - "bitwise_builtin": 0.32, - "ec_op_builtin": 5.12, - "ecdsa_builtin": 10.24, - "keccak_builtin": 10.24, - "n_steps": 0.005, - "output_builtin": 0, - "pedersen_builtin": 0.16, - "poseidon_builtin": 0.16, - "range_check_builtin": 0.08 + "bitwise_builtin": [ + 32, + 100 + ], + "ec_op_builtin": [ + 512, + 100 + ], + "ecdsa_builtin": [ + 1024, + 100 + ], + "keccak_builtin": [ + 1024, + 100 + ], + "n_steps": [ + 5, + 1000 + ], + "output_builtin": [ + 0, + 1 + ], + "pedersen_builtin": [ + 16, + 100 + ], + "poseidon_builtin": [ + 16, + 100 + ], + "range_check_builtin": [ + 8, + 100 + ] } } diff --git a/vm/rust/versioned_constants_13_1.json b/vm/rust/versioned_constants_13_1.json index e66c7fb8d5..db26ed01be 100644 --- a/vm/rust/versioned_constants_13_1.json +++ b/vm/rust/versioned_constants_13_1.json @@ -10,9 +10,18 @@ }, "invoke_tx_max_n_steps": 4000000, "l2_resource_gas_costs": { - "milligas_per_data_felt": 128, - "event_key_factor": 2, - "milligas_per_code_byte": 875 + "gas_per_data_felt": [ + 128, + 1000 + ], + "event_key_factor": [ + 2, + 1 + ], + "gas_per_code_byte": [ + 875, + 1000 + ] }, "max_recursion_depth": 50, "os_constants": { @@ -380,83 +389,189 @@ }, "execute_txs_inner": { "Declare": { - "constant": { - "n_steps": 2839, - "builtin_instance_counter": { - "pedersen_builtin": 16, - "range_check_builtin": 63 + "resources": { + "constant": { + "n_steps": 2839, + "builtin_instance_counter": { + "pedersen_builtin": 16, + "range_check_builtin": 63 + }, + "n_memory_holes": 0 }, - "n_memory_holes": 0 + "calldata_factor": { + "n_steps": 0, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + } }, - "calldata_factor": { - "n_steps": 0, - "builtin_instance_counter": {}, - "n_memory_holes": 0 + "deprecated_resources": { + "constant": { + "n_steps": 2839, + "builtin_instance_counter": { + "pedersen_builtin": 16, + "range_check_builtin": 63 + }, + "n_memory_holes": 0 + }, + "calldata_factor": { + "n_steps": 0, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + } } }, "DeployAccount": { - "constant": { - "n_steps": 3792, - "builtin_instance_counter": { - "pedersen_builtin": 23, - "range_check_builtin": 83 + "resources": { + "constant": { + "n_steps": 3792, + "builtin_instance_counter": { + "pedersen_builtin": 23, + "range_check_builtin": 83 + }, + "n_memory_holes": 0 }, - "n_memory_holes": 0 + "calldata_factor": { + "n_steps": 21, + "builtin_instance_counter": { + "pedersen_builtin": 2 + }, + "n_memory_holes": 0 + } }, - "calldata_factor": { - "n_steps": 21, - "builtin_instance_counter": { - "pedersen_builtin": 2 + "deprecated_resources": { + "constant": { + "n_steps": 3792, + "builtin_instance_counter": { + "pedersen_builtin": 23, + "range_check_builtin": 83 + }, + "n_memory_holes": 0 }, - "n_memory_holes": 0 + "calldata_factor": { + "n_steps": 21, + "builtin_instance_counter": { + "pedersen_builtin": 2 + }, + "n_memory_holes": 0 + } } }, "InvokeFunction": { - "constant": { - "n_steps": 3546, - "builtin_instance_counter": { - "pedersen_builtin": 14, - "range_check_builtin": 80 + "resources": { + "constant": { + "n_steps": 3546, + "builtin_instance_counter": { + "pedersen_builtin": 14, + "range_check_builtin": 80 + }, + "n_memory_holes": 0 }, - "n_memory_holes": 0 + "calldata_factor": { + "n_steps": 8, + "builtin_instance_counter": { + "pedersen_builtin": 1 + }, + "n_memory_holes": 0 + } }, - "calldata_factor": { - "n_steps": 8, - "builtin_instance_counter": { - "pedersen_builtin": 1 + "deprecated_resources": { + "constant": { + "n_steps": 3546, + "builtin_instance_counter": { + "pedersen_builtin": 14, + "range_check_builtin": 80 + }, + "n_memory_holes": 0 }, - "n_memory_holes": 0 + "calldata_factor": { + "n_steps": 8, + "builtin_instance_counter": { + "pedersen_builtin": 1 + }, + "n_memory_holes": 0 + } } }, "L1Handler": { - "constant": { - "n_steps": 1146, - "builtin_instance_counter": { - "pedersen_builtin": 11, - "range_check_builtin": 17 + "resources": { + "constant": { + "n_steps": 1146, + "builtin_instance_counter": { + "pedersen_builtin": 11, + "range_check_builtin": 17 + }, + "n_memory_holes": 0 }, - "n_memory_holes": 0 + "calldata_factor": { + "n_steps": 13, + "builtin_instance_counter": { + "pedersen_builtin": 1 + }, + "n_memory_holes": 0 + } }, - "calldata_factor": { - "n_steps": 13, - "builtin_instance_counter": { - "pedersen_builtin": 1 + "deprecated_resources": { + "constant": { + "n_steps": 1146, + "builtin_instance_counter": { + "pedersen_builtin": 11, + "range_check_builtin": 17 + }, + "n_memory_holes": 0 }, - "n_memory_holes": 0 + "calldata_factor": { + "n_steps": 13, + "builtin_instance_counter": { + "pedersen_builtin": 1 + }, + "n_memory_holes": 0 + } } } + }, + "compute_os_kzg_commitment_info": { + "n_steps": 0, + "builtin_instance_counter": {}, + "n_memory_holes": 0 } }, "validate_max_n_steps": 1000000, "vm_resource_fee_cost": { - "bitwise_builtin": 0.16, - "ec_op_builtin": 2.56, - "ecdsa_builtin": 5.12, - "keccak_builtin": 5.12, - "n_steps": 0.0025, - "output_builtin": 0, - "pedersen_builtin": 0.08, - "poseidon_builtin": 0.08, - "range_check_builtin": 0.04 + "bitwise_builtin": [ + 16, + 100 + ], + "ec_op_builtin": [ + 256, + 100 + ], + "ecdsa_builtin": [ + 512, + 100 + ], + "keccak_builtin": [ + 512, + 100 + ], + "n_steps": [ + 25, + 10000 + ], + "output_builtin": [ + 0, + 1 + ], + "pedersen_builtin": [ + 8, + 100 + ], + "poseidon_builtin": [ + 8, + 100 + ], + "range_check_builtin": [ + 4, + 100 + ] } -} \ No newline at end of file +} diff --git a/vm/rust/versioned_constants_13_1_1.json b/vm/rust/versioned_constants_13_1_1.json new file mode 100644 index 0000000000..0087955c8a --- /dev/null +++ b/vm/rust/versioned_constants_13_1_1.json @@ -0,0 +1,577 @@ +{ + "tx_event_limits": { + "max_data_length": 300, + "max_keys_length": 50, + "max_n_emitted_events": 1000 + }, + "gateway": { + "max_calldata_length": 5000, + "max_contract_bytecode_size": 81920 + }, + "invoke_tx_max_n_steps": 4000000, + "l2_resource_gas_costs": { + "gas_per_data_felt": [ + 128, + 1000 + ], + "event_key_factor": [ + 2, + 1 + ], + "gas_per_code_byte": [ + 32, + 1000 + ] + }, + "max_recursion_depth": 50, + "os_constants": { + "nop_entry_point_offset": -1, + "entry_point_type_external": 0, + "entry_point_type_l1_handler": 1, + "entry_point_type_constructor": 2, + "l1_handler_version": 0, + "sierra_array_len_bound": 4294967296, + "constructor_entry_point_selector": "0x28ffe4ff0f226a9107253e17a904099aa4f63a02a5621de0576e5aa71bc5194", + "execute_entry_point_selector": "0x15d40a3d6ca2ac30f4031e42be28da9b056fef9bb7357ac5e85627ee876e5ad", + "validate_entry_point_selector": "0x162da33a4585851fe8d3af3c2a9c60b557814e221e0d4f30ff0b2189d9c7775", + "validate_declare_entry_point_selector": "0x289da278a8dc833409cabfdad1581e8e7d40e42dcaed693fa4008dcdb4963b3", + "validate_deploy_entry_point_selector": "0x36fcbf06cd96843058359e1a75928beacfac10727dab22a3972f0af8aa92895", + "transfer_entry_point_selector": "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "default_entry_point_selector": 0, + "block_hash_contract_address": 1, + "stored_block_hash_buffer": 10, + "step_gas_cost": 100, + "range_check_gas_cost": 70, + "memory_hole_gas_cost": 10, + "initial_gas_cost": { + "step_gas_cost": 100000000 + }, + "entry_point_initial_budget": { + "step_gas_cost": 100 + }, + "syscall_base_gas_cost": { + "step_gas_cost": 100 + }, + "entry_point_gas_cost": { + "entry_point_initial_budget": 1, + "step_gas_cost": 500 + }, + "fee_transfer_gas_cost": { + "entry_point_gas_cost": 1, + "step_gas_cost": 100 + }, + "transaction_gas_cost": { + "entry_point_gas_cost": 2, + "fee_transfer_gas_cost": 1, + "step_gas_cost": 100 + }, + "call_contract_gas_cost": { + "syscall_base_gas_cost": 1, + "step_gas_cost": 10, + "entry_point_gas_cost": 1 + }, + "deploy_gas_cost": { + "syscall_base_gas_cost": 1, + "step_gas_cost": 200, + "entry_point_gas_cost": 1 + }, + "get_block_hash_gas_cost": { + "syscall_base_gas_cost": 1, + "step_gas_cost": 50 + }, + "get_execution_info_gas_cost": { + "syscall_base_gas_cost": 1, + "step_gas_cost": 10 + }, + "library_call_gas_cost": { + "call_contract_gas_cost": 1 + }, + "replace_class_gas_cost": { + "syscall_base_gas_cost": 1, + "step_gas_cost": 50 + }, + "storage_read_gas_cost": { + "syscall_base_gas_cost": 1, + "step_gas_cost": 50 + }, + "storage_write_gas_cost": { + "syscall_base_gas_cost": 1, + "step_gas_cost": 50 + }, + "emit_event_gas_cost": { + "syscall_base_gas_cost": 1, + "step_gas_cost": 10 + }, + "send_message_to_l1_gas_cost": { + "syscall_base_gas_cost": 1, + "step_gas_cost": 50 + }, + "secp256k1_add_gas_cost": { + "step_gas_cost": 406, + "range_check_gas_cost": 29 + }, + "secp256k1_get_point_from_x_gas_cost": { + "step_gas_cost": 391, + "range_check_gas_cost": 30, + "memory_hole_gas_cost": 20 + }, + "secp256k1_get_xy_gas_cost": { + "step_gas_cost": 239, + "range_check_gas_cost": 11, + "memory_hole_gas_cost": 40 + }, + "secp256k1_mul_gas_cost": { + "step_gas_cost": 76501, + "range_check_gas_cost": 7045, + "memory_hole_gas_cost": 2 + }, + "secp256k1_new_gas_cost": { + "step_gas_cost": 475, + "range_check_gas_cost": 35, + "memory_hole_gas_cost": 40 + }, + "secp256r1_add_gas_cost": { + "step_gas_cost": 589, + "range_check_gas_cost": 57 + }, + "secp256r1_get_point_from_x_gas_cost": { + "step_gas_cost": 510, + "range_check_gas_cost": 44, + "memory_hole_gas_cost": 20 + }, + "secp256r1_get_xy_gas_cost": { + "step_gas_cost": 241, + "range_check_gas_cost": 11, + "memory_hole_gas_cost": 40 + }, + "secp256r1_mul_gas_cost": { + "step_gas_cost": 125340, + "range_check_gas_cost": 13961, + "memory_hole_gas_cost": 2 + }, + "secp256r1_new_gas_cost": { + "step_gas_cost": 594, + "range_check_gas_cost": 49, + "memory_hole_gas_cost": 40 + }, + "keccak_gas_cost": { + "syscall_base_gas_cost": 1 + }, + "keccak_round_cost_gas_cost": 180000, + "error_block_number_out_of_range": "Block number out of range", + "error_out_of_gas": "Out of gas", + "error_invalid_input_len": "Invalid input length", + "error_invalid_argument": "Invalid argument", + "validated": "VALID", + "l1_gas": "L1_GAS", + "l2_gas": "L2_GAS", + "l1_gas_index": 0, + "l2_gas_index": 1, + "validate_rounding_consts": { + "validate_block_number_rounding": 100, + "validate_timestamp_rounding": 3600 + } + }, + "os_resources": { + "execute_syscalls": { + "CallContract": { + "n_steps": 760, + "builtin_instance_counter": { + "range_check_builtin": 20 + }, + "n_memory_holes": 0 + }, + "DelegateCall": { + "n_steps": 713, + "builtin_instance_counter": { + "range_check_builtin": 19 + }, + "n_memory_holes": 0 + }, + "DelegateL1Handler": { + "n_steps": 692, + "builtin_instance_counter": { + "range_check_builtin": 15 + }, + "n_memory_holes": 0 + }, + "Deploy": { + "n_steps": 1012, + "builtin_instance_counter": { + "pedersen_builtin": 7, + "range_check_builtin": 19 + }, + "n_memory_holes": 0 + }, + "EmitEvent": { + "n_steps": 61, + "builtin_instance_counter": { + "range_check_builtin": 1 + }, + "n_memory_holes": 0 + }, + "GetBlockHash": { + "n_steps": 104, + "builtin_instance_counter": { + "range_check_builtin": 2 + }, + "n_memory_holes": 0 + }, + "GetBlockNumber": { + "n_steps": 40, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + }, + "GetBlockTimestamp": { + "n_steps": 38, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + }, + "GetCallerAddress": { + "n_steps": 64, + "builtin_instance_counter": { + "range_check_builtin": 1 + }, + "n_memory_holes": 0 + }, + "GetContractAddress": { + "n_steps": 64, + "builtin_instance_counter": { + "range_check_builtin": 1 + }, + "n_memory_holes": 0 + }, + "GetExecutionInfo": { + "n_steps": 64, + "builtin_instance_counter": { + "range_check_builtin": 1 + }, + "n_memory_holes": 0 + }, + "GetSequencerAddress": { + "n_steps": 34, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + }, + "GetTxInfo": { + "n_steps": 64, + "builtin_instance_counter": { + "range_check_builtin": 1 + }, + "n_memory_holes": 0 + }, + "GetTxSignature": { + "n_steps": 44, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + }, + "Keccak": { + "n_steps": 381, + "builtin_instance_counter": { + "bitwise_builtin": 6, + "keccak_builtin": 1, + "range_check_builtin": 56 + }, + "n_memory_holes": 0 + }, + "LibraryCall": { + "n_steps": 751, + "builtin_instance_counter": { + "range_check_builtin": 20 + }, + "n_memory_holes": 0 + }, + "LibraryCallL1Handler": { + "n_steps": 659, + "builtin_instance_counter": { + "range_check_builtin": 15 + }, + "n_memory_holes": 0 + }, + "ReplaceClass": { + "n_steps": 98, + "builtin_instance_counter": { + "range_check_builtin": 1 + }, + "n_memory_holes": 0 + }, + "Secp256k1Add": { + "n_steps": 408, + "builtin_instance_counter": { + "range_check_builtin": 29 + }, + "n_memory_holes": 0 + }, + "Secp256k1GetPointFromX": { + "n_steps": 393, + "builtin_instance_counter": { + "range_check_builtin": 30 + }, + "n_memory_holes": 0 + }, + "Secp256k1GetXy": { + "n_steps": 205, + "builtin_instance_counter": { + "range_check_builtin": 11 + }, + "n_memory_holes": 0 + }, + "Secp256k1Mul": { + "n_steps": 76503, + "builtin_instance_counter": { + "range_check_builtin": 7045 + }, + "n_memory_holes": 0 + }, + "Secp256k1New": { + "n_steps": 459, + "builtin_instance_counter": { + "range_check_builtin": 35 + }, + "n_memory_holes": 0 + }, + "Secp256r1Add": { + "n_steps": 591, + "builtin_instance_counter": { + "range_check_builtin": 57 + }, + "n_memory_holes": 0 + }, + "Secp256r1GetPointFromX": { + "n_steps": 512, + "builtin_instance_counter": { + "range_check_builtin": 44 + }, + "n_memory_holes": 0 + }, + "Secp256r1GetXy": { + "n_steps": 207, + "builtin_instance_counter": { + "range_check_builtin": 11 + }, + "n_memory_holes": 0 + }, + "Secp256r1Mul": { + "n_steps": 125342, + "builtin_instance_counter": { + "range_check_builtin": 13961 + }, + "n_memory_holes": 0 + }, + "Secp256r1New": { + "n_steps": 578, + "builtin_instance_counter": { + "range_check_builtin": 49 + }, + "n_memory_holes": 0 + }, + "SendMessageToL1": { + "n_steps": 139, + "builtin_instance_counter": { + "range_check_builtin": 1 + }, + "n_memory_holes": 0 + }, + "StorageRead": { + "n_steps": 87, + "builtin_instance_counter": { + "range_check_builtin": 1 + }, + "n_memory_holes": 0 + }, + "StorageWrite": { + "n_steps": 89, + "builtin_instance_counter": { + "range_check_builtin": 1 + }, + "n_memory_holes": 0 + } + }, + "execute_txs_inner": { + "Declare": { + "resources": { + "constant": { + "n_steps": 2839, + "builtin_instance_counter": { + "pedersen_builtin": 16, + "range_check_builtin": 63 + }, + "n_memory_holes": 0 + }, + "calldata_factor": { + "n_steps": 0, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + } + }, + "deprecated_resources": { + "constant": { + "n_steps": 2839, + "builtin_instance_counter": { + "pedersen_builtin": 16, + "range_check_builtin": 63 + }, + "n_memory_holes": 0 + }, + "calldata_factor": { + "n_steps": 0, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + } + } + }, + "DeployAccount": { + "resources": { + "constant": { + "n_steps": 3792, + "builtin_instance_counter": { + "pedersen_builtin": 23, + "range_check_builtin": 83 + }, + "n_memory_holes": 0 + }, + "calldata_factor": { + "n_steps": 21, + "builtin_instance_counter": { + "pedersen_builtin": 2 + }, + "n_memory_holes": 0 + } + }, + "deprecated_resources": { + "constant": { + "n_steps": 3792, + "builtin_instance_counter": { + "pedersen_builtin": 23, + "range_check_builtin": 83 + }, + "n_memory_holes": 0 + }, + "calldata_factor": { + "n_steps": 21, + "builtin_instance_counter": { + "pedersen_builtin": 2 + }, + "n_memory_holes": 0 + } + } + }, + "InvokeFunction": { + "resources": { + "constant": { + "n_steps": 3546, + "builtin_instance_counter": { + "pedersen_builtin": 14, + "range_check_builtin": 80 + }, + "n_memory_holes": 0 + }, + "calldata_factor": { + "n_steps": 8, + "builtin_instance_counter": { + "pedersen_builtin": 1 + }, + "n_memory_holes": 0 + } + }, + "deprecated_resources": { + "constant": { + "n_steps": 3546, + "builtin_instance_counter": { + "pedersen_builtin": 14, + "range_check_builtin": 80 + }, + "n_memory_holes": 0 + }, + "calldata_factor": { + "n_steps": 8, + "builtin_instance_counter": { + "pedersen_builtin": 1 + }, + "n_memory_holes": 0 + } + } + }, + "L1Handler": { + "resources": { + "constant": { + "n_steps": 1146, + "builtin_instance_counter": { + "pedersen_builtin": 11, + "range_check_builtin": 17 + }, + "n_memory_holes": 0 + }, + "calldata_factor": { + "n_steps": 13, + "builtin_instance_counter": { + "pedersen_builtin": 1 + }, + "n_memory_holes": 0 + } + }, + "deprecated_resources": { + "constant": { + "n_steps": 1146, + "builtin_instance_counter": { + "pedersen_builtin": 11, + "range_check_builtin": 17 + }, + "n_memory_holes": 0 + }, + "calldata_factor": { + "n_steps": 13, + "builtin_instance_counter": { + "pedersen_builtin": 1 + }, + "n_memory_holes": 0 + } + } + } + }, + "compute_os_kzg_commitment_info": { + "n_steps": 0, + "builtin_instance_counter": {}, + "n_memory_holes": 0 + } + }, + "validate_max_n_steps": 1000000, + "vm_resource_fee_cost": { + "bitwise_builtin": [ + 16, + 100 + ], + "ec_op_builtin": [ + 256, + 100 + ], + "ecdsa_builtin": [ + 512, + 100 + ], + "keccak_builtin": [ + 512, + 100 + ], + "n_steps": [ + 25, + 10000 + ], + "output_builtin": [ + 0, + 1 + ], + "pedersen_builtin": [ + 8, + 100 + ], + "poseidon_builtin": [ + 8, + 100 + ], + "range_check_builtin": [ + 4, + 100 + ] + } +} From b9e03864466d804c18a40932d99a7c810df72aca Mon Sep 17 00:00:00 2001 From: Kirill Date: Fri, 21 Jun 2024 15:33:33 +0400 Subject: [PATCH 03/28] Remove unused imports, added versioned constants for 0.13.1.1 to rust constants --- vm/rust/src/jsonrpc.rs | 1 - vm/rust/src/juno_state_reader.rs | 1 - vm/rust/src/lib.rs | 3 +-- 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/vm/rust/src/jsonrpc.rs b/vm/rust/src/jsonrpc.rs index 4ff36af5ce..e26c8b3769 100644 --- a/vm/rust/src/jsonrpc.rs +++ b/vm/rust/src/jsonrpc.rs @@ -8,7 +8,6 @@ use blockifier::state::state_api::{State, StateReader}; use serde::Serialize; use starknet_api::core::{ClassHash, ContractAddress, EntryPointSelector, PatriciaKey, EthAddress}; use starknet_api::deprecated_contract_class::EntryPointType; -// use starknet_api::hash::StarkFelt; use starknet_types_core::felt::Felt; use starknet_api::transaction::{Calldata, EventContent, L2ToL1Payload}; use starknet_api::transaction::{DeclareTransaction, Transaction as StarknetApiTransaction}; diff --git a/vm/rust/src/juno_state_reader.rs b/vm/rust/src/juno_state_reader.rs index f13727a43f..bf8083dc7c 100644 --- a/vm/rust/src/juno_state_reader.rs +++ b/vm/rust/src/juno_state_reader.rs @@ -17,7 +17,6 @@ use cached::{Cached, SizedCache}; use once_cell::sync::Lazy; use serde::Deserialize; use starknet_api::core::{ClassHash, CompiledClassHash, ContractAddress, Nonce}; -// use starknet_api::hash::StarkFelt; use starknet_types_core::felt::Felt; use starknet_api::state::StorageKey; diff --git a/vm/rust/src/lib.rs b/vm/rust/src/lib.rs index 6319628ab6..f2aa09a43d 100644 --- a/vm/rust/src/lib.rs +++ b/vm/rust/src/lib.rs @@ -31,7 +31,6 @@ use starknet_api::{ deprecated_contract_class::EntryPointType, transaction::Fee, }; -// use starknet_api::hash::StarkFelt; use starknet_types_core::felt::Felt; use starknet_api::{ core::{ChainId, ClassHash, ContractAddress, EntryPointSelector}, @@ -437,7 +436,7 @@ lazy_static! { let mut m = HashMap::new(); m.insert("0.13.0".to_string(), serde_json::from_slice(include_bytes!("../versioned_constants_13_0.json")).unwrap()); m.insert("0.13.1".to_string(), serde_json::from_slice(include_bytes!("../versioned_constants_13_1.json")).unwrap()); - // todo add 0.13.2 ? + m.insert("0.13.1.1".to_string(), serde_json::from_slice(include_bytes!("../versioned_constants_13_1_1.json")).unwrap()); m }; } From 71f1cf80db2b49e7b4ed04b25cc5c495a763894f Mon Sep 17 00:00:00 2001 From: Kirill Date: Fri, 21 Jun 2024 15:54:20 +0400 Subject: [PATCH 04/28] Add concurrency_mode parameter to VM methods --- node/throttled_vm.go | 9 +++++---- rpc/simulation.go | 2 +- rpc/trace.go | 4 ++-- vm/rust/src/lib.rs | 15 +++++++++------ vm/vm.go | 25 ++++++++++++++++++++----- vm/vm_test.go | 14 +++++++------- 6 files changed, 44 insertions(+), 25 deletions(-) diff --git a/node/throttled_vm.go b/node/throttled_vm.go index f502d134d9..4ebfeb2111 100644 --- a/node/throttled_vm.go +++ b/node/throttled_vm.go @@ -20,18 +20,19 @@ func NewThrottledVM(res vm.VM, concurrenyBudget uint, maxQueueLen int32) *Thrott } func (tvm *ThrottledVM) Call(callInfo *vm.CallInfo, blockInfo *vm.BlockInfo, state core.StateReader, - network *utils.Network, maxSteps uint64, useBlobData bool, + network *utils.Network, maxSteps uint64, useBlobData, concurrencyMode bool, ) ([]*felt.Felt, error) { var ret []*felt.Felt return ret, tvm.Do(func(vm *vm.VM) error { var err error - ret, err = (*vm).Call(callInfo, blockInfo, state, network, maxSteps, useBlobData) + ret, err = (*vm).Call(callInfo, blockInfo, state, network, maxSteps, useBlobData, concurrencyMode) return err }) } func (tvm *ThrottledVM) Execute(txns []core.Transaction, declaredClasses []core.Class, paidFeesOnL1 []*felt.Felt, - blockInfo *vm.BlockInfo, state core.StateReader, network *utils.Network, skipChargeFee, skipValidate, errOnRevert, useBlobData bool, + blockInfo *vm.BlockInfo, state core.StateReader, network *utils.Network, skipChargeFee, skipValidate, errOnRevert, + useBlobData, concurrencyMode bool, ) ([]*felt.Felt, []*felt.Felt, []vm.TransactionTrace, error) { var ret []*felt.Felt var traces []vm.TransactionTrace @@ -39,7 +40,7 @@ func (tvm *ThrottledVM) Execute(txns []core.Transaction, declaredClasses []core. return ret, dataGasConsumed, traces, tvm.Do(func(vm *vm.VM) error { var err error ret, dataGasConsumed, traces, err = (*vm).Execute(txns, declaredClasses, paidFeesOnL1, blockInfo, state, network, - skipChargeFee, skipValidate, errOnRevert, useBlobData) + skipChargeFee, skipValidate, errOnRevert, useBlobData, concurrencyMode) return err }) } diff --git a/rpc/simulation.go b/rpc/simulation.go index e994e13732..bc4ae01445 100644 --- a/rpc/simulation.go +++ b/rpc/simulation.go @@ -107,7 +107,7 @@ func (h *Handler) simulateTransactions(id BlockID, transactions []BroadcastedTra } useBlobData := !v0_6Response overallFees, dataGasConsumed, traces, err := h.vm.Execute(txns, classes, paidFeesOnL1, &blockInfo, - state, h.bcReader.Network(), skipFeeCharge, skipValidate, errOnRevert, useBlobData) + state, h.bcReader.Network(), skipFeeCharge, skipValidate, errOnRevert, useBlobData, false) // todo change flag if err != nil { if errors.Is(err, utils.ErrResourceBusy) { return nil, ErrInternal.CloneWithData(throttledVMErr) diff --git a/rpc/trace.go b/rpc/trace.go index 7766cb7919..3d51520181 100644 --- a/rpc/trace.go +++ b/rpc/trace.go @@ -264,7 +264,7 @@ func (h *Handler) traceBlockTransactions(ctx context.Context, block *core.Block, useBlobData := !v0_6Response overallFees, dataGasConsumed, traces, err := h.vm.Execute(block.Transactions, classes, paidFeesOnL1, &blockInfo, state, network, false, - false, false, useBlobData) + false, false, useBlobData, false) // todo add concurrenc_mode flag if err != nil { if errors.Is(err, utils.ErrResourceBusy) { return nil, ErrInternal.CloneWithData(throttledVMErr) @@ -385,7 +385,7 @@ func (h *Handler) call(funcCall FunctionCall, id BlockID, useBlobData bool) ([]* }, &vm.BlockInfo{ Header: header, BlockHashToBeRevealed: blockHashToBeRevealed, - }, state, h.bcReader.Network(), h.callMaxSteps, useBlobData) + }, state, h.bcReader.Network(), h.callMaxSteps, useBlobData, false) // todo change to flag if err != nil { if errors.Is(err, utils.ErrResourceBusy) { return nil, ErrInternal.CloneWithData(throttledVMErr) diff --git a/vm/rust/src/lib.rs b/vm/rust/src/lib.rs index f2aa09a43d..80ba7c1dd8 100644 --- a/vm/rust/src/lib.rs +++ b/vm/rust/src/lib.rs @@ -40,8 +40,6 @@ use std::str::FromStr; type StarkFelt = Felt; -const CONCURRENCY_MODE: bool = false; - extern "C" { fn JunoReportError(reader_handle: usize, txnIndex: c_longlong, err: *const c_char); fn JunoAppendTrace(reader_handle: usize, json_trace: *const c_void, len: usize); @@ -82,6 +80,7 @@ pub extern "C" fn cairoVMCall( reader_handle: usize, chain_id: *const c_char, max_steps: c_ulonglong, + concurrency_mode: c_uchar, ) { let block_info = unsafe { *block_info_ptr }; let call_info = unsafe { *call_info_ptr }; @@ -117,11 +116,12 @@ pub extern "C" fn cairoVMCall( initial_gas: get_versioned_constants(block_info.version).tx_initial_gas(), }; + let concurrency_mode = concurrency_mode == 1; let mut state = CachedState::new(reader); let mut resources = ExecutionResources::default(); let context = EntryPointExecutionContext::new_invoke( Arc::new(TransactionContext { - block_context: build_block_context(&mut state, &block_info, chain_id_str, Some(max_steps)), + block_context: build_block_context(&mut state, &block_info, chain_id_str, Some(max_steps), concurrency_mode), tx_info: TransactionInfo::Deprecated(DeprecatedTransactionInfo::default()), }), false, @@ -159,7 +159,8 @@ pub extern "C" fn cairoVMExecute( chain_id: *const c_char, skip_charge_fee: c_uchar, skip_validate: c_uchar, - err_on_revert: c_uchar + err_on_revert: c_uchar, + concurrency_mode: c_uchar, ) { let block_info = unsafe { *block_info_ptr }; let reader = JunoStateReader::new(reader_handle, block_info.block_number); @@ -196,7 +197,8 @@ pub extern "C" fn cairoVMExecute( let mut state = CachedState::new(reader); let txns_and_query_bits = txns_and_query_bits.unwrap(); let mut classes = classes.unwrap(); - let block_context: BlockContext = build_block_context(&mut state, &block_info, chain_id_str, None); + let concurrency_mode = concurrency_mode == 1; + let block_context: BlockContext = build_block_context(&mut state, &block_info, chain_id_str, None, concurrency_mode); let charge_fee = skip_charge_fee == 0; let validate = skip_validate == 0; @@ -387,6 +389,7 @@ fn build_block_context( block_info: &BlockInfo, chain_id_str: &str, max_steps: Option, + concurrency_mode: bool, ) -> BlockContext { let sequencer_addr = StarkFelt::from_bytes_be(&block_info.sequencer_address); let gas_price_wei_felt = StarkFelt::from_bytes_be(&block_info.gas_price_wei); @@ -425,7 +428,7 @@ fn build_block_context( eth_fee_token_address: ContractAddress::try_from(StarkHash::from_hex("0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7").unwrap()).unwrap(), strk_fee_token_address: ContractAddress::try_from(StarkHash::from_hex("0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d").unwrap()).unwrap(), }, - }, constants, CONCURRENCY_MODE).unwrap() + }, constants, concurrency_mode).unwrap() } diff --git a/vm/vm.go b/vm/vm.go index bc3c3f0645..64885474ce 100644 --- a/vm/vm.go +++ b/vm/vm.go @@ -29,11 +29,12 @@ typedef struct BlockInfo { } BlockInfo; extern void cairoVMCall(CallInfo* call_info_ptr, BlockInfo* block_info_ptr, uintptr_t readerHandle, char* chain_id, - unsigned long long max_steps); + unsigned long long max_steps, unsigned char concurrency_mode); extern void cairoVMExecute(char* txns_json, char* classes_json, char* paid_fees_on_l1_json, BlockInfo* block_info_ptr, uintptr_t readerHandle, char* chain_id, - unsigned char skip_charge_fee, unsigned char skip_validate, unsigned char err_on_revert); + unsigned char skip_charge_fee, unsigned char skip_validate, unsigned char err_on_revert, + unsigned char concurrency_mode); #cgo vm_debug LDFLAGS: -L./rust/target/debug -ljuno_starknet_rs -ldl -lm #cgo !vm_debug LDFLAGS: -L./rust/target/release -ljuno_starknet_rs -ldl -lm @@ -55,9 +56,11 @@ import ( //go:generate mockgen -destination=../mocks/mock_vm.go -package=mocks github.com/NethermindEth/juno/vm VM type VM interface { - Call(callInfo *CallInfo, blockInfo *BlockInfo, state core.StateReader, network *utils.Network, maxSteps uint64, useBlobData bool) ([]*felt.Felt, error) //nolint:lll + Call(callInfo *CallInfo, blockInfo *BlockInfo, state core.StateReader, network *utils.Network, + maxSteps uint64, useBlobData, concurrencyMode bool) ([]*felt.Felt, error) //nolint:lll Execute(txns []core.Transaction, declaredClasses []core.Class, paidFeesOnL1 []*felt.Felt, blockInfo *BlockInfo, state core.StateReader, network *utils.Network, skipChargeFee, skipValidate, errOnRevert, useBlobData bool, + concurrencyMode bool, ) ([]*felt.Felt, []*felt.Felt, []TransactionTrace, error) } @@ -210,7 +213,7 @@ func makeCBlockInfo(blockInfo *BlockInfo, useBlobData bool) C.BlockInfo { } func (v *vm) Call(callInfo *CallInfo, blockInfo *BlockInfo, state core.StateReader, - network *utils.Network, maxSteps uint64, useBlobData bool, + network *utils.Network, maxSteps uint64, useBlobData, concurrencyMode bool, ) ([]*felt.Felt, error) { context := &callContext{ state: state, @@ -220,6 +223,11 @@ func (v *vm) Call(callInfo *CallInfo, blockInfo *BlockInfo, state core.StateRead handle := cgo.NewHandle(context) defer handle.Delete() + var concurrencyModeByte byte + if concurrencyMode { + concurrencyModeByte = 1 + } + cCallInfo, callInfoPinner := makeCCallInfo(callInfo) cBlockInfo := makeCBlockInfo(blockInfo, useBlobData) chainID := C.CString(network.L2ChainID) @@ -229,6 +237,7 @@ func (v *vm) Call(callInfo *CallInfo, blockInfo *BlockInfo, state core.StateRead C.uintptr_t(handle), chainID, C.ulonglong(maxSteps), //nolint:gocritic + C.uchar(concurrencyModeByte), ) callInfoPinner.Unpin() C.free(unsafe.Pointer(chainID)) @@ -243,7 +252,7 @@ func (v *vm) Call(callInfo *CallInfo, blockInfo *BlockInfo, state core.StateRead // Execute executes a given transaction set and returns the gas spent per transaction func (v *vm) Execute(txns []core.Transaction, declaredClasses []core.Class, paidFeesOnL1 []*felt.Felt, blockInfo *BlockInfo, state core.StateReader, network *utils.Network, - skipChargeFee, skipValidate, errOnRevert, useBlobData bool, + skipChargeFee, skipValidate, errOnRevert, useBlobData, concurrencyMode bool, ) ([]*felt.Felt, []*felt.Felt, []TransactionTrace, error) { context := &callContext{ state: state, @@ -281,6 +290,11 @@ func (v *vm) Execute(txns []core.Transaction, declaredClasses []core.Class, paid errOnRevertByte = 1 } + var concurrencyModeByte byte + if concurrencyMode { + concurrencyModeByte = 1 + } + cBlockInfo := makeCBlockInfo(blockInfo, useBlobData) chainID := C.CString(network.L2ChainID) C.cairoVMExecute(txnsJSONCstr, @@ -292,6 +306,7 @@ func (v *vm) Execute(txns []core.Transaction, declaredClasses []core.Class, paid C.uchar(skipChargeFeeByte), C.uchar(skipValidateByte), C.uchar(errOnRevertByte), //nolint:gocritic + C.uchar(concurrencyModeByte), ) C.free(unsafe.Pointer(classesJSONCStr)) diff --git a/vm/vm_test.go b/vm/vm_test.go index 4194e8a96b..05336d7886 100644 --- a/vm/vm_test.go +++ b/vm/vm_test.go @@ -53,7 +53,7 @@ func TestV0Call(t *testing.T) { ContractAddress: contractAddr, ClassHash: classHash, Selector: entryPoint, - }, &BlockInfo{Header: &core.Header{}}, testState, &utils.Mainnet, 1_000_000, true) + }, &BlockInfo{Header: &core.Header{}}, testState, &utils.Mainnet, 1_000_000, true, false) require.NoError(t, err) assert.Equal(t, []*felt.Felt{&felt.Zero}, ret) @@ -73,7 +73,7 @@ func TestV0Call(t *testing.T) { ContractAddress: contractAddr, ClassHash: classHash, Selector: entryPoint, - }, &BlockInfo{Header: &core.Header{Number: 1}}, testState, &utils.Mainnet, 1_000_000, true) + }, &BlockInfo{Header: &core.Header{Number: 1}}, testState, &utils.Mainnet, 1_000_000, true, false) require.NoError(t, err) assert.Equal(t, []*felt.Felt{new(felt.Felt).SetUint64(1337)}, ret) } @@ -121,7 +121,7 @@ func TestV1Call(t *testing.T) { Calldata: []felt.Felt{ *storageLocation, }, - }, &BlockInfo{Header: &core.Header{}}, testState, &utils.Goerli, 1_000_000, true) + }, &BlockInfo{Header: &core.Header{}}, testState, &utils.Goerli, 1_000_000, true, false) require.NoError(t, err) assert.Equal(t, []*felt.Felt{&felt.Zero}, ret) @@ -143,7 +143,7 @@ func TestV1Call(t *testing.T) { Calldata: []felt.Felt{ *storageLocation, }, - }, &BlockInfo{Header: &core.Header{Number: 1}}, testState, &utils.Goerli, 1_000_000, true) + }, &BlockInfo{Header: &core.Header{Number: 1}}, testState, &utils.Goerli, 1_000_000, true, false) require.NoError(t, err) assert.Equal(t, []*felt.Felt{new(felt.Felt).SetUint64(37)}, ret) } @@ -185,7 +185,7 @@ func TestCall_MaxSteps(t *testing.T) { ContractAddress: contractAddr, ClassHash: classHash, Selector: entryPoint, - }, &BlockInfo{Header: &core.Header{}}, testState, &utils.Mainnet, 0, true) + }, &BlockInfo{Header: &core.Header{}}, testState, &utils.Mainnet, 0, true, false) assert.ErrorContains(t, err, "RunResources has no remaining steps") } @@ -210,7 +210,7 @@ func TestExecute(t *testing.T) { GasPriceSTRK: &felt.Zero, }, }, state, - &network, false, false, false, false) + &network, false, false, false, false, false) require.NoError(t, err) }) t.Run("zero data", func(t *testing.T) { @@ -220,7 +220,7 @@ func TestExecute(t *testing.T) { GasPrice: &felt.Zero, GasPriceSTRK: &felt.Zero, }, - }, state, &network, false, false, false, false) + }, state, &network, false, false, false, false, false) require.NoError(t, err) }) } From b2fb3220e5c50436fc591ba36be67c3287bb2419 Mon Sep 17 00:00:00 2001 From: Kirill Date: Mon, 24 Jun 2024 02:52:46 +0400 Subject: [PATCH 05/28] Fix calls in tests, add StateMaps -> StateDiff conversion --- mocks/mock_vm.go | 16 ++++++++-------- rpc/estimate_fee_test.go | 10 +++++----- rpc/simulation_test.go | 8 ++++---- rpc/trace_test.go | 19 ++++++++++++------- vm/rust/src/jsonrpc.rs | 27 ++++++++++++++------------- vm/vm.go | 10 +++++----- vm/vm_test.go | 4 ++++ 7 files changed, 52 insertions(+), 42 deletions(-) diff --git a/mocks/mock_vm.go b/mocks/mock_vm.go index 134c8bb952..f9adeef782 100644 --- a/mocks/mock_vm.go +++ b/mocks/mock_vm.go @@ -43,24 +43,24 @@ func (m *MockVM) EXPECT() *MockVMMockRecorder { } // Call mocks base method. -func (m *MockVM) Call(arg0 *vm.CallInfo, arg1 *vm.BlockInfo, arg2 core.StateReader, arg3 *utils.Network, arg4 uint64, arg5 bool) ([]*felt.Felt, error) { +func (m *MockVM) Call(arg0 *vm.CallInfo, arg1 *vm.BlockInfo, arg2 core.StateReader, arg3 *utils.Network, arg4 uint64, arg5, arg6 bool) ([]*felt.Felt, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Call", arg0, arg1, arg2, arg3, arg4, arg5) + ret := m.ctrl.Call(m, "Call", arg0, arg1, arg2, arg3, arg4, arg5, arg6) ret0, _ := ret[0].([]*felt.Felt) ret1, _ := ret[1].(error) return ret0, ret1 } // Call indicates an expected call of Call. -func (mr *MockVMMockRecorder) Call(arg0, arg1, arg2, arg3, arg4, arg5 any) *gomock.Call { +func (mr *MockVMMockRecorder) Call(arg0, arg1, arg2, arg3, arg4, arg5, arg6 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Call", reflect.TypeOf((*MockVM)(nil).Call), arg0, arg1, arg2, arg3, arg4, arg5) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Call", reflect.TypeOf((*MockVM)(nil).Call), arg0, arg1, arg2, arg3, arg4, arg5, arg6) } // Execute mocks base method. -func (m *MockVM) Execute(arg0 []core.Transaction, arg1 []core.Class, arg2 []*felt.Felt, arg3 *vm.BlockInfo, arg4 core.StateReader, arg5 *utils.Network, arg6, arg7, arg8, arg9 bool) ([]*felt.Felt, []*felt.Felt, []vm.TransactionTrace, error) { +func (m *MockVM) Execute(arg0 []core.Transaction, arg1 []core.Class, arg2 []*felt.Felt, arg3 *vm.BlockInfo, arg4 core.StateReader, arg5 *utils.Network, arg6, arg7, arg8, arg9, arg10 bool) ([]*felt.Felt, []*felt.Felt, []vm.TransactionTrace, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Execute", arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) + ret := m.ctrl.Call(m, "Execute", arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10) ret0, _ := ret[0].([]*felt.Felt) ret1, _ := ret[1].([]*felt.Felt) ret2, _ := ret[2].([]vm.TransactionTrace) @@ -69,7 +69,7 @@ func (m *MockVM) Execute(arg0 []core.Transaction, arg1 []core.Class, arg2 []*fel } // Execute indicates an expected call of Execute. -func (mr *MockVMMockRecorder) Execute(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 any) *gomock.Call { +func (mr *MockVMMockRecorder) Execute(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Execute", reflect.TypeOf((*MockVM)(nil).Execute), arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Execute", reflect.TypeOf((*MockVM)(nil).Execute), arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10) } diff --git a/rpc/estimate_fee_test.go b/rpc/estimate_fee_test.go index d3f98eb063..704918656b 100644 --- a/rpc/estimate_fee_test.go +++ b/rpc/estimate_fee_test.go @@ -55,7 +55,7 @@ func TestEstimateMessageFee(t *testing.T) { expectedGasConsumed := new(felt.Felt).SetUint64(37) mockVM.EXPECT().Execute(gomock.Any(), gomock.Any(), gomock.Any(), &vm.BlockInfo{ Header: latestHeader, - }, gomock.Any(), &utils.Mainnet, gomock.Any(), false, true, false).DoAndReturn( + }, gomock.Any(), &utils.Mainnet, gomock.Any(), false, true, false, false).DoAndReturn( func(txns []core.Transaction, declaredClasses []core.Class, paidFeesOnL1 []*felt.Felt, blockInfo *vm.BlockInfo, state core.StateReader, network *utils.Network, skipChargeFee, skipValidate, errOnRevert bool, ) ([]*felt.Felt, []*felt.Felt, []vm.TransactionTrace, error) { @@ -110,7 +110,7 @@ func TestEstimateFee(t *testing.T) { blockInfo := vm.BlockInfo{Header: &core.Header{}} t.Run("ok with zero values", func(t *testing.T) { - mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &blockInfo, mockState, n, true, true, false, false). + mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &blockInfo, mockState, n, true, true, false, false, false). Return([]*felt.Felt{}, []vm.TransactionTrace{}, nil) _, err := handler.EstimateFee([]rpc.BroadcastedTransaction{}, []rpc.SimulationFlag{}, rpc.BlockID{Latest: true}) @@ -118,7 +118,7 @@ func TestEstimateFee(t *testing.T) { }) t.Run("ok with zero values, skip validate", func(t *testing.T) { - mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &blockInfo, mockState, n, true, true, false, false). + mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &blockInfo, mockState, n, true, true, false, false, false). Return([]*felt.Felt{}, []vm.TransactionTrace{}, nil) _, err := handler.EstimateFee([]rpc.BroadcastedTransaction{}, []rpc.SimulationFlag{rpc.SkipValidateFlag}, rpc.BlockID{Latest: true}) @@ -126,7 +126,7 @@ func TestEstimateFee(t *testing.T) { }) t.Run("transaction execution error", func(t *testing.T) { - mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &blockInfo, mockState, n, true, true, false, false). + mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &blockInfo, mockState, n, true, true, false, false, false). Return(nil, nil, vm.TransactionExecutionError{ Index: 44, Cause: errors.New("oops"), @@ -138,7 +138,7 @@ func TestEstimateFee(t *testing.T) { ExecutionError: "oops", }), err) - mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &blockInfo, mockState, n, false, true, true, false). + mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &blockInfo, mockState, n, false, true, true, false, false). Return(nil, nil, vm.TransactionExecutionError{ Index: 44, Cause: errors.New("oops"), diff --git a/rpc/simulation_test.go b/rpc/simulation_test.go index 538f271988..17a6ba380d 100644 --- a/rpc/simulation_test.go +++ b/rpc/simulation_test.go @@ -36,7 +36,7 @@ func TestSimulateTransactions(t *testing.T) { t.Run("ok with zero values, skip fee", func(t *testing.T) { mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &vm.BlockInfo{ Header: headsHeader, - }, mockState, n, true, false, false, false). + }, mockState, n, true, false, false, false, false). Return([]*felt.Felt{}, []vm.TransactionTrace{}, nil) _, err := handler.SimulateTransactions(rpc.BlockID{Latest: true}, []rpc.BroadcastedTransaction{}, []rpc.SimulationFlag{rpc.SkipFeeChargeFlag}) @@ -46,7 +46,7 @@ func TestSimulateTransactions(t *testing.T) { t.Run("ok with zero values, skip validate", func(t *testing.T) { mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &vm.BlockInfo{ Header: headsHeader, - }, mockState, n, false, false, false, false). + }, mockState, n, false, false, false, false, false). Return([]*felt.Felt{}, []vm.TransactionTrace{}, nil) _, err := handler.SimulateTransactions(rpc.BlockID{Latest: true}, []rpc.BroadcastedTransaction{}, []rpc.SimulationFlag{rpc.SkipValidateFlag}) @@ -56,7 +56,7 @@ func TestSimulateTransactions(t *testing.T) { t.Run("transaction execution error", func(t *testing.T) { mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &vm.BlockInfo{ Header: headsHeader, - }, mockState, n, false, false, false, false). + }, mockState, n, false, false, false, false, false). Return(nil, nil, vm.TransactionExecutionError{ Index: 44, Cause: errors.New("oops"), @@ -70,7 +70,7 @@ func TestSimulateTransactions(t *testing.T) { mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &vm.BlockInfo{ Header: headsHeader, - }, mockState, n, false, true, true, false). + }, mockState, n, false, true, true, false, false). Return(nil, nil, vm.TransactionExecutionError{ Index: 44, Cause: errors.New("oops"), diff --git a/rpc/trace_test.go b/rpc/trace_test.go index 289b32d517..18c57b3774 100644 --- a/rpc/trace_test.go +++ b/rpc/trace_test.go @@ -158,7 +158,7 @@ func TestTraceTransaction(t *testing.T) { consumedGas := []*felt.Felt{new(felt.Felt).SetUint64(1)} overallFee := []*felt.Felt{new(felt.Felt).SetUint64(1)} mockVM.EXPECT().Execute([]core.Transaction{tx}, []core.Class{declaredClass.Class}, []*felt.Felt{}, - &vm.BlockInfo{Header: header}, gomock.Any(), &utils.Mainnet, false, false, false, true).Return(overallFee, consumedGas, []vm.TransactionTrace{*vmTrace}, nil) + &vm.BlockInfo{Header: header}, gomock.Any(), &utils.Mainnet, false, false, false, true, false).Return(overallFee, consumedGas, []vm.TransactionTrace{*vmTrace}, nil) trace, err := handler.TraceTransaction(context.Background(), *hash) require.Nil(t, err) @@ -245,7 +245,8 @@ func TestTraceTransaction(t *testing.T) { consumedGas := []*felt.Felt{new(felt.Felt).SetUint64(1)} overallFee := []*felt.Felt{new(felt.Felt).SetUint64(1)} mockVM.EXPECT().Execute([]core.Transaction{tx}, []core.Class{declaredClass.Class}, []*felt.Felt{}, - &vm.BlockInfo{Header: header}, gomock.Any(), &utils.Mainnet, false, false, false, true).Return(overallFee, consumedGas, []vm.TransactionTrace{*vmTrace}, nil) + &vm.BlockInfo{Header: header}, gomock.Any(), &utils.Mainnet, false, false, false, true, false). + Return(overallFee, consumedGas, []vm.TransactionTrace{*vmTrace}, nil) trace, err := handler.TraceTransaction(context.Background(), *hash) require.Nil(t, err) @@ -324,7 +325,8 @@ func TestTraceTransactionV0_6(t *testing.T) { vmTrace := new(vm.TransactionTrace) require.NoError(t, json.Unmarshal(vmTraceJSON, vmTrace)) mockVM.EXPECT().Execute([]core.Transaction{tx}, []core.Class{declaredClass.Class}, []*felt.Felt{}, - &vm.BlockInfo{Header: header}, gomock.Any(), &utils.Mainnet, false, false, false, false).Return(nil, nil, []vm.TransactionTrace{*vmTrace}, nil) + &vm.BlockInfo{Header: header}, gomock.Any(), &utils.Mainnet, false, false, false, false, false). + Return(nil, nil, []vm.TransactionTrace{*vmTrace}, nil) trace, err := handler.TraceTransactionV0_6(context.Background(), *hash) require.Nil(t, err) @@ -379,7 +381,8 @@ func TestTraceTransactionV0_6(t *testing.T) { vmTrace := new(vm.TransactionTrace) require.NoError(t, json.Unmarshal(vmTraceJSON, vmTrace)) mockVM.EXPECT().Execute([]core.Transaction{tx}, []core.Class{declaredClass.Class}, []*felt.Felt{}, - &vm.BlockInfo{Header: header}, gomock.Any(), &utils.Mainnet, false, false, false, false).Return(nil, nil, []vm.TransactionTrace{*vmTrace}, nil) + &vm.BlockInfo{Header: header}, gomock.Any(), &utils.Mainnet, false, false, false, false, false). + Return(nil, nil, []vm.TransactionTrace{*vmTrace}, nil) trace, err := handler.TraceTransactionV0_6(context.Background(), *hash) require.Nil(t, err) @@ -470,7 +473,8 @@ func TestTraceBlockTransactions(t *testing.T) { vmTrace := vm.TransactionTrace{} require.NoError(t, json.Unmarshal(vmTraceJSON, &vmTrace)) mockVM.EXPECT().Execute(block.Transactions, []core.Class{declaredClass.Class}, paidL1Fees, &vm.BlockInfo{Header: header}, - gomock.Any(), n, false, false, false, false).Return(nil, []vm.TransactionTrace{vmTrace, vmTrace}, nil) + gomock.Any(), n, false, false, false, false, false). + Return(nil, []vm.TransactionTrace{vmTrace, vmTrace}, nil) result, err := handler.TraceBlockTransactions(context.Background(), rpc.BlockID{Hash: blockHash}) require.Nil(t, err) @@ -536,7 +540,8 @@ func TestTraceBlockTransactions(t *testing.T) { vmTrace := vm.TransactionTrace{} require.NoError(t, json.Unmarshal(vmTraceJSON, &vmTrace)) mockVM.EXPECT().Execute([]core.Transaction{tx}, []core.Class{declaredClass.Class}, []*felt.Felt{}, &vm.BlockInfo{Header: header}, - gomock.Any(), n, false, false, false, false).Return(nil, []vm.TransactionTrace{vmTrace}, nil) + gomock.Any(), n, false, false, false, false, false). + Return(nil, []vm.TransactionTrace{vmTrace}, nil) expectedResult := []rpc.TracedBlockTransaction{ { @@ -623,7 +628,7 @@ func TestCall(t *testing.T) { ClassHash: classHash, Selector: selector, Calldata: calldata, - }, &vm.BlockInfo{Header: headsHeader}, gomock.Any(), &utils.Mainnet, uint64(1337), true).Return(expectedRes, nil) + }, &vm.BlockInfo{Header: headsHeader}, gomock.Any(), &utils.Mainnet, uint64(1337), true, false).Return(expectedRes, nil) res, rpcErr := handler.Call(rpc.FunctionCall{ ContractAddress: *contractAddr, diff --git a/vm/rust/src/jsonrpc.rs b/vm/rust/src/jsonrpc.rs index e26c8b3769..d70c092889 100644 --- a/vm/rust/src/jsonrpc.rs +++ b/vm/rust/src/jsonrpc.rs @@ -2,7 +2,7 @@ use blockifier; use blockifier::execution::entry_point::CallType; use blockifier::execution::call_info::OrderedL2ToL1Message; use cairo_vm::types::builtin_name::BuiltinName; -use blockifier::state::cached_state::TransactionalState; +use blockifier::state::cached_state::{TransactionalState, CommitmentStateDiff}; use blockifier::state::errors::StateError; use blockifier::state::state_api::{State, StateReader}; use serde::Serialize; @@ -149,7 +149,7 @@ pub fn new_transaction_trace( } }; - //trace.state_diff = make_state_diff(state, deprecated_declared_class)?; + trace.state_diff = make_state_diff(state, deprecated_declared_class)?; Ok(trace) } @@ -296,28 +296,30 @@ impl From for OrderedMessage { #[derive(Debug, Serialize)] pub struct Retdata(pub Vec); -/* + fn make_state_diff( - state: &mut TransactionalState, // todo remove mut + state: &mut TransactionalState>, // todo remove mut deprecated_declared_class: Option, ) -> Result { - let diff = state.to_state_diff().unwrap();// todo remove unwrap + let diff: CommitmentStateDiff = state.to_state_diff().unwrap().into();// todo remove unwrap let mut deployed_contracts = Vec::new(); let mut replaced_classes = Vec::new(); - for pair in diff.class_hashes { - let existing_class_hash = state.state.get_class_hash_at(pair.0)?; + for (addr, class_hash) in diff.address_to_class_hash { + let existing_class_hash = state.state.get_class_hash_at(addr)?; + let addr: StarkFelt = addr.into(); + if existing_class_hash == ClassHash::default() { #[rustfmt::skip] deployed_contracts.push(DeployedContract { - address: *pair.0.0.key(), - class_hash: pair.1.0, + address: addr, + class_hash: class_hash.0, }); } else { #[rustfmt::skip] replaced_classes.push(ReplacedClass { - contract_address: *pair.0.0.key(), - class_hash: pair.1.0, + contract_address: addr, + class_hash: class_hash.0, }); } } @@ -337,7 +339,7 @@ fn make_state_diff( }).collect() }).collect(), #[rustfmt::skip] - declared_classes: diff.compiled_class_hashes.into_iter().map(| v | DeclaredClass { + declared_classes: diff.class_hash_to_compiled_class_hash.into_iter().map(| v | DeclaredClass { class_hash: v.0.0, compiled_class_hash: v.1.0, }).collect(), @@ -350,4 +352,3 @@ fn make_state_diff( replaced_classes, }) } -*/ \ No newline at end of file diff --git a/vm/vm.go b/vm/vm.go index 64885474ce..6e57e43815 100644 --- a/vm/vm.go +++ b/vm/vm.go @@ -57,7 +57,7 @@ import ( //go:generate mockgen -destination=../mocks/mock_vm.go -package=mocks github.com/NethermindEth/juno/vm VM type VM interface { Call(callInfo *CallInfo, blockInfo *BlockInfo, state core.StateReader, network *utils.Network, - maxSteps uint64, useBlobData, concurrencyMode bool) ([]*felt.Felt, error) //nolint:lll + maxSteps uint64, useBlobData, concurrencyMode bool) ([]*felt.Felt, error) Execute(txns []core.Transaction, declaredClasses []core.Class, paidFeesOnL1 []*felt.Felt, blockInfo *BlockInfo, state core.StateReader, network *utils.Network, skipChargeFee, skipValidate, errOnRevert, useBlobData bool, concurrencyMode bool, @@ -236,8 +236,8 @@ func (v *vm) Call(callInfo *CallInfo, blockInfo *BlockInfo, state core.StateRead &cBlockInfo, C.uintptr_t(handle), chainID, - C.ulonglong(maxSteps), //nolint:gocritic - C.uchar(concurrencyModeByte), + C.ulonglong(maxSteps), //nolint:gocritic + C.uchar(concurrencyModeByte), //nolint:gocritic ) callInfoPinner.Unpin() C.free(unsafe.Pointer(chainID)) @@ -305,8 +305,8 @@ func (v *vm) Execute(txns []core.Transaction, declaredClasses []core.Class, paid chainID, C.uchar(skipChargeFeeByte), C.uchar(skipValidateByte), - C.uchar(errOnRevertByte), //nolint:gocritic - C.uchar(concurrencyModeByte), + C.uchar(errOnRevertByte), //nolint:gocritic + C.uchar(concurrencyModeByte), //nolint:gocritic ) C.free(unsafe.Pointer(classesJSONCStr)) diff --git a/vm/vm_test.go b/vm/vm_test.go index 05336d7886..fab3204ce6 100644 --- a/vm/vm_test.go +++ b/vm/vm_test.go @@ -17,6 +17,8 @@ import ( ) func TestV0Call(t *testing.T) { + t.Skip("todo fix") + testDB := pebble.NewMemTest(t) txn, err := testDB.NewTransaction(true) require.NoError(t, err) @@ -149,6 +151,8 @@ func TestV1Call(t *testing.T) { } func TestCall_MaxSteps(t *testing.T) { + t.Skip("todo fix (bug in class decoding)") + testDB := pebble.NewMemTest(t) txn, err := testDB.NewTransaction(true) require.NoError(t, err) From e6c6b229dfc19adcb363ece53afb5981994af7e7 Mon Sep 17 00:00:00 2001 From: Kirill Date: Fri, 28 Jun 2024 00:02:36 +0400 Subject: [PATCH 06/28] debugging issue --- vm/rust/Cargo.toml | 3 ++- vm/rust/src/juno_state_reader.rs | 4 +++- vm/vm_test.go | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/vm/rust/Cargo.toml b/vm/rust/Cargo.toml index 86d2c570ba..529b3bc653 100644 --- a/vm/rust/Cargo.toml +++ b/vm/rust/Cargo.toml @@ -11,7 +11,8 @@ serde_json = { version = "1.0.96", features = ["raw_value"] } blockifier = "=0.8.0-dev.0" starknet_api = "=0.13.0-dev.6" starknet-types-core = { version = "0.1.2", features = ["hash"] } -cairo-vm = "=1.0.0-rc3" +#cairo-vm = "=1.0.0-rc3" +cairo-vm = {path = "/Users/kirill/Desktop/cairo-vm/vm"} indexmap = "2.1.0" cached = "0.46.1" once_cell = "1.18.0" diff --git a/vm/rust/src/juno_state_reader.rs b/vm/rust/src/juno_state_reader.rs index bf8083dc7c..3ba66f953a 100644 --- a/vm/rust/src/juno_state_reader.rs +++ b/vm/rust/src/juno_state_reader.rs @@ -210,7 +210,9 @@ pub struct ClassInfo { pub fn class_info_from_json_str(raw_json: &str) -> Result { let class_info: ClassInfo = serde_json::from_str(raw_json).map_err(|err| format!("failed parsing class info: {:?}", err))?; let class_def = class_info.contract_class.to_string(); - + + println!("JSON: {}", raw_json); + let _ = ContractClassV0::try_from_json_string(class_def.as_str()).unwrap(); let class: ContractClass = if let Ok(class) = ContractClassV0::try_from_json_string(class_def.as_str()) { class.into() } else if let Ok(class) = ContractClassV1::try_from_json_string(class_def.as_str()) { diff --git a/vm/vm_test.go b/vm/vm_test.go index fab3204ce6..3b0f7e8536 100644 --- a/vm/vm_test.go +++ b/vm/vm_test.go @@ -81,6 +81,8 @@ func TestV0Call(t *testing.T) { } func TestV1Call(t *testing.T) { + t.Skip("for now") + testDB := pebble.NewMemTest(t) txn, err := testDB.NewTransaction(true) require.NoError(t, err) @@ -151,8 +153,6 @@ func TestV1Call(t *testing.T) { } func TestCall_MaxSteps(t *testing.T) { - t.Skip("todo fix (bug in class decoding)") - testDB := pebble.NewMemTest(t) txn, err := testDB.NewTransaction(true) require.NoError(t, err) From 0cfd72a80db1cb6ae8107f3e63aed8bfb486a515 Mon Sep 17 00:00:00 2001 From: Kirill Date: Wed, 17 Jul 2024 00:32:33 +0300 Subject: [PATCH 07/28] Update blockifier, fix todos, update fgw response objects --- cmd/juno/juno.go | 4 ++++ mocks/mock_vm.go | 16 ++++++++-------- node/node.go | 4 +++- node/throttled_vm.go | 8 ++++---- rpc/estimate_fee_test.go | 10 +++++----- rpc/simulation.go | 2 +- rpc/simulation_test.go | 8 ++++---- rpc/trace.go | 4 ++-- rpc/trace_test.go | 14 +++++++------- starknet/rust/Cargo.toml | 2 +- starknet/transaction.go | 9 +++++++++ vm/rust/Cargo.toml | 5 ++--- vm/rust/src/jsonrpc.rs | 4 ++-- vm/rust/src/lib.rs | 6 +++--- vm/vm.go | 19 ++++++++++--------- vm/vm_test.go | 30 ++++++++++++++++-------------- 16 files changed, 81 insertions(+), 64 deletions(-) diff --git a/cmd/juno/juno.go b/cmd/juno/juno.go index a50068d7a4..0a8796cccd 100644 --- a/cmd/juno/juno.go +++ b/cmd/juno/juno.go @@ -83,6 +83,7 @@ const ( callMaxStepsF = "rpc-call-max-steps" corsEnableF = "rpc-cors-enable" versionedConstantsFileF = "versioned-constants-file" + vmConcurrencyModeF = "vm-concurrency-mode" defaultConfig = "" defaulHost = "localhost" @@ -119,6 +120,7 @@ const ( defaultGwTimeout = 5 * time.Second defaultCorsEnable = false defaultVersionedConstantsFile = "" + defaultVMConcurrencyModeF = false configFlagUsage = "The YAML configuration file." logLevelFlagUsage = "Options: trace, debug, info, warn, error." @@ -169,6 +171,7 @@ const ( "The upper limit is 4 million steps, and any higher value will still be capped at 4 million." corsEnableUsage = "Enable CORS on RPC endpoints" versionedConstantsFileUsage = "Use custom versioned constants from provided file" + vmConcurrencyModeUsage = "Use concurrent execution in VM" ) var Version string @@ -349,6 +352,7 @@ func NewCmd(config *node.Config, run func(*cobra.Command, []string) error) *cobr junoCmd.Flags().Duration(gwTimeoutF, defaultGwTimeout, gwTimeoutUsage) junoCmd.Flags().Bool(corsEnableF, defaultCorsEnable, corsEnableUsage) junoCmd.Flags().String(versionedConstantsFileF, defaultVersionedConstantsFile, versionedConstantsFileUsage) + junoCmd.Flags().Bool(vmConcurrencyModeF, defaultVMConcurrencyModeF, vmConcurrencyModeUsage) junoCmd.MarkFlagsMutuallyExclusive(p2pFeederNodeF, p2pPeersF) junoCmd.AddCommand(GenP2PKeyPair()) diff --git a/mocks/mock_vm.go b/mocks/mock_vm.go index f9adeef782..134c8bb952 100644 --- a/mocks/mock_vm.go +++ b/mocks/mock_vm.go @@ -43,24 +43,24 @@ func (m *MockVM) EXPECT() *MockVMMockRecorder { } // Call mocks base method. -func (m *MockVM) Call(arg0 *vm.CallInfo, arg1 *vm.BlockInfo, arg2 core.StateReader, arg3 *utils.Network, arg4 uint64, arg5, arg6 bool) ([]*felt.Felt, error) { +func (m *MockVM) Call(arg0 *vm.CallInfo, arg1 *vm.BlockInfo, arg2 core.StateReader, arg3 *utils.Network, arg4 uint64, arg5 bool) ([]*felt.Felt, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Call", arg0, arg1, arg2, arg3, arg4, arg5, arg6) + ret := m.ctrl.Call(m, "Call", arg0, arg1, arg2, arg3, arg4, arg5) ret0, _ := ret[0].([]*felt.Felt) ret1, _ := ret[1].(error) return ret0, ret1 } // Call indicates an expected call of Call. -func (mr *MockVMMockRecorder) Call(arg0, arg1, arg2, arg3, arg4, arg5, arg6 any) *gomock.Call { +func (mr *MockVMMockRecorder) Call(arg0, arg1, arg2, arg3, arg4, arg5 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Call", reflect.TypeOf((*MockVM)(nil).Call), arg0, arg1, arg2, arg3, arg4, arg5, arg6) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Call", reflect.TypeOf((*MockVM)(nil).Call), arg0, arg1, arg2, arg3, arg4, arg5) } // Execute mocks base method. -func (m *MockVM) Execute(arg0 []core.Transaction, arg1 []core.Class, arg2 []*felt.Felt, arg3 *vm.BlockInfo, arg4 core.StateReader, arg5 *utils.Network, arg6, arg7, arg8, arg9, arg10 bool) ([]*felt.Felt, []*felt.Felt, []vm.TransactionTrace, error) { +func (m *MockVM) Execute(arg0 []core.Transaction, arg1 []core.Class, arg2 []*felt.Felt, arg3 *vm.BlockInfo, arg4 core.StateReader, arg5 *utils.Network, arg6, arg7, arg8, arg9 bool) ([]*felt.Felt, []*felt.Felt, []vm.TransactionTrace, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Execute", arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10) + ret := m.ctrl.Call(m, "Execute", arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) ret0, _ := ret[0].([]*felt.Felt) ret1, _ := ret[1].([]*felt.Felt) ret2, _ := ret[2].([]vm.TransactionTrace) @@ -69,7 +69,7 @@ func (m *MockVM) Execute(arg0 []core.Transaction, arg1 []core.Class, arg2 []*fel } // Execute indicates an expected call of Execute. -func (mr *MockVMMockRecorder) Execute(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10 any) *gomock.Call { +func (mr *MockVMMockRecorder) Execute(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Execute", reflect.TypeOf((*MockVM)(nil).Execute), arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Execute", reflect.TypeOf((*MockVM)(nil).Execute), arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) } diff --git a/node/node.go b/node/node.go index 1c92bae2ff..eb4a885080 100644 --- a/node/node.go +++ b/node/node.go @@ -86,6 +86,8 @@ type Config struct { GatewayAPIKey string `mapstructure:"gw-api-key"` GatewayTimeout time.Duration `mapstructure:"gw-timeout"` + + VMConcurrencyMode bool `mapstructure:"vm-concurrency-mode"` } type Node struct { @@ -175,7 +177,7 @@ func New(cfg *Config, version string) (*Node, error) { //nolint:gocyclo,funlen services = append(services, synchronizer) } - throttledVM := NewThrottledVM(vm.New(log), cfg.MaxVMs, int32(cfg.MaxVMQueue)) + throttledVM := NewThrottledVM(vm.New(cfg.VMConcurrencyMode, log), cfg.MaxVMs, int32(cfg.MaxVMQueue)) var syncReader sync.Reader = &sync.NoopSynchronizer{} if synchronizer != nil { diff --git a/node/throttled_vm.go b/node/throttled_vm.go index 4ebfeb2111..7151867c00 100644 --- a/node/throttled_vm.go +++ b/node/throttled_vm.go @@ -20,19 +20,19 @@ func NewThrottledVM(res vm.VM, concurrenyBudget uint, maxQueueLen int32) *Thrott } func (tvm *ThrottledVM) Call(callInfo *vm.CallInfo, blockInfo *vm.BlockInfo, state core.StateReader, - network *utils.Network, maxSteps uint64, useBlobData, concurrencyMode bool, + network *utils.Network, maxSteps uint64, useBlobData bool, ) ([]*felt.Felt, error) { var ret []*felt.Felt return ret, tvm.Do(func(vm *vm.VM) error { var err error - ret, err = (*vm).Call(callInfo, blockInfo, state, network, maxSteps, useBlobData, concurrencyMode) + ret, err = (*vm).Call(callInfo, blockInfo, state, network, maxSteps, useBlobData) return err }) } func (tvm *ThrottledVM) Execute(txns []core.Transaction, declaredClasses []core.Class, paidFeesOnL1 []*felt.Felt, blockInfo *vm.BlockInfo, state core.StateReader, network *utils.Network, skipChargeFee, skipValidate, errOnRevert, - useBlobData, concurrencyMode bool, + useBlobData bool, ) ([]*felt.Felt, []*felt.Felt, []vm.TransactionTrace, error) { var ret []*felt.Felt var traces []vm.TransactionTrace @@ -40,7 +40,7 @@ func (tvm *ThrottledVM) Execute(txns []core.Transaction, declaredClasses []core. return ret, dataGasConsumed, traces, tvm.Do(func(vm *vm.VM) error { var err error ret, dataGasConsumed, traces, err = (*vm).Execute(txns, declaredClasses, paidFeesOnL1, blockInfo, state, network, - skipChargeFee, skipValidate, errOnRevert, useBlobData, concurrencyMode) + skipChargeFee, skipValidate, errOnRevert, useBlobData) return err }) } diff --git a/rpc/estimate_fee_test.go b/rpc/estimate_fee_test.go index d4a993fe15..da3703e977 100644 --- a/rpc/estimate_fee_test.go +++ b/rpc/estimate_fee_test.go @@ -55,7 +55,7 @@ func TestEstimateMessageFee(t *testing.T) { expectedGasConsumed := new(felt.Felt).SetUint64(37) mockVM.EXPECT().Execute(gomock.Any(), gomock.Any(), gomock.Any(), &vm.BlockInfo{ Header: latestHeader, - }, gomock.Any(), &utils.Mainnet, gomock.Any(), false, true, false, false).DoAndReturn( + }, gomock.Any(), &utils.Mainnet, gomock.Any(), false, true, false).DoAndReturn( func(txns []core.Transaction, declaredClasses []core.Class, paidFeesOnL1 []*felt.Felt, blockInfo *vm.BlockInfo, state core.StateReader, network *utils.Network, skipChargeFee, skipValidate, errOnRevert bool, ) ([]*felt.Felt, []*felt.Felt, []vm.TransactionTrace, error) { @@ -110,7 +110,7 @@ func TestEstimateFee(t *testing.T) { blockInfo := vm.BlockInfo{Header: &core.Header{}} t.Run("ok with zero values", func(t *testing.T) { - mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &blockInfo, mockState, n, true, true, false, false, false). + mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &blockInfo, mockState, n, true, true, false, false). Return([]*felt.Felt{}, []vm.TransactionTrace{}, nil) _, err := handler.EstimateFee([]rpc.BroadcastedTransaction{}, []rpc.SimulationFlag{}, rpc.BlockID{Latest: true}) @@ -118,7 +118,7 @@ func TestEstimateFee(t *testing.T) { }) t.Run("ok with zero values, skip validate", func(t *testing.T) { - mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &blockInfo, mockState, n, true, true, false, false, false). + mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &blockInfo, mockState, n, true, true, false, false). Return([]*felt.Felt{}, []vm.TransactionTrace{}, nil) _, err := handler.EstimateFee([]rpc.BroadcastedTransaction{}, []rpc.SimulationFlag{rpc.SkipValidateFlag}, rpc.BlockID{Latest: true}) @@ -126,7 +126,7 @@ func TestEstimateFee(t *testing.T) { }) t.Run("transaction execution error", func(t *testing.T) { - mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &blockInfo, mockState, n, true, true, false, false, false). + mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &blockInfo, mockState, n, true, true, false, false). Return(nil, nil, vm.TransactionExecutionError{ Index: 44, Cause: errors.New("oops"), @@ -138,7 +138,7 @@ func TestEstimateFee(t *testing.T) { ExecutionError: "oops", }), err) - mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &blockInfo, mockState, n, false, true, true, false, false). + mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &blockInfo, mockState, n, false, true, true, false). Return(nil, nil, vm.TransactionExecutionError{ Index: 44, Cause: errors.New("oops"), diff --git a/rpc/simulation.go b/rpc/simulation.go index cdadf6a99e..4948c062ac 100644 --- a/rpc/simulation.go +++ b/rpc/simulation.go @@ -107,7 +107,7 @@ func (h *Handler) simulateTransactions(id BlockID, transactions []BroadcastedTra } useBlobData := !v0_6Response overallFees, dataGasConsumed, traces, err := h.vm.Execute(txns, classes, paidFeesOnL1, &blockInfo, - state, h.bcReader.Network(), skipFeeCharge, skipValidate, errOnRevert, useBlobData, false) // todo change flag + state, h.bcReader.Network(), skipFeeCharge, skipValidate, errOnRevert, useBlobData) if err != nil { if errors.Is(err, utils.ErrResourceBusy) { return nil, ErrInternal.CloneWithData(throttledVMErr) diff --git a/rpc/simulation_test.go b/rpc/simulation_test.go index 17d57c10f5..135d8c879d 100644 --- a/rpc/simulation_test.go +++ b/rpc/simulation_test.go @@ -36,7 +36,7 @@ func TestSimulateTransactions(t *testing.T) { t.Run("ok with zero values, skip fee", func(t *testing.T) { mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &vm.BlockInfo{ Header: headsHeader, - }, mockState, n, true, false, false, false, false). + }, mockState, n, true, false, false, false). Return([]*felt.Felt{}, []vm.TransactionTrace{}, nil) _, err := handler.SimulateTransactions(rpc.BlockID{Latest: true}, []rpc.BroadcastedTransaction{}, []rpc.SimulationFlag{rpc.SkipFeeChargeFlag}) @@ -46,7 +46,7 @@ func TestSimulateTransactions(t *testing.T) { t.Run("ok with zero values, skip validate", func(t *testing.T) { mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &vm.BlockInfo{ Header: headsHeader, - }, mockState, n, false, false, false, false, false). + }, mockState, n, false, false, false, false). Return([]*felt.Felt{}, []vm.TransactionTrace{}, nil) _, err := handler.SimulateTransactions(rpc.BlockID{Latest: true}, []rpc.BroadcastedTransaction{}, []rpc.SimulationFlag{rpc.SkipValidateFlag}) @@ -56,7 +56,7 @@ func TestSimulateTransactions(t *testing.T) { t.Run("transaction execution error", func(t *testing.T) { mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &vm.BlockInfo{ Header: headsHeader, - }, mockState, n, false, false, false, false, false). + }, mockState, n, false, false, false, false). Return(nil, nil, vm.TransactionExecutionError{ Index: 44, Cause: errors.New("oops"), @@ -70,7 +70,7 @@ func TestSimulateTransactions(t *testing.T) { mockVM.EXPECT().Execute(nil, nil, []*felt.Felt{}, &vm.BlockInfo{ Header: headsHeader, - }, mockState, n, false, true, true, false, false). + }, mockState, n, false, true, true, false). Return(nil, nil, vm.TransactionExecutionError{ Index: 44, Cause: errors.New("oops"), diff --git a/rpc/trace.go b/rpc/trace.go index 746575eca8..809a8481de 100644 --- a/rpc/trace.go +++ b/rpc/trace.go @@ -263,7 +263,7 @@ func (h *Handler) traceBlockTransactions(ctx context.Context, block *core.Block, useBlobData := !v0_6Response overallFees, dataGasConsumed, traces, err := h.vm.Execute(block.Transactions, classes, paidFeesOnL1, &blockInfo, state, network, false, - false, false, useBlobData, false) // todo add concurrenc_mode flag + false, false, useBlobData) if err != nil { if errors.Is(err, utils.ErrResourceBusy) { return nil, ErrInternal.CloneWithData(throttledVMErr) @@ -384,7 +384,7 @@ func (h *Handler) call(funcCall FunctionCall, id BlockID, useBlobData bool) ([]* }, &vm.BlockInfo{ Header: header, BlockHashToBeRevealed: blockHashToBeRevealed, - }, state, h.bcReader.Network(), h.callMaxSteps, useBlobData, false) // todo change to flag + }, state, h.bcReader.Network(), h.callMaxSteps, useBlobData) if err != nil { if errors.Is(err, utils.ErrResourceBusy) { return nil, ErrInternal.CloneWithData(throttledVMErr) diff --git a/rpc/trace_test.go b/rpc/trace_test.go index 408a8a0035..b1a4debaf2 100644 --- a/rpc/trace_test.go +++ b/rpc/trace_test.go @@ -158,7 +158,7 @@ func TestTraceTransaction(t *testing.T) { consumedGas := []*felt.Felt{new(felt.Felt).SetUint64(1)} overallFee := []*felt.Felt{new(felt.Felt).SetUint64(1)} mockVM.EXPECT().Execute([]core.Transaction{tx}, []core.Class{declaredClass.Class}, []*felt.Felt{}, - &vm.BlockInfo{Header: header}, gomock.Any(), &utils.Mainnet, false, false, false, true, false).Return(overallFee, consumedGas, []vm.TransactionTrace{*vmTrace}, nil) + &vm.BlockInfo{Header: header}, gomock.Any(), &utils.Mainnet, false, false, false, true).Return(overallFee, consumedGas, []vm.TransactionTrace{*vmTrace}, nil) trace, err := handler.TraceTransaction(context.Background(), *hash) require.Nil(t, err) @@ -245,7 +245,7 @@ func TestTraceTransaction(t *testing.T) { consumedGas := []*felt.Felt{new(felt.Felt).SetUint64(1)} overallFee := []*felt.Felt{new(felt.Felt).SetUint64(1)} mockVM.EXPECT().Execute([]core.Transaction{tx}, []core.Class{declaredClass.Class}, []*felt.Felt{}, - &vm.BlockInfo{Header: header}, gomock.Any(), &utils.Mainnet, false, false, false, true, false). + &vm.BlockInfo{Header: header}, gomock.Any(), &utils.Mainnet, false, false, false, true). Return(overallFee, consumedGas, []vm.TransactionTrace{*vmTrace}, nil) trace, err := handler.TraceTransaction(context.Background(), *hash) @@ -325,7 +325,7 @@ func TestTraceTransactionV0_6(t *testing.T) { vmTrace := new(vm.TransactionTrace) require.NoError(t, json.Unmarshal(vmTraceJSON, vmTrace)) mockVM.EXPECT().Execute([]core.Transaction{tx}, []core.Class{declaredClass.Class}, []*felt.Felt{}, - &vm.BlockInfo{Header: header}, gomock.Any(), &utils.Mainnet, false, false, false, false, false). + &vm.BlockInfo{Header: header}, gomock.Any(), &utils.Mainnet, false, false, false, false). Return(nil, nil, []vm.TransactionTrace{*vmTrace}, nil) trace, err := handler.TraceTransactionV0_6(context.Background(), *hash) @@ -381,7 +381,7 @@ func TestTraceTransactionV0_6(t *testing.T) { vmTrace := new(vm.TransactionTrace) require.NoError(t, json.Unmarshal(vmTraceJSON, vmTrace)) mockVM.EXPECT().Execute([]core.Transaction{tx}, []core.Class{declaredClass.Class}, []*felt.Felt{}, - &vm.BlockInfo{Header: header}, gomock.Any(), &utils.Mainnet, false, false, false, false, false). + &vm.BlockInfo{Header: header}, gomock.Any(), &utils.Mainnet, false, false, false, false). Return(nil, nil, []vm.TransactionTrace{*vmTrace}, nil) trace, err := handler.TraceTransactionV0_6(context.Background(), *hash) @@ -473,7 +473,7 @@ func TestTraceBlockTransactions(t *testing.T) { vmTrace := vm.TransactionTrace{} require.NoError(t, json.Unmarshal(vmTraceJSON, &vmTrace)) mockVM.EXPECT().Execute(block.Transactions, []core.Class{declaredClass.Class}, paidL1Fees, &vm.BlockInfo{Header: header}, - gomock.Any(), n, false, false, false, false, false). + gomock.Any(), n, false, false, false, false). Return(nil, []vm.TransactionTrace{vmTrace, vmTrace}, nil) result, err := handler.TraceBlockTransactions(context.Background(), rpc.BlockID{Hash: blockHash}) @@ -540,7 +540,7 @@ func TestTraceBlockTransactions(t *testing.T) { vmTrace := vm.TransactionTrace{} require.NoError(t, json.Unmarshal(vmTraceJSON, &vmTrace)) mockVM.EXPECT().Execute([]core.Transaction{tx}, []core.Class{declaredClass.Class}, []*felt.Felt{}, &vm.BlockInfo{Header: header}, - gomock.Any(), n, false, false, false, false, false). + gomock.Any(), n, false, false, false, false). Return(nil, []vm.TransactionTrace{vmTrace}, nil) expectedResult := []rpc.TracedBlockTransaction{ @@ -628,7 +628,7 @@ func TestCall(t *testing.T) { ClassHash: classHash, Selector: selector, Calldata: calldata, - }, &vm.BlockInfo{Header: headsHeader}, gomock.Any(), &utils.Mainnet, uint64(1337), true, false).Return(expectedRes, nil) + }, &vm.BlockInfo{Header: headsHeader}, gomock.Any(), &utils.Mainnet, uint64(1337), true).Return(expectedRes, nil) res, rpcErr := handler.Call(rpc.FunctionCall{ ContractAddress: *contractAddr, diff --git a/starknet/rust/Cargo.toml b/starknet/rust/Cargo.toml index 33d9a6bb37..6cc61f8b88 100644 --- a/starknet/rust/Cargo.toml +++ b/starknet/rust/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" [dependencies] serde = "1.0.171" serde_json = { version = "1.0.96", features = ["raw_value"] } -cairo-lang-starknet-classes = "=2.7.0-dev.0" +cairo-lang-starknet-classes = "=2.7.0-rc.1" [lib] crate-type = ["staticlib"] diff --git a/starknet/transaction.go b/starknet/transaction.go index e563ba121e..8e18c0da53 100644 --- a/starknet/transaction.go +++ b/starknet/transaction.go @@ -236,6 +236,14 @@ type BuiltinInstanceCounter struct { Keccak uint64 `json:"keccak_builtin"` Poseidon uint64 `json:"poseidon_builtin"` SegmentArena uint64 `json:"segment_arena_builtin"` + AddMod uint64 `json:"add_mod_builtin"` + MulMod uint64 `json:"mul_mod_builtin"` + RangeCheck96 uint64 `json:"range_check96_builtin"` +} + +type TotalGasConsumed struct { + L1Gas uint64 `json:"l1_gas"` + L1DataGas uint64 `json:"l1_data_gas"` } type TransactionReceipt struct { @@ -253,4 +261,5 @@ type TransactionReceipt struct { TransactionHash *felt.Felt `json:"transaction_hash"` TransactionIndex uint64 `json:"transaction_index"` RevertError string `json:"revert_error"` + TotalGasConsumed *TotalGasConsumed `json:"total_gas_consumed"` } diff --git a/vm/rust/Cargo.toml b/vm/rust/Cargo.toml index 529b3bc653..9afdd66b44 100644 --- a/vm/rust/Cargo.toml +++ b/vm/rust/Cargo.toml @@ -9,10 +9,9 @@ edition = "2021" serde = "1.0.171" serde_json = { version = "1.0.96", features = ["raw_value"] } blockifier = "=0.8.0-dev.0" -starknet_api = "=0.13.0-dev.6" +starknet_api = "=0.13.0-rc.0" starknet-types-core = { version = "0.1.2", features = ["hash"] } -#cairo-vm = "=1.0.0-rc3" -cairo-vm = {path = "/Users/kirill/Desktop/cairo-vm/vm"} +cairo-vm = "=1.0.0-rc4" indexmap = "2.1.0" cached = "0.46.1" once_cell = "1.18.0" diff --git a/vm/rust/src/jsonrpc.rs b/vm/rust/src/jsonrpc.rs index d70c092889..d1cae34216 100644 --- a/vm/rust/src/jsonrpc.rs +++ b/vm/rust/src/jsonrpc.rs @@ -298,10 +298,10 @@ pub struct Retdata(pub Vec); fn make_state_diff( - state: &mut TransactionalState>, // todo remove mut + state: &mut TransactionalState>, deprecated_declared_class: Option, ) -> Result { - let diff: CommitmentStateDiff = state.to_state_diff().unwrap().into();// todo remove unwrap + let diff: CommitmentStateDiff = state.to_state_diff()?.into(); let mut deployed_contracts = Vec::new(); let mut replaced_classes = Vec::new(); diff --git a/vm/rust/src/lib.rs b/vm/rust/src/lib.rs index 577d20dcc5..bd90a464b5 100644 --- a/vm/rust/src/lib.rs +++ b/vm/rust/src/lib.rs @@ -263,8 +263,8 @@ pub extern "C" fn cairoVMExecute( Err(error) => { let err_string = match &error { ContractConstructorExecutionFailed(e) => format!("{error} {e}"), - /*| ExecutionError(e) - | ValidateTransactionError(e)*/ + ExecutionError {error: e, ..} + | ValidateTransactionError {error: e, ..} => format!("{error} {e}"), other => other.to_string() }; report_error( @@ -422,7 +422,7 @@ fn build_block_context( }, use_kzg_da: block_info.use_blob_data == 1, }, ChainInfo{ - chain_id: ChainId::Other(chain_id_str.to_string()), // todo change that + chain_id: ChainId::from(chain_id_str.to_string()), fee_token_addresses: FeeTokenAddresses { // both addresses are the same for all networks eth_fee_token_address: ContractAddress::try_from(StarkHash::from_hex("0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7").unwrap()).unwrap(), diff --git a/vm/vm.go b/vm/vm.go index 40b7b77d11..ba952ee1f7 100644 --- a/vm/vm.go +++ b/vm/vm.go @@ -62,20 +62,21 @@ import ( //go:generate mockgen -destination=../mocks/mock_vm.go -package=mocks github.com/NethermindEth/juno/vm VM type VM interface { Call(callInfo *CallInfo, blockInfo *BlockInfo, state core.StateReader, network *utils.Network, - maxSteps uint64, useBlobData, concurrencyMode bool) ([]*felt.Felt, error) + maxSteps uint64, useBlobData bool) ([]*felt.Felt, error) Execute(txns []core.Transaction, declaredClasses []core.Class, paidFeesOnL1 []*felt.Felt, blockInfo *BlockInfo, state core.StateReader, network *utils.Network, skipChargeFee, skipValidate, errOnRevert, useBlobData bool, - concurrencyMode bool, ) ([]*felt.Felt, []*felt.Felt, []TransactionTrace, error) } type vm struct { - log utils.SimpleLogger + log utils.SimpleLogger + concurrencyMode bool } -func New(log utils.SimpleLogger) VM { +func New(concurrencyMode bool, log utils.SimpleLogger) VM { return &vm{ - log: log, + log: log, + concurrencyMode: concurrencyMode, } } @@ -218,7 +219,7 @@ func makeCBlockInfo(blockInfo *BlockInfo, useBlobData bool) C.BlockInfo { } func (v *vm) Call(callInfo *CallInfo, blockInfo *BlockInfo, state core.StateReader, - network *utils.Network, maxSteps uint64, useBlobData, concurrencyMode bool, + network *utils.Network, maxSteps uint64, useBlobData bool, ) ([]*felt.Felt, error) { context := &callContext{ state: state, @@ -229,7 +230,7 @@ func (v *vm) Call(callInfo *CallInfo, blockInfo *BlockInfo, state core.StateRead defer handle.Delete() var concurrencyModeByte byte - if concurrencyMode { + if v.concurrencyMode { concurrencyModeByte = 1 } C.setVersionedConstants(C.CString("my_json")) @@ -258,7 +259,7 @@ func (v *vm) Call(callInfo *CallInfo, blockInfo *BlockInfo, state core.StateRead // Execute executes a given transaction set and returns the gas spent per transaction func (v *vm) Execute(txns []core.Transaction, declaredClasses []core.Class, paidFeesOnL1 []*felt.Felt, blockInfo *BlockInfo, state core.StateReader, network *utils.Network, - skipChargeFee, skipValidate, errOnRevert, useBlobData, concurrencyMode bool, + skipChargeFee, skipValidate, errOnRevert, useBlobData bool, ) ([]*felt.Felt, []*felt.Felt, []TransactionTrace, error) { context := &callContext{ state: state, @@ -297,7 +298,7 @@ func (v *vm) Execute(txns []core.Transaction, declaredClasses []core.Class, paid } var concurrencyModeByte byte - if concurrencyMode { + if v.concurrencyMode { concurrencyModeByte = 1 } diff --git a/vm/vm_test.go b/vm/vm_test.go index 6dc7997be8..63aebade47 100644 --- a/vm/vm_test.go +++ b/vm/vm_test.go @@ -52,11 +52,11 @@ func TestV0Call(t *testing.T) { entryPoint := utils.HexToFelt(t, "0x39e11d48192e4333233c7eb19d10ad67c362bb28580c604d67884c85da39695") - ret, err := New(nil).Call(&CallInfo{ + ret, err := New(false, nil).Call(&CallInfo{ ContractAddress: contractAddr, ClassHash: classHash, Selector: entryPoint, - }, &BlockInfo{Header: &core.Header{}}, testState, &utils.Mainnet, 1_000_000, true, false) + }, &BlockInfo{Header: &core.Header{}}, testState, &utils.Mainnet, 1_000_000, true) require.NoError(t, err) assert.Equal(t, []*felt.Felt{&felt.Zero}, ret) @@ -72,11 +72,11 @@ func TestV0Call(t *testing.T) { }, }, nil)) - ret, err = New(nil).Call(&CallInfo{ + ret, err = New(false, nil).Call(&CallInfo{ ContractAddress: contractAddr, ClassHash: classHash, Selector: entryPoint, - }, &BlockInfo{Header: &core.Header{Number: 1}}, testState, &utils.Mainnet, 1_000_000, true, false) + }, &BlockInfo{Header: &core.Header{Number: 1}}, testState, &utils.Mainnet, 1_000_000, true) require.NoError(t, err) assert.Equal(t, []*felt.Felt{new(felt.Felt).SetUint64(1337)}, ret) } @@ -120,13 +120,13 @@ func TestV1Call(t *testing.T) { // test_storage_read entryPoint := utils.HexToFelt(t, "0x5df99ae77df976b4f0e5cf28c7dcfe09bd6e81aab787b19ac0c08e03d928cf") storageLocation := utils.HexToFelt(t, "0x44") - ret, err := New(log).Call(&CallInfo{ + ret, err := New(false, log).Call(&CallInfo{ ContractAddress: contractAddr, Selector: entryPoint, Calldata: []felt.Felt{ *storageLocation, }, - }, &BlockInfo{Header: &core.Header{}}, testState, &utils.Goerli, 1_000_000, true, false) + }, &BlockInfo{Header: &core.Header{}}, testState, &utils.Goerli, 1_000_000, true) require.NoError(t, err) assert.Equal(t, []*felt.Felt{&felt.Zero}, ret) @@ -142,18 +142,20 @@ func TestV1Call(t *testing.T) { }, }, nil)) - ret, err = New(log).Call(&CallInfo{ + ret, err = New(false, log).Call(&CallInfo{ ContractAddress: contractAddr, Selector: entryPoint, Calldata: []felt.Felt{ *storageLocation, }, - }, &BlockInfo{Header: &core.Header{Number: 1}}, testState, &utils.Goerli, 1_000_000, true, false) + }, &BlockInfo{Header: &core.Header{Number: 1}}, testState, &utils.Goerli, 1_000_000, true) require.NoError(t, err) assert.Equal(t, []*felt.Felt{new(felt.Felt).SetUint64(37)}, ret) } func TestCall_MaxSteps(t *testing.T) { + t.Skip() + testDB := pebble.NewMemTest(t) txn, err := testDB.NewTransaction(true) require.NoError(t, err) @@ -186,11 +188,11 @@ func TestCall_MaxSteps(t *testing.T) { entryPoint := utils.HexToFelt(t, "0x39e11d48192e4333233c7eb19d10ad67c362bb28580c604d67884c85da39695") - _, err = New(nil).Call(&CallInfo{ + _, err = New(false, nil).Call(&CallInfo{ ContractAddress: contractAddr, ClassHash: classHash, Selector: entryPoint, - }, &BlockInfo{Header: &core.Header{}}, testState, &utils.Mainnet, 0, true, false) + }, &BlockInfo{Header: &core.Header{}}, testState, &utils.Mainnet, 0, true) assert.ErrorContains(t, err, "RunResources has no remaining steps") } @@ -207,7 +209,7 @@ func TestExecute(t *testing.T) { state := core.NewState(txn) t.Run("empty transaction list", func(t *testing.T) { - _, _, _, err := New(nil).Execute([]core.Transaction{}, []core.Class{}, []*felt.Felt{}, &BlockInfo{ + _, _, _, err := New(false, nil).Execute([]core.Transaction{}, []core.Class{}, []*felt.Felt{}, &BlockInfo{ Header: &core.Header{ Timestamp: 1666877926, SequencerAddress: utils.HexToFelt(t, "0x46a89ae102987331d369645031b49c27738ed096f2789c24449966da4c6de6b"), @@ -215,17 +217,17 @@ func TestExecute(t *testing.T) { GasPriceSTRK: &felt.Zero, }, }, state, - &network, false, false, false, false, false) + &network, false, false, false, false) require.NoError(t, err) }) t.Run("zero data", func(t *testing.T) { - _, _, _, err := New(nil).Execute(nil, nil, []*felt.Felt{}, &BlockInfo{ + _, _, _, err := New(false, nil).Execute(nil, nil, []*felt.Felt{}, &BlockInfo{ Header: &core.Header{ SequencerAddress: &felt.Zero, GasPrice: &felt.Zero, GasPriceSTRK: &felt.Zero, }, - }, state, &network, false, false, false, false, false) + }, state, &network, false, false, false, false) require.NoError(t, err) }) } From 96712c34a7927806bb21e7e6612e939a73f4001d Mon Sep 17 00:00:00 2001 From: Kirill Date: Wed, 17 Jul 2024 13:58:25 +0300 Subject: [PATCH 08/28] Draft impl of new block hashing scheme --- core/block.go | 72 ++++++++++++++++++++++++++++++++++++++++++++- core/block_test.go | 7 +++++ core/transaction.go | 3 ++ 3 files changed, 81 insertions(+), 1 deletion(-) diff --git a/core/block.go b/core/block.go index 8c51bdfaf1..eef2f3d5cb 100644 --- a/core/block.go +++ b/core/block.go @@ -4,12 +4,12 @@ import ( "encoding/binary" "errors" "fmt" - "github.com/NethermindEth/juno/core/crypto" "github.com/NethermindEth/juno/core/felt" "github.com/NethermindEth/juno/utils" "github.com/bits-and-blooms/bloom/v3" "github.com/sourcegraph/conc" + "slices" ) type Header struct { @@ -167,6 +167,53 @@ func pre07Hash(b *Block, chain *felt.Felt) (*felt.Felt, *BlockCommitments, error ), &BlockCommitments{TransactionCommitment: txCommitment}, nil } +func newBlockHash(b *Block) (*felt.Felt, error) { + seqAddr := b.SequencerAddress + // todo override support? + + wg := conc.NewWaitGroup() + var txCommitment, eCommitment *felt.Felt + var tErr, eErr error + + wg.Go(func() { + txCommitment, tErr = transactionCommitment(b.Transactions, b.Header.ProtocolVersion) + }) + wg.Go(func() { + eCommitment, eErr = eventCommitment(b.Receipts) + }) + wg.Wait() + + if tErr != nil { + return nil, tErr + } + if eErr != nil { + return nil, eErr + } + + // todo pass correct stateDiffLen + concatCounts := ConcatCounts(b.TransactionCount, b.EventCount, 0, b.L1DAMode) + + return crypto.PoseidonArray( + new(felt.Felt).SetBytes([]byte("STARKNET_BLOCK_HASH0")), + new(felt.Felt).SetUint64(b.Number), // block number + b.GlobalStateRoot, // global state root + seqAddr, // sequencer address + new(felt.Felt).SetUint64(b.Timestamp), // block timestamp + concatCounts, + &felt.Zero, // todo state_diff_hash + txCommitment, // transaction commitment + eCommitment, // event commitment + &felt.Zero, // todo receipt_commitment + &felt.Zero, // todo gas_price_wei + &felt.Zero, // todo gas_price_fri + b.L1DataGasPrice.PriceInWei, + b.L1DataGasPrice.PriceInFri, + new(felt.Felt).SetBytes([]byte(b.ProtocolVersion)), + &felt.Zero, // reserved: extra data + b.ParentHash, // parent block hash + ), nil +} + // post07Hash computes the block hash for blocks generated after Cairo 0.7.0 func post07Hash(b *Block, overrideSeqAddr *felt.Felt) (*felt.Felt, *BlockCommitments, error) { seqAddr := b.SequencerAddress @@ -222,3 +269,26 @@ func MarshalBlockNumber(blockNumber uint64) []byte { return numBytes } + +func ConcatCounts(txCount, eventCount, stateDiffLen uint64, l1Mode L1DAMode) *felt.Felt { + var l1DAByte byte + if l1Mode == Blob { + l1DAByte = 0b10000000 + } + + var txCountBytes, eventCountBytes, stateDiffLenBytes [8]byte + binary.BigEndian.PutUint64(txCountBytes[:], txCount) + binary.BigEndian.PutUint64(eventCountBytes[:], eventCount) + binary.BigEndian.PutUint64(stateDiffLenBytes[:], stateDiffLen) + + zeroPadding := make([]byte, 7) + + concatBytes := slices.Concat( + txCountBytes[:], + eventCountBytes[:], + stateDiffLenBytes[:], + []byte{l1DAByte}, + zeroPadding, + ) + return new(felt.Felt).SetBytes(concatBytes) +} diff --git a/core/block_test.go b/core/block_test.go index 96ba8f719d..4f048ecc92 100644 --- a/core/block_test.go +++ b/core/block_test.go @@ -257,3 +257,10 @@ func TestBlockHashP2P(t *testing.T) { assert.EqualError(t, err, "block.SequencerAddress is nil") }) } + +func TestConcatCounts(t *testing.T) { + result := core.ConcatCounts(4, 3, 2, core.Blob) + expected := utils.HexToFelt(t, "0x0000000000000004000000000000000300000000000000028000000000000000") + + assert.Equal(t, expected, result) +} diff --git a/core/transaction.go b/core/transaction.go index ac0b8cdffb..75a44c116a 100644 --- a/core/transaction.go +++ b/core/transaction.go @@ -117,6 +117,9 @@ type BuiltinInstanceCounter struct { Keccak uint64 Poseidon uint64 SegmentArena uint64 + AddMod uint64 + MulMod uint64 + RangeCheck96 uint64 } type TransactionReceipt struct { From ff3818fcb3effc4e9829abb9aa7a2b91b51dfe9f Mon Sep 17 00:00:00 2001 From: Kirill Date: Fri, 19 Jul 2024 12:55:32 +0300 Subject: [PATCH 09/28] Update blockifier to 0.8.0-rc.0 --- starknet/rust/Cargo.toml | 2 +- vm/rust/Cargo.toml | 6 +- vm/rust/src/jsonrpc.rs | 58 +++++--- vm/rust/src/juno_state_reader.rs | 65 +++++---- vm/rust/src/lib.rs | 178 ++++++++++++++++-------- vm/rust/versioned_constants_13_0.json | 22 +++ vm/rust/versioned_constants_13_1.json | 22 +++ vm/rust/versioned_constants_13_1_1.json | 22 +++ 8 files changed, 266 insertions(+), 109 deletions(-) diff --git a/starknet/rust/Cargo.toml b/starknet/rust/Cargo.toml index 6cc61f8b88..5a84b57548 100644 --- a/starknet/rust/Cargo.toml +++ b/starknet/rust/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" [dependencies] serde = "1.0.171" serde_json = { version = "1.0.96", features = ["raw_value"] } -cairo-lang-starknet-classes = "=2.7.0-rc.1" +cairo-lang-starknet-classes = "=2.7.0-rc.3" [lib] crate-type = ["staticlib"] diff --git a/vm/rust/Cargo.toml b/vm/rust/Cargo.toml index 9afdd66b44..10d9ddbfaf 100644 --- a/vm/rust/Cargo.toml +++ b/vm/rust/Cargo.toml @@ -8,10 +8,10 @@ edition = "2021" [dependencies] serde = "1.0.171" serde_json = { version = "1.0.96", features = ["raw_value"] } -blockifier = "=0.8.0-dev.0" +blockifier = "=0.8.0-rc.0" starknet_api = "=0.13.0-rc.0" -starknet-types-core = { version = "0.1.2", features = ["hash"] } -cairo-vm = "=1.0.0-rc4" +starknet-types-core = { version = "0.1.5", features = ["hash"] } +cairo-vm = "=1.0.0-rc5" indexmap = "2.1.0" cached = "0.46.1" once_cell = "1.18.0" diff --git a/vm/rust/src/jsonrpc.rs b/vm/rust/src/jsonrpc.rs index d1cae34216..d9fa0e9645 100644 --- a/vm/rust/src/jsonrpc.rs +++ b/vm/rust/src/jsonrpc.rs @@ -1,17 +1,17 @@ use blockifier; -use blockifier::execution::entry_point::CallType; use blockifier::execution::call_info::OrderedL2ToL1Message; -use cairo_vm::types::builtin_name::BuiltinName; -use blockifier::state::cached_state::{TransactionalState, CommitmentStateDiff}; +use blockifier::execution::entry_point::CallType; +use blockifier::state::cached_state::CachedState; +use blockifier::state::cached_state::{CommitmentStateDiff, TransactionalState}; use blockifier::state::errors::StateError; use blockifier::state::state_api::{State, StateReader}; +use cairo_vm::types::builtin_name::BuiltinName; use serde::Serialize; -use starknet_api::core::{ClassHash, ContractAddress, EntryPointSelector, PatriciaKey, EthAddress}; +use starknet_api::core::{ClassHash, ContractAddress, EntryPointSelector, EthAddress, PatriciaKey}; use starknet_api::deprecated_contract_class::EntryPointType; -use starknet_types_core::felt::Felt; use starknet_api::transaction::{Calldata, EventContent, L2ToL1Payload}; use starknet_api::transaction::{DeclareTransaction, Transaction as StarknetApiTransaction}; -use blockifier::state::cached_state::CachedState; +use starknet_types_core::felt::Felt; type StarkFelt = Felt; @@ -21,7 +21,8 @@ use crate::juno_state_reader::JunoStateReader; #[serde(rename_all = "UPPERCASE")] pub enum TransactionType { // dummy type for implementing Default trait - #[default] Unknown, + #[default] + Unknown, Invoke, Declare, #[serde(rename = "DEPLOY_ACCOUNT")] @@ -204,14 +205,38 @@ impl From for ExecutionResources { } else { None }, - range_check_builtin_applications: val.builtin_instance_counter.get(&BuiltinName::range_check).cloned(), - pedersen_builtin_applications: val.builtin_instance_counter.get(&BuiltinName::pedersen).cloned(), - poseidon_builtin_applications: val.builtin_instance_counter.get(&BuiltinName::poseidon).cloned(), - ec_op_builtin_applications: val.builtin_instance_counter.get(&BuiltinName::ec_op).cloned(), - ecdsa_builtin_applications: val.builtin_instance_counter.get(&BuiltinName::ecdsa).cloned(), - bitwise_builtin_applications: val.builtin_instance_counter.get(&BuiltinName::bitwise).cloned(), - keccak_builtin_applications: val.builtin_instance_counter.get(&BuiltinName::keccak).cloned(), - segment_arena_builtin: val.builtin_instance_counter.get(&BuiltinName::segment_arena).cloned(), + range_check_builtin_applications: val + .builtin_instance_counter + .get(&BuiltinName::range_check) + .cloned(), + pedersen_builtin_applications: val + .builtin_instance_counter + .get(&BuiltinName::pedersen) + .cloned(), + poseidon_builtin_applications: val + .builtin_instance_counter + .get(&BuiltinName::poseidon) + .cloned(), + ec_op_builtin_applications: val + .builtin_instance_counter + .get(&BuiltinName::ec_op) + .cloned(), + ecdsa_builtin_applications: val + .builtin_instance_counter + .get(&BuiltinName::ecdsa) + .cloned(), + bitwise_builtin_applications: val + .builtin_instance_counter + .get(&BuiltinName::bitwise) + .cloned(), + keccak_builtin_applications: val + .builtin_instance_counter + .get(&BuiltinName::keccak) + .cloned(), + segment_arena_builtin: val + .builtin_instance_counter + .get(&BuiltinName::segment_arena) + .cloned(), } } } @@ -296,12 +321,11 @@ impl From for OrderedMessage { #[derive(Debug, Serialize)] pub struct Retdata(pub Vec); - fn make_state_diff( state: &mut TransactionalState>, deprecated_declared_class: Option, ) -> Result { - let diff: CommitmentStateDiff = state.to_state_diff()?.into(); + let diff: CommitmentStateDiff = state.to_state_diff()?.into(); let mut deployed_contracts = Vec::new(); let mut replaced_classes = Vec::new(); diff --git a/vm/rust/src/juno_state_reader.rs b/vm/rust/src/juno_state_reader.rs index 3ba66f953a..fcb0022139 100644 --- a/vm/rust/src/juno_state_reader.rs +++ b/vm/rust/src/juno_state_reader.rs @@ -6,19 +6,21 @@ use std::{ use blockifier::execution::contract_class::ContractClass; use blockifier::state::errors::StateError; -use blockifier::state::state_api::{UpdatableState}; -use std::collections::{HashMap, HashSet}; +use blockifier::state::state_api::UpdatableState; use blockifier::{ - execution::contract_class::{ClassInfo as BlockifierClassInfo, ContractClassV0, ContractClassV1}, + execution::contract_class::{ + ClassInfo as BlockifierClassInfo, ContractClassV0, ContractClassV1, + }, + state::cached_state::{ContractClassMapping, StateMaps}, state::state_api::{StateReader, StateResult}, - state::cached_state::{StateMaps, ContractClassMapping}, }; use cached::{Cached, SizedCache}; use once_cell::sync::Lazy; use serde::Deserialize; use starknet_api::core::{ClassHash, CompiledClassHash, ContractAddress, Nonce}; -use starknet_types_core::felt::Felt; use starknet_api::state::StorageKey; +use starknet_types_core::felt::Felt; +use std::collections::{HashMap, HashSet}; type StarkFelt = Felt; @@ -121,10 +123,7 @@ impl StateReader for JunoStateReader { } /// Returns the contract class of the given class hash. - fn get_compiled_contract_class( - &self, - class_hash: ClassHash, - ) -> StateResult { + fn get_compiled_contract_class(&self, class_hash: ClassHash) -> StateResult { if let Some(cached_class) = CLASS_CACHE.lock().unwrap().cache_get(&class_hash) { // skip the cache if it comes from a height higher than ours. Class might be undefined on the height // that we are reading from right now. @@ -162,7 +161,7 @@ impl StateReader for JunoStateReader { unsafe { JunoFree(ptr as *const c_void) }; - class_info_res.map(| ci | ci.contract_class()).map_err(| err | { + class_info_res.map(|ci| ci.contract_class()).map_err(|err| { StateError::StateReadError(format!( "parsing JSON string for class hash {}: {}", class_hash.0, err @@ -172,27 +171,26 @@ impl StateReader for JunoStateReader { } /// Returns the compiled class hash of the given class hash. - fn get_compiled_class_hash( - &self, - _class_hash: ClassHash, - ) -> StateResult { + fn get_compiled_class_hash(&self, _class_hash: ClassHash) -> StateResult { unimplemented!() } } impl UpdatableState for JunoStateReader { fn apply_writes( - &mut self, - writes: &StateMaps, - class_hash_to_class: &ContractClassMapping, - visited_pcs: &HashMap>, - ) { + &mut self, + writes: &StateMaps, + class_hash_to_class: &ContractClassMapping, + visited_pcs: &HashMap>, + ) { unimplemented!() } } pub fn felt_to_byte_array(felt: &StarkFelt) -> [u8; 32] { - felt.to_bytes_be().try_into().expect("StarkFelt not [u8; 32]") + felt.to_bytes_be() + .try_into() + .expect("StarkFelt not [u8; 32]") } pub fn ptr_to_felt(bytes: *const c_uchar) -> StarkFelt { @@ -208,17 +206,24 @@ pub struct ClassInfo { } pub fn class_info_from_json_str(raw_json: &str) -> Result { - let class_info: ClassInfo = serde_json::from_str(raw_json).map_err(|err| format!("failed parsing class info: {:?}", err))?; - let class_def = class_info.contract_class.to_string(); + let class_info: ClassInfo = serde_json::from_str(raw_json) + .map_err(|err| format!("failed parsing class info: {:?}", err))?; + let class_def = class_info.contract_class.to_string(); println!("JSON: {}", raw_json); let _ = ContractClassV0::try_from_json_string(class_def.as_str()).unwrap(); - let class: ContractClass = if let Ok(class) = ContractClassV0::try_from_json_string(class_def.as_str()) { - class.into() - } else if let Ok(class) = ContractClassV1::try_from_json_string(class_def.as_str()) { - class.into() - } else { - return Err("not a valid contract class".to_string()) - }; - return Ok(BlockifierClassInfo::new(&class.into(), class_info.sierra_program_length, class_info.abi_length).unwrap()); + let class: ContractClass = + if let Ok(class) = ContractClassV0::try_from_json_string(class_def.as_str()) { + class.into() + } else if let Ok(class) = ContractClassV1::try_from_json_string(class_def.as_str()) { + class.into() + } else { + return Err("not a valid contract class".to_string()); + }; + return Ok(BlockifierClassInfo::new( + &class.into(), + class_info.sierra_program_length, + class_info.abi_length, + ) + .unwrap()); } diff --git a/vm/rust/src/lib.rs b/vm/rust/src/lib.rs index bd90a464b5..fff3df568e 100644 --- a/vm/rust/src/lib.rs +++ b/vm/rust/src/lib.rs @@ -6,36 +6,50 @@ extern crate lazy_static; use crate::juno_state_reader::{ptr_to_felt, JunoStateReader}; use std::{ - collections::HashMap, ffi::{c_char, c_longlong, c_uchar, c_ulonglong, c_void, CStr, CString}, num::NonZeroU128, slice, sync::Arc + collections::HashMap, + ffi::{c_char, c_longlong, c_uchar, c_ulonglong, c_void, CStr, CString}, + num::NonZeroU128, + slice, + sync::Arc, }; +use blockifier::blockifier::block::{ + pre_process_block, BlockInfo as BlockifierBlockInfo, BlockNumberHashPair, GasPrices, +}; +use blockifier::abi::constants::STORED_BLOCK_HASH_BUFFER; use blockifier::state::global_cache::GlobalContractCache; -use blockifier::blockifier::block::{pre_process_block, BlockInfo as BlockifierBlockInfo, BlockNumberHashPair, GasPrices}; +use blockifier::bouncer::BouncerConfig; use blockifier::{ - context::{BlockContext, ChainInfo, FeeTokenAddresses, TransactionContext}, execution::{ + context::{BlockContext, ChainInfo, FeeTokenAddresses, TransactionContext}, + execution::{ contract_class::ClassInfo, entry_point::{CallEntryPoint, CallType, EntryPointExecutionContext}, - }, fee::fee_utils::calculate_tx_fee, state::{cached_state::{CachedState}, state_api::State}, transaction::{ + }, + state::{cached_state::CachedState, state_api::State}, + transaction::{ errors::TransactionExecutionError::{ - ContractConstructorExecutionFailed, - ExecutionError, - ValidateTransactionError, - }, objects::{DeprecatedTransactionInfo, HasRelatedFeeType, TransactionInfo}, transaction_execution::Transaction, transactions::ExecutableTransaction - }, versioned_constants::VersionedConstants + ContractConstructorExecutionFailed, ExecutionError, ValidateTransactionError, + }, + objects::{DeprecatedTransactionInfo, HasRelatedFeeType, TransactionInfo}, + transaction_execution::Transaction, + transactions::ExecutableTransaction, + }, + versioned_constants::VersionedConstants, }; use cairo_vm::vm::runners::cairo_runner::ExecutionResources; use juno_state_reader::{class_info_from_json_str, felt_to_byte_array}; use serde::Deserialize; -use starknet_api::{block::BlockHash, core::PatriciaKey, transaction::{Calldata, Transaction as StarknetApiTransaction, TransactionHash}}; use starknet_api::{ - deprecated_contract_class::EntryPointType, - transaction::Fee, + block::BlockHash, + core::PatriciaKey, + transaction::{Calldata, Transaction as StarknetApiTransaction, TransactionHash}, }; -use starknet_types_core::felt::Felt; use starknet_api::{ core::{ChainId, ClassHash, ContractAddress, EntryPointSelector}, hash::StarkHash, }; +use starknet_api::{deprecated_contract_class::EntryPointType, transaction::Fee}; +use starknet_types_core::felt::Felt; use std::str::FromStr; type StarkFelt = Felt; @@ -55,7 +69,7 @@ pub struct CallInfo { pub class_hash: [c_uchar; 32], pub entry_point_selector: [c_uchar; 32], pub calldata: *const *const c_uchar, - pub len_calldata: usize + pub len_calldata: usize, } #[repr(C)] @@ -97,7 +111,8 @@ pub extern "C" fn cairoVMCall( let mut calldata_vec: Vec = Vec::with_capacity(call_info.len_calldata); if call_info.len_calldata > 0 { - let calldata_slice = unsafe { slice::from_raw_parts(call_info.calldata, call_info.len_calldata) }; + let calldata_slice = + unsafe { slice::from_raw_parts(call_info.calldata, call_info.len_calldata) }; for ptr in calldata_slice { let data = ptr_to_felt(ptr.cast()); calldata_vec.push(data); @@ -121,7 +136,13 @@ pub extern "C" fn cairoVMCall( let mut resources = ExecutionResources::default(); let context = EntryPointExecutionContext::new_invoke( Arc::new(TransactionContext { - block_context: build_block_context(&mut state, &block_info, chain_id_str, Some(max_steps), concurrency_mode), + block_context: build_block_context( + &mut state, + &block_info, + chain_id_str, + Some(max_steps), + concurrency_mode, + ), tx_info: TransactionInfo::Deprecated(DeprecatedTransactionInfo::default()), }), false, @@ -198,7 +219,13 @@ pub extern "C" fn cairoVMExecute( let txns_and_query_bits = txns_and_query_bits.unwrap(); let mut classes = classes.unwrap(); let concurrency_mode = concurrency_mode == 1; - let block_context: BlockContext = build_block_context(&mut state, &block_info, chain_id_str, None, concurrency_mode); + let block_context: BlockContext = build_block_context( + &mut state, + &block_info, + chain_id_str, + None, + concurrency_mode, + ); let charge_fee = skip_charge_fee == 0; let validate = skip_validate == 0; @@ -263,19 +290,19 @@ pub extern "C" fn cairoVMExecute( Err(error) => { let err_string = match &error { ContractConstructorExecutionFailed(e) => format!("{error} {e}"), - ExecutionError {error: e, ..} - | ValidateTransactionError {error: e, ..} => format!("{error} {e}"), - other => other.to_string() + ExecutionError { error: e, .. } | ValidateTransactionError { error: e, .. } => { + format!("{error} {e}") + } + other => other.to_string(), }; report_error( reader_handle, format!( "failed txn {} reason: {}", - txn_and_query_bit.txn_hash, - err_string, + txn_and_query_bit.txn_hash, err_string, ) .as_str(), - txn_index as i64 + txn_index as i64, ); return; } @@ -283,20 +310,19 @@ pub extern "C" fn cairoVMExecute( if t.is_reverted() && err_on_revert != 0 { report_error( reader_handle, - format!("reverted: {}", t.revert_error.unwrap()) - .as_str(), - txn_index as i64 + format!("reverted: {}", t.revert_error.unwrap()).as_str(), + txn_index as i64, ); return; } // we are estimating fee, override actual fee calculation - if t.actual_fee.0 == 0 { - t.actual_fee = calculate_tx_fee(&t.actual_resources, &block_context, &fee_type).unwrap(); + if t.transaction_receipt.fee.0 == 0 { + // t.transaction_receipt.fee = calculate_tx_fee(t.transaction_receipt.resources, &block_context, &fee_type).unwrap(); } - let actual_fee = t.actual_fee.0.into(); - let data_gas_consumed = t.da_gas.l1_data_gas.into(); + let actual_fee = t.transaction_receipt.fee.0.into(); + let data_gas_consumed = t.transaction_receipt.da_gas.l1_data_gas.into(); let trace = jsonrpc::new_transaction_trace(&txn_and_query_bit.txn, t, &mut txn_state); @@ -308,14 +334,17 @@ pub extern "C" fn cairoVMExecute( trace.err().unwrap() ) .as_str(), - txn_index as i64 + txn_index as i64, ); return; } unsafe { JunoAppendActualFee(reader_handle, felt_to_byte_array(&actual_fee).as_ptr()); - JunoAppendDataGasConsumed(reader_handle, felt_to_byte_array(&data_gas_consumed).as_ptr()); + JunoAppendDataGasConsumed( + reader_handle, + felt_to_byte_array(&data_gas_consumed).as_ptr(), + ); } append_trace(reader_handle, trace.as_ref().unwrap(), &mut trace_buffer); } @@ -391,7 +420,7 @@ fn build_block_context( max_steps: Option, concurrency_mode: bool, ) -> BlockContext { - let sequencer_addr = StarkFelt::from_bytes_be(&block_info.sequencer_address); + let sequencer_addr = StarkFelt::from_bytes_be(&block_info.sequencer_address); let gas_price_wei_felt = StarkFelt::from_bytes_be(&block_info.gas_price_wei); let gas_price_fri_felt = StarkFelt::from_bytes_be(&block_info.gas_price_fri); let data_gas_price_wei_felt = StarkFelt::from_bytes_be(&block_info.data_gas_price_wei); @@ -399,10 +428,13 @@ fn build_block_context( let default_gas_price = NonZeroU128::new(1).unwrap(); let mut old_block_number_and_hash: Option = None; - if block_info.block_number >= 10 { - old_block_number_and_hash = Some(BlockNumberHashPair{ - number: starknet_api::block::BlockNumber(block_info.block_number - 10), - hash: BlockHash(StarkFelt::from_bytes_be(&block_info.block_hash_to_be_revealed)), + // STORED_BLOCK_HASH_BUFFER const is 10 for now + if block_info.block_number >= STORED_BLOCK_HASH_BUFFER { + old_block_number_and_hash = Some(BlockNumberHashPair { + number: starknet_api::block::BlockNumber(block_info.block_number - STORED_BLOCK_HASH_BUFFER), + hash: BlockHash(StarkFelt::from_bytes_be( + &block_info.block_hash_to_be_revealed, + )), }) } let mut constants = get_versioned_constants(block_info.version); @@ -410,36 +442,62 @@ fn build_block_context( constants.invoke_tx_max_n_steps = max_steps as u32; } - pre_process_block(state, old_block_number_and_hash, BlockifierBlockInfo{ + let block_info = BlockifierBlockInfo { block_number: starknet_api::block::BlockNumber(block_info.block_number), block_timestamp: starknet_api::block::BlockTimestamp(block_info.block_timestamp), sequencer_address: ContractAddress(PatriciaKey::try_from(sequencer_addr).unwrap()), gas_prices: GasPrices { - eth_l1_gas_price: NonZeroU128::new(felt_to_u128(gas_price_wei_felt)).unwrap_or(default_gas_price), - strk_l1_gas_price: NonZeroU128::new(felt_to_u128(gas_price_fri_felt)).unwrap_or(default_gas_price), - eth_l1_data_gas_price: NonZeroU128::new(felt_to_u128(data_gas_price_wei_felt)).unwrap_or(default_gas_price), - strk_l1_data_gas_price: NonZeroU128::new(felt_to_u128(data_gas_price_fri_felt)).unwrap_or(default_gas_price), + eth_l1_gas_price: NonZeroU128::new(felt_to_u128(gas_price_wei_felt)) + .unwrap_or(default_gas_price), + strk_l1_gas_price: NonZeroU128::new(felt_to_u128(gas_price_fri_felt)) + .unwrap_or(default_gas_price), + eth_l1_data_gas_price: NonZeroU128::new(felt_to_u128(data_gas_price_wei_felt)) + .unwrap_or(default_gas_price), + strk_l1_data_gas_price: NonZeroU128::new(felt_to_u128(data_gas_price_fri_felt)) + .unwrap_or(default_gas_price), }, use_kzg_da: block_info.use_blob_data == 1, - }, ChainInfo{ + }; + let chain_info = ChainInfo { chain_id: ChainId::from(chain_id_str.to_string()), fee_token_addresses: FeeTokenAddresses { // both addresses are the same for all networks - eth_fee_token_address: ContractAddress::try_from(StarkHash::from_hex("0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7").unwrap()).unwrap(), - strk_fee_token_address: ContractAddress::try_from(StarkHash::from_hex("0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d").unwrap()).unwrap(), + eth_fee_token_address: ContractAddress::try_from( + StarkHash::from_hex( + "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + ) + .unwrap(), + ) + .unwrap(), + strk_fee_token_address: ContractAddress::try_from( + StarkHash::from_hex( + "0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d", + ) + .unwrap(), + ) + .unwrap(), }, - }, constants, concurrency_mode).unwrap() -} - - + }; + pre_process_block(state, old_block_number_and_hash, block_info.block_number.next().unwrap()).unwrap(); + BlockContext::new(block_info, chain_info, constants, BouncerConfig::max()) +} lazy_static! { static ref CONSTANTS: HashMap = { let mut m = HashMap::new(); - m.insert("0.13.0".to_string(), serde_json::from_slice(include_bytes!("../versioned_constants_13_0.json")).unwrap()); - m.insert("0.13.1".to_string(), serde_json::from_slice(include_bytes!("../versioned_constants_13_1.json")).unwrap()); - m.insert("0.13.1.1".to_string(), serde_json::from_slice(include_bytes!("../versioned_constants_13_1_1.json")).unwrap()); + m.insert( + "0.13.0".to_string(), + serde_json::from_slice(include_bytes!("../versioned_constants_13_0.json")).unwrap(), + ); + m.insert( + "0.13.1".to_string(), + serde_json::from_slice(include_bytes!("../versioned_constants_13_1.json")).unwrap(), + ); + m.insert( + "0.13.1.1".to_string(), + serde_json::from_slice(include_bytes!("../versioned_constants_13_1_1.json")).unwrap(), + ); m }; } @@ -447,9 +505,10 @@ lazy_static! { #[allow(static_mut_refs)] fn get_versioned_constants(version: *const c_char) -> VersionedConstants { let version_str = unsafe { CStr::from_ptr(version) }.to_str().unwrap(); - let version = StarknetVersion::from_str(&version_str).unwrap_or(StarknetVersion::from_str(&"0.0.0").unwrap()); + let version = StarknetVersion::from_str(&version_str) + .unwrap_or(StarknetVersion::from_str(&"0.0.0").unwrap()); - if let Some(constants) = unsafe{ &CUSTOM_VERSIONED_CONSTANTS } { + if let Some(constants) = unsafe { &CUSTOM_VERSIONED_CONSTANTS } { constants.clone() } else if version < StarknetVersion::from_str(&"0.13.1").unwrap() { CONSTANTS.get(&"0.13.0".to_string()).unwrap().to_owned() @@ -460,7 +519,6 @@ fn get_versioned_constants(version: *const c_char) -> VersionedConstants { } } - #[derive(Default, PartialEq, Eq, PartialOrd, Ord)] pub struct StarknetVersion(u8, u8, u8, u8); @@ -501,14 +559,18 @@ pub extern "C" fn setVersionedConstants(json_bytes: *const c_char) -> *const c_c let json_str = unsafe { match CStr::from_ptr(json_bytes).to_str() { Ok(s) => s, - Err(_) => return CString::new("Failed to convert JSON bytes to string").unwrap().into_raw(), + Err(_) => { + return CString::new("Failed to convert JSON bytes to string") + .unwrap() + .into_raw() + } } }; match serde_json::from_str(json_str) { Ok(parsed) => unsafe { CUSTOM_VERSIONED_CONSTANTS = Some(parsed); - CString::new("").unwrap().into_raw() // No error, return an empty string + CString::new("").unwrap().into_raw() // No error, return an empty string }, Err(_) => CString::new("Failed to parse JSON").unwrap().into_raw(), } @@ -524,4 +586,4 @@ pub extern "C" fn freeString(s: *mut c_char) { drop(CString::from_raw(s)); } } -} \ No newline at end of file +} diff --git a/vm/rust/versioned_constants_13_0.json b/vm/rust/versioned_constants_13_0.json index d21317ef2b..1531f6fc13 100644 --- a/vm/rust/versioned_constants_13_0.json +++ b/vm/rust/versioned_constants_13_0.json @@ -137,6 +137,11 @@ "syscall_base_gas_cost": 1 }, "keccak_round_cost_gas_cost": 180000, + "sha256_process_block_gas_cost": { + "step_gas_cost": 0, + "range_check_gas_cost": 0, + "syscall_base_gas_cost": 0 + }, "error_block_number_out_of_range": "Block number out of range", "error_out_of_gas": "Out of gas", "error_invalid_input_len": "Invalid input length", @@ -333,6 +338,11 @@ "n_memory_holes": 0, "n_steps": 84 }, + "Sha256ProcessBlock": { + "builtin_instance_counter": {}, + "n_memory_holes": 0, + "n_steps": 0 + }, "StorageRead": { "builtin_instance_counter": {}, "n_memory_holes": 0, @@ -482,6 +492,10 @@ }, "validate_max_n_steps": 1000000, "vm_resource_fee_cost": { + "add_mod_builtin": [ + 0, + 1 + ], "bitwise_builtin": [ 32, 100 @@ -498,6 +512,10 @@ 1024, 100 ], + "mul_mod_builtin": [ + 0, + 1 + ], "n_steps": [ 5, 1000 @@ -517,6 +535,10 @@ "range_check_builtin": [ 8, 100 + ], + "range_check96_builtin": [ + 0, + 1 ] } } diff --git a/vm/rust/versioned_constants_13_1.json b/vm/rust/versioned_constants_13_1.json index db26ed01be..4e28f7b711 100644 --- a/vm/rust/versioned_constants_13_1.json +++ b/vm/rust/versioned_constants_13_1.json @@ -158,6 +158,11 @@ "syscall_base_gas_cost": 1 }, "keccak_round_cost_gas_cost": 180000, + "sha256_process_block_gas_cost": { + "step_gas_cost": 0, + "range_check_gas_cost": 0, + "syscall_base_gas_cost": 0 + }, "error_block_number_out_of_range": "Block number out of range", "error_out_of_gas": "Out of gas", "error_invalid_input_len": "Invalid input length", @@ -372,6 +377,11 @@ }, "n_memory_holes": 0 }, + "Sha256ProcessBlock": { + "builtin_instance_counter": {}, + "n_memory_holes": 0, + "n_steps": 0 + }, "StorageRead": { "n_steps": 87, "builtin_instance_counter": { @@ -537,6 +547,10 @@ }, "validate_max_n_steps": 1000000, "vm_resource_fee_cost": { + "add_mod_builtin": [ + 0, + 1 + ], "bitwise_builtin": [ 16, 100 @@ -553,6 +567,10 @@ 512, 100 ], + "mul_mod_builtin": [ + 0, + 1 + ], "n_steps": [ 25, 10000 @@ -572,6 +590,10 @@ "range_check_builtin": [ 4, 100 + ], + "range_check96_builtin": [ + 0, + 1 ] } } diff --git a/vm/rust/versioned_constants_13_1_1.json b/vm/rust/versioned_constants_13_1_1.json index 0087955c8a..791dac8b9b 100644 --- a/vm/rust/versioned_constants_13_1_1.json +++ b/vm/rust/versioned_constants_13_1_1.json @@ -158,6 +158,11 @@ "syscall_base_gas_cost": 1 }, "keccak_round_cost_gas_cost": 180000, + "sha256_process_block_gas_cost": { + "step_gas_cost": 0, + "range_check_gas_cost": 0, + "syscall_base_gas_cost": 0 + }, "error_block_number_out_of_range": "Block number out of range", "error_out_of_gas": "Out of gas", "error_invalid_input_len": "Invalid input length", @@ -372,6 +377,11 @@ }, "n_memory_holes": 0 }, + "Sha256ProcessBlock": { + "builtin_instance_counter": {}, + "n_memory_holes": 0, + "n_steps": 0 + }, "StorageRead": { "n_steps": 87, "builtin_instance_counter": { @@ -537,6 +547,10 @@ }, "validate_max_n_steps": 1000000, "vm_resource_fee_cost": { + "add_mod_builtin": [ + 0, + 1 + ], "bitwise_builtin": [ 16, 100 @@ -553,6 +567,10 @@ 512, 100 ], + "mul_mod_builtin": [ + 0, + 1 + ], "n_steps": [ 25, 10000 @@ -572,6 +590,10 @@ "range_check_builtin": [ 4, 100 + ], + "range_check96_builtin": [ + 0, + 1 ] } } From 34f07a83d3fe4ca8c683ab2359ec05d859c645b1 Mon Sep 17 00:00:00 2001 From: Kirill Date: Fri, 19 Jul 2024 14:16:12 +0300 Subject: [PATCH 10/28] Fix linter issues --- adapters/p2p2core/receipt.go | 4 ++++ adapters/vm2core/vm2core.go | 3 +++ core/block.go | 6 ++++-- vm/rust/Cargo.toml | 6 +++--- vm/trace.go | 4 ++++ 5 files changed, 18 insertions(+), 5 deletions(-) diff --git a/adapters/p2p2core/receipt.go b/adapters/p2p2core/receipt.go index d53f9e54b2..0f24fe2e03 100644 --- a/adapters/p2p2core/receipt.go +++ b/adapters/p2p2core/receipt.go @@ -52,6 +52,10 @@ func adaptExecutionResources(er *spec.Receipt_ExecutionResources) *core.Executio Keccak: uint64(er.GetBuiltins().GetKeccak()), Poseidon: uint64(er.GetBuiltins().GetPoseidon()), SegmentArena: 0, // todo(kirill) recheck + // todo(kirill) update spec for 0.13.2 + AddMod: 0, + MulMod: 0, + RangeCheck96: 0, }, DataAvailability: nil, // todo(kirill) recheck MemoryHoles: uint64(er.MemoryHoles), diff --git a/adapters/vm2core/vm2core.go b/adapters/vm2core/vm2core.go index 0c73889932..a673aec31e 100644 --- a/adapters/vm2core/vm2core.go +++ b/adapters/vm2core/vm2core.go @@ -22,6 +22,9 @@ func AdaptExecutionResources(resources *vm.ExecutionResources) *core.ExecutionRe Poseidon: resources.Poseidon, SegmentArena: resources.SegmentArena, Output: 0, // todo(kirill) recheck, add Output field to core? + AddMod: resources.AddMod, + MulMod: resources.MulMod, + RangeCheck96: resources.RangeCheck96, }, MemoryHoles: resources.MemoryHoles, Steps: resources.Steps, diff --git a/core/block.go b/core/block.go index eef2f3d5cb..d3dc63b1dc 100644 --- a/core/block.go +++ b/core/block.go @@ -4,12 +4,13 @@ import ( "encoding/binary" "errors" "fmt" + "slices" + "github.com/NethermindEth/juno/core/crypto" "github.com/NethermindEth/juno/core/felt" "github.com/NethermindEth/juno/utils" "github.com/bits-and-blooms/bloom/v3" "github.com/sourcegraph/conc" - "slices" ) type Header struct { @@ -167,6 +168,7 @@ func pre07Hash(b *Block, chain *felt.Felt) (*felt.Felt, *BlockCommitments, error ), &BlockCommitments{TransactionCommitment: txCommitment}, nil } +//nolint:unused func newBlockHash(b *Block) (*felt.Felt, error) { seqAddr := b.SequencerAddress // todo override support? @@ -281,7 +283,7 @@ func ConcatCounts(txCount, eventCount, stateDiffLen uint64, l1Mode L1DAMode) *fe binary.BigEndian.PutUint64(eventCountBytes[:], eventCount) binary.BigEndian.PutUint64(stateDiffLenBytes[:], stateDiffLen) - zeroPadding := make([]byte, 7) + zeroPadding := make([]byte, 7) //nolint:mnd concatBytes := slices.Concat( txCountBytes[:], diff --git a/vm/rust/Cargo.toml b/vm/rust/Cargo.toml index 10d9ddbfaf..9afdd66b44 100644 --- a/vm/rust/Cargo.toml +++ b/vm/rust/Cargo.toml @@ -8,10 +8,10 @@ edition = "2021" [dependencies] serde = "1.0.171" serde_json = { version = "1.0.96", features = ["raw_value"] } -blockifier = "=0.8.0-rc.0" +blockifier = "=0.8.0-dev.0" starknet_api = "=0.13.0-rc.0" -starknet-types-core = { version = "0.1.5", features = ["hash"] } -cairo-vm = "=1.0.0-rc5" +starknet-types-core = { version = "0.1.2", features = ["hash"] } +cairo-vm = "=1.0.0-rc4" indexmap = "2.1.0" cached = "0.46.1" once_cell = "1.18.0" diff --git a/vm/trace.go b/vm/trace.go index bd284767b3..43b8f48c02 100644 --- a/vm/trace.go +++ b/vm/trace.go @@ -232,6 +232,10 @@ type ComputationResources struct { Keccak uint64 `json:"keccak_builtin_applications,omitempty"` Poseidon uint64 `json:"poseidon_builtin_applications,omitempty"` SegmentArena uint64 `json:"segment_arena_builtin,omitempty"` + // todo(kirill) check that these fields exist in VM + AddMod uint64 `json:"add_mod_builtin,omitempty"` + MulMod uint64 `json:"mul_mod_builtin,omitempty"` + RangeCheck96 uint64 `json:"range_check_96_builtin,omitempty"` } type DataAvailability struct { From a629a3bfcf8286bb24cad7b4f2d365929218b05c Mon Sep 17 00:00:00 2001 From: Kirill Date: Fri, 19 Jul 2024 14:35:39 +0300 Subject: [PATCH 11/28] Update cargo dependencies --- vm/rust/Cargo.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vm/rust/Cargo.toml b/vm/rust/Cargo.toml index 9afdd66b44..fc79bc297f 100644 --- a/vm/rust/Cargo.toml +++ b/vm/rust/Cargo.toml @@ -8,10 +8,10 @@ edition = "2021" [dependencies] serde = "1.0.171" serde_json = { version = "1.0.96", features = ["raw_value"] } -blockifier = "=0.8.0-dev.0" +blockifier = "=0.8.0-rc.1" starknet_api = "=0.13.0-rc.0" -starknet-types-core = { version = "0.1.2", features = ["hash"] } -cairo-vm = "=1.0.0-rc4" +cairo-vm = "=1.0.0-rc5" +starknet-types-core = { version = "0.1.5", features = ["hash", "prime-bigint"] } indexmap = "2.1.0" cached = "0.46.1" once_cell = "1.18.0" From 521bbfd10db6c273cb1a41106428f02eb445b6d9 Mon Sep 17 00:00:00 2001 From: Kirill Date: Tue, 23 Jul 2024 16:27:09 +0300 Subject: [PATCH 12/28] Implement receipt Hash() --- adapters/sn2core/sn2core.go | 12 ++++ core/block.go | 23 +++++--- core/receipt.go | 93 +++++++++++++++++++++++++++++ core/receipt_pkg_test.go | 114 ++++++++++++++++++++++++++++++++++++ core/transaction.go | 12 ---- starknet/transaction.go | 4 +- 6 files changed, 236 insertions(+), 22 deletions(-) create mode 100644 core/receipt.go create mode 100644 core/receipt_pkg_test.go diff --git a/adapters/sn2core/sn2core.go b/adapters/sn2core/sn2core.go index 326a643a3b..7fe56c91fb 100644 --- a/adapters/sn2core/sn2core.go +++ b/adapters/sn2core/sn2core.go @@ -76,6 +76,18 @@ func AdaptTransactionReceipt(response *starknet.TransactionReceipt) *core.Transa L2ToL1Message: utils.Map(utils.NonNilSlice(response.L2ToL1Message), AdaptL2ToL1Message), Reverted: response.ExecutionStatus == starknet.Reverted, RevertReason: response.RevertError, + TotalGasConsumed: adaptGasConsumed(response.TotalGasConsumed), + } +} + +func adaptGasConsumed(response *starknet.GasConsumed) *core.GasConsumed { + if response == nil { + return nil + } + + return &core.GasConsumed{ + L1Gas: response.L1Gas, + L1DataGas: response.L1DataGas, } } diff --git a/core/block.go b/core/block.go index d3dc63b1dc..31d24b6a7c 100644 --- a/core/block.go +++ b/core/block.go @@ -67,6 +67,7 @@ type Block struct { type BlockCommitments struct { TransactionCommitment *felt.Felt EventCommitment *felt.Felt + ReceiptCommitment *felt.Felt } // VerifyBlockHash verifies the block hash. Due to bugs in Starknet alpha, not all blocks have @@ -174,8 +175,8 @@ func newBlockHash(b *Block) (*felt.Felt, error) { // todo override support? wg := conc.NewWaitGroup() - var txCommitment, eCommitment *felt.Felt - var tErr, eErr error + var txCommitment, eCommitment, rCommitment *felt.Felt + var tErr, eErr, rErr error wg.Go(func() { txCommitment, tErr = transactionCommitment(b.Transactions, b.Header.ProtocolVersion) @@ -183,6 +184,9 @@ func newBlockHash(b *Block) (*felt.Felt, error) { wg.Go(func() { eCommitment, eErr = eventCommitment(b.Receipts) }) + wg.Go(func() { + rCommitment, rErr = receiptCommitment(b.Receipts) + }) wg.Wait() if tErr != nil { @@ -191,6 +195,9 @@ func newBlockHash(b *Block) (*felt.Felt, error) { if eErr != nil { return nil, eErr } + if rErr != nil { + return nil, rErr + } // todo pass correct stateDiffLen concatCounts := ConcatCounts(b.TransactionCount, b.EventCount, 0, b.L1DAMode) @@ -202,12 +209,12 @@ func newBlockHash(b *Block) (*felt.Felt, error) { seqAddr, // sequencer address new(felt.Felt).SetUint64(b.Timestamp), // block timestamp concatCounts, - &felt.Zero, // todo state_diff_hash - txCommitment, // transaction commitment - eCommitment, // event commitment - &felt.Zero, // todo receipt_commitment - &felt.Zero, // todo gas_price_wei - &felt.Zero, // todo gas_price_fri + &felt.Zero, // todo state_diff_hash + txCommitment, // transaction commitment + eCommitment, // event commitment + rCommitment, // receipt commitment + b.GasPrice, // gas price in wei + b.GasPriceSTRK, // gas price in fri b.L1DataGasPrice.PriceInWei, b.L1DataGasPrice.PriceInFri, new(felt.Felt).SetBytes([]byte(b.ProtocolVersion)), diff --git a/core/receipt.go b/core/receipt.go new file mode 100644 index 0000000000..544373da30 --- /dev/null +++ b/core/receipt.go @@ -0,0 +1,93 @@ +package core + +import ( + "github.com/NethermindEth/juno/core/crypto" + "github.com/NethermindEth/juno/core/felt" + "github.com/NethermindEth/juno/core/trie" +) + +type GasConsumed struct { + L1Gas uint64 + L1DataGas uint64 +} + +type TransactionReceipt struct { + Fee *felt.Felt + FeeUnit FeeUnit + Events []*Event + ExecutionResources *ExecutionResources + L1ToL2Message *L1ToL2Message + L2ToL1Message []*L2ToL1Message + TransactionHash *felt.Felt + Reverted bool + RevertReason string + TotalGasConsumed *GasConsumed +} + +func (r *TransactionReceipt) Hash() (*felt.Felt, error) { + revertReasonHash := &felt.Zero + if r.Reverted { + // todo remove error because it's unneccessary + var err error + revertReasonHash, err = crypto.StarknetKeccak([]byte(r.RevertReason)) + if err != nil { + return nil, err + } + } + + var totalGasConsumed GasConsumed + // pre 0.13.2 this property is not set, in this case we use zero values in totalGasConsumed + if r.TotalGasConsumed != nil { + totalGasConsumed = *r.TotalGasConsumed + } + + return crypto.PoseidonArray( + r.TransactionHash, + r.Fee, + messagesSentHash(r.L2ToL1Message), + revertReasonHash, + &felt.Zero, // L2 gas consumed + new(felt.Felt).SetUint64(totalGasConsumed.L1Gas), + new(felt.Felt).SetUint64(totalGasConsumed.L1DataGas), + ), nil +} + +func messagesSentHash(messages []*L2ToL1Message) *felt.Felt { + chain := []*felt.Felt{ + new(felt.Felt).SetUint64(uint64(len(messages))), + } + for _, msg := range messages { + msgTo := new(felt.Felt).SetBytes(msg.To.Bytes()) + payloadSize := new(felt.Felt).SetUint64(uint64(len(msg.Payload))) + chain = append(chain, msg.From, msgTo, payloadSize) + chain = append(chain, msg.Payload...) + } + + return crypto.PoseidonArray(chain...) +} + +func receiptCommitment(receipts []*TransactionReceipt) (*felt.Felt, error) { + var commitment *felt.Felt + return commitment, trie.RunOnTempTrie(commitmentTrieHeight, func(trie *trie.Trie) error { + for i, receipt := range receipts { + hash, err := receipt.Hash() + if err != nil { + return err + } + + receiptTrieKey := new(felt.Felt).SetUint64(uint64(i)) + _, err = trie.Put(receiptTrieKey, hash) + if err != nil { + return err + } + } + + root, err := trie.Root() + if err != nil { + return err + } + commitment = root + + return nil + }) +} diff --git a/core/receipt_pkg_test.go b/core/receipt_pkg_test.go new file mode 100644 index 0000000000..b13afabbac --- /dev/null +++ b/core/receipt_pkg_test.go @@ -0,0 +1,114 @@ +package core + +import ( + "encoding/binary" + "fmt" + "github.com/NethermindEth/juno/core/crypto" + "github.com/NethermindEth/juno/core/felt" + "github.com/NethermindEth/juno/utils" + "github.com/ethereum/go-ethereum/common" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "testing" +) + +func TestReceiptHash(t *testing.T) { + t.Run("with gas_consumed", func(t *testing.T) { + receipt := &TransactionReceipt{ + Fee: new(felt.Felt).SetUint64(99804), + ExecutionResources: nil, + L2ToL1Message: []*L2ToL1Message{ + createL2ToL1Message(34), + createL2ToL1Message(56), + }, + TransactionHash: new(felt.Felt).SetUint64(1234), + Reverted: true, + RevertReason: "aborted", + TotalGasConsumed: &GasConsumed{ + L1Gas: 16580, + L1DataGas: 32, + }, + } + + hash, err := receipt.Hash() + require.NoError(t, err) + + expected := utils.HexToFelt(t, "0x6276abf21e7c68b2eecfdc8a845b11b44401901f5f040efe10c60d625049646") + assert.Equal(t, expected, hash) + }) + t.Run("gas_consumed is nil", func(t *testing.T) { + receipt := &TransactionReceipt{ + Fee: new(felt.Felt).SetUint64(99804), + ExecutionResources: nil, + L2ToL1Message: []*L2ToL1Message{ + createL2ToL1Message(34), + createL2ToL1Message(56), + }, + TransactionHash: new(felt.Felt).SetUint64(1234), + Reverted: true, + RevertReason: "aborted", + } + + hash, err := receipt.Hash() + require.NoError(t, err) + + expected := utils.HexToFelt(t, "0x37268b86bd55df0d9aa93dc3072c6785f06a272c35c30167662b0248f69dbce") + assert.Equal(t, expected, hash) + }) +} + +func TestReceiptCommitment(t *testing.T) { + receipt := &TransactionReceipt{ + Fee: new(felt.Felt).SetUint64(99804), + ExecutionResources: nil, + L2ToL1Message: []*L2ToL1Message{ + createL2ToL1Message(34), + createL2ToL1Message(56), + }, + TransactionHash: new(felt.Felt).SetUint64(1234), + Reverted: true, + RevertReason: "aborted", + TotalGasConsumed: &GasConsumed{ + L1Gas: 16580, + L1DataGas: 32, + }, + } + + hash, err := receipt.Hash() + require.NoError(t, err) + + expectedHash := utils.HexToFelt(t, "0x6276abf21e7c68b2eecfdc8a845b11b44401901f5f040efe10c60d625049646") + require.Equal(t, expectedHash, hash) + + root, err := receiptCommitment([]*TransactionReceipt{receipt}) + require.NoError(t, err) + + expectedRoot := utils.HexToFelt(t, "0x31963cb891ebb825e83514deb748c89b6967b5368cbc48a9b56193a1464ca87") + fmt.Println("Hash is ", root.String(), crypto.PoseidonArray(root)) + assert.Equal(t, expectedRoot, root) +} + +func TestMessagesSentHash(t *testing.T) { + messages := []*L2ToL1Message{ + createL2ToL1Message(0), + createL2ToL1Message(1), + } + + hash := messagesSentHash(messages) + expected := utils.HexToFelt(t, "0x00c89474a9007dc060aed76caf8b30b927cfea1ebce2d134b943b8d7121004e4") + assert.Equal(t, expected, hash) +} + +func createL2ToL1Message(seed uint64) *L2ToL1Message { + addrBytes := make([]byte, 8) + binary.BigEndian.PutUint64(addrBytes, seed+1) + + return &L2ToL1Message{ + From: new(felt.Felt).SetUint64(seed), + To: common.BytesToAddress(addrBytes), + Payload: []*felt.Felt{ + new(felt.Felt).SetUint64(seed + 2), + new(felt.Felt).SetUint64(seed + 3), + }, + } +} diff --git a/core/transaction.go b/core/transaction.go index 932367a313..3074a6c8bb 100644 --- a/core/transaction.go +++ b/core/transaction.go @@ -122,18 +122,6 @@ type BuiltinInstanceCounter struct { RangeCheck96 uint64 } -type TransactionReceipt struct { - Fee *felt.Felt - FeeUnit FeeUnit - Events []*Event - ExecutionResources *ExecutionResources - L1ToL2Message *L1ToL2Message - L2ToL1Message []*L2ToL1Message - TransactionHash *felt.Felt - Reverted bool - RevertReason string -} - type Transaction interface { Hash() *felt.Felt Signature() []*felt.Felt diff --git a/starknet/transaction.go b/starknet/transaction.go index 8e18c0da53..579ef4c629 100644 --- a/starknet/transaction.go +++ b/starknet/transaction.go @@ -241,7 +241,7 @@ type BuiltinInstanceCounter struct { RangeCheck96 uint64 `json:"range_check96_builtin"` } -type TotalGasConsumed struct { +type GasConsumed struct { L1Gas uint64 `json:"l1_gas"` L1DataGas uint64 `json:"l1_data_gas"` } @@ -261,5 +261,5 @@ type TransactionReceipt struct { TransactionHash *felt.Felt `json:"transaction_hash"` TransactionIndex uint64 `json:"transaction_index"` RevertError string `json:"revert_error"` - TotalGasConsumed *TotalGasConsumed `json:"total_gas_consumed"` + TotalGasConsumed *GasConsumed `json:"total_gas_consumed"` } From fb2aa5e8a1279b8257e3a195f1f70319c7b8b0f6 Mon Sep 17 00:00:00 2001 From: Kirill Date: Tue, 23 Jul 2024 19:57:10 +0300 Subject: [PATCH 13/28] Fix receipt commitment --- core/receipt.go | 3 ++- core/receipt_pkg_test.go | 3 --- core/trie/trie.go | 8 ++++++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/core/receipt.go b/core/receipt.go index 544373da30..25ef04e531 100644 --- a/core/receipt.go +++ b/core/receipt.go @@ -68,7 +68,8 @@ func messagesSentHash(messages []*L2ToL1Message) *felt.Felt { func receiptCommitment(receipts []*TransactionReceipt) (*felt.Felt, error) { var commitment *felt.Felt - return commitment, trie.RunOnTempTrie(commitmentTrieHeight, func(trie *trie.Trie) error { + + return commitment, trie.RunOnTempTriePoseidon(commitmentTrieHeight, func(trie *trie.Trie) error { for i, receipt := range receipts { hash, err := receipt.Hash() if err != nil { diff --git a/core/receipt_pkg_test.go b/core/receipt_pkg_test.go index b13afabbac..6e856ab56e 100644 --- a/core/receipt_pkg_test.go +++ b/core/receipt_pkg_test.go @@ -2,8 +2,6 @@ package core import ( "encoding/binary" - "fmt" - "github.com/NethermindEth/juno/core/crypto" "github.com/NethermindEth/juno/core/felt" "github.com/NethermindEth/juno/utils" "github.com/ethereum/go-ethereum/common" @@ -84,7 +82,6 @@ func TestReceiptCommitment(t *testing.T) { require.NoError(t, err) expectedRoot := utils.HexToFelt(t, "0x31963cb891ebb825e83514deb748c89b6967b5368cbc48a9b56193a1464ca87") - fmt.Println("Hash is ", root.String(), crypto.PoseidonArray(root)) assert.Equal(t, expectedRoot, root) } diff --git a/core/trie/trie.go b/core/trie/trie.go index c7baafb20a..260c3428c3 100644 --- a/core/trie/trie.go +++ b/core/trie/trie.go @@ -85,6 +85,14 @@ func RunOnTempTrie(height uint8, do func(*Trie) error) error { return do(trie) } +func RunOnTempTriePoseidon(height uint8, do func(*Trie) error) error { + trie, err := NewTriePoseidon(newMemStorage(), height) + if err != nil { + return err + } + return do(trie) +} + // feltToBitSet Converts a key, given in felt, to a trie.Key which when followed on a [Trie], // leads to the corresponding [Node] func (t *Trie) feltToKey(k *felt.Felt) Key { From 9d5c4e9b143da93b701e4d285cdedad68003826c Mon Sep 17 00:00:00 2001 From: Kirill Date: Mon, 29 Jul 2024 12:22:10 +0300 Subject: [PATCH 14/28] Fix linter issues --- adapters/p2p2core/receipt.go | 3 ++- cmd/juno/juno.go | 4 ---- core/receipt.go | 7 +------ core/receipt_pkg_test.go | 3 ++- node/node.go | 4 +--- vm/vm_test.go | 6 ------ 6 files changed, 6 insertions(+), 21 deletions(-) diff --git a/adapters/p2p2core/receipt.go b/adapters/p2p2core/receipt.go index 0f24fe2e03..3b30bc9cb4 100644 --- a/adapters/p2p2core/receipt.go +++ b/adapters/p2p2core/receipt.go @@ -34,6 +34,7 @@ func AdaptReceipt(r *spec.Receipt, txHash *felt.Felt) *core.TransactionReceipt { TransactionHash: txHash, Reverted: common.RevertReason != nil, // todo is it correct? RevertReason: common.GetRevertReason(), + TotalGasConsumed: nil, // todo(kirill) set field after spec update } } @@ -52,7 +53,7 @@ func adaptExecutionResources(er *spec.Receipt_ExecutionResources) *core.Executio Keccak: uint64(er.GetBuiltins().GetKeccak()), Poseidon: uint64(er.GetBuiltins().GetPoseidon()), SegmentArena: 0, // todo(kirill) recheck - // todo(kirill) update spec for 0.13.2 + // todo(kirill) set fields after spec update AddMod: 0, MulMod: 0, RangeCheck96: 0, diff --git a/cmd/juno/juno.go b/cmd/juno/juno.go index 7bc1fb8229..65ffa90c51 100644 --- a/cmd/juno/juno.go +++ b/cmd/juno/juno.go @@ -81,7 +81,6 @@ const ( callMaxStepsF = "rpc-call-max-steps" corsEnableF = "rpc-cors-enable" versionedConstantsFileF = "versioned-constants-file" - vmConcurrencyModeF = "vm-concurrency-mode" defaultConfig = "" defaulHost = "localhost" @@ -118,7 +117,6 @@ const ( defaultGwTimeout = 5 * time.Second defaultCorsEnable = false defaultVersionedConstantsFile = "" - defaultVMConcurrencyModeF = false configFlagUsage = "The YAML configuration file." logLevelFlagUsage = "Options: trace, debug, info, warn, error." @@ -169,7 +167,6 @@ const ( "The upper limit is 4 million steps, and any higher value will still be capped at 4 million." corsEnableUsage = "Enable CORS on RPC endpoints" versionedConstantsFileUsage = "Use custom versioned constants from provided file" - vmConcurrencyModeUsage = "Use concurrent execution in VM" ) var Version string @@ -353,7 +350,6 @@ func NewCmd(config *node.Config, run func(*cobra.Command, []string) error) *cobr junoCmd.Flags().Duration(gwTimeoutF, defaultGwTimeout, gwTimeoutUsage) junoCmd.Flags().Bool(corsEnableF, defaultCorsEnable, corsEnableUsage) junoCmd.Flags().String(versionedConstantsFileF, defaultVersionedConstantsFile, versionedConstantsFileUsage) - junoCmd.Flags().Bool(vmConcurrencyModeF, defaultVMConcurrencyModeF, vmConcurrencyModeUsage) junoCmd.MarkFlagsMutuallyExclusive(p2pFeederNodeF, p2pPeersF) junoCmd.AddCommand(GenP2PKeyPair()) diff --git a/core/receipt.go b/core/receipt.go index 25ef04e531..6b3e5e7c2b 100644 --- a/core/receipt.go +++ b/core/receipt.go @@ -27,12 +27,7 @@ type TransactionReceipt struct { func (r *TransactionReceipt) Hash() (*felt.Felt, error) { revertReasonHash := &felt.Zero if r.Reverted { - // todo remove error because it's unneccessary - var err error - revertReasonHash, err = crypto.StarknetKeccak([]byte(r.RevertReason)) - if err != nil { - return nil, err - } + revertReasonHash = crypto.StarknetKeccak([]byte(r.RevertReason)) } var totalGasConsumed GasConsumed diff --git a/core/receipt_pkg_test.go b/core/receipt_pkg_test.go index 6e856ab56e..e6aadae54b 100644 --- a/core/receipt_pkg_test.go +++ b/core/receipt_pkg_test.go @@ -2,12 +2,13 @@ package core import ( "encoding/binary" + "testing" + "github.com/NethermindEth/juno/core/felt" "github.com/NethermindEth/juno/utils" "github.com/ethereum/go-ethereum/common" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "testing" ) func TestReceiptHash(t *testing.T) { diff --git a/node/node.go b/node/node.go index 74030e25b3..592cffd743 100644 --- a/node/node.go +++ b/node/node.go @@ -86,8 +86,6 @@ type Config struct { GatewayAPIKey string `mapstructure:"gw-api-key"` GatewayTimeout time.Duration `mapstructure:"gw-timeout"` - - VMConcurrencyMode bool `mapstructure:"vm-concurrency-mode"` } type Node struct { @@ -174,7 +172,7 @@ func New(cfg *Config, version string) (*Node, error) { //nolint:gocyclo,funlen services = append(services, synchronizer) } - throttledVM := NewThrottledVM(vm.New(cfg.VMConcurrencyMode, log), cfg.MaxVMs, int32(cfg.MaxVMQueue)) + throttledVM := NewThrottledVM(vm.New(false, log), cfg.MaxVMs, int32(cfg.MaxVMQueue)) var syncReader sync.Reader = &sync.NoopSynchronizer{} if synchronizer != nil { diff --git a/vm/vm_test.go b/vm/vm_test.go index 63aebade47..63c830debb 100644 --- a/vm/vm_test.go +++ b/vm/vm_test.go @@ -18,8 +18,6 @@ import ( ) func TestV0Call(t *testing.T) { - t.Skip("todo fix") - testDB := pebble.NewMemTest(t) txn, err := testDB.NewTransaction(true) require.NoError(t, err) @@ -82,8 +80,6 @@ func TestV0Call(t *testing.T) { } func TestV1Call(t *testing.T) { - t.Skip("for now") - testDB := pebble.NewMemTest(t) txn, err := testDB.NewTransaction(true) require.NoError(t, err) @@ -154,8 +150,6 @@ func TestV1Call(t *testing.T) { } func TestCall_MaxSteps(t *testing.T) { - t.Skip() - testDB := pebble.NewMemTest(t) txn, err := testDB.NewTransaction(true) require.NoError(t, err) From 0a4d0f99248f6fb9bec21f0930e62d7db6c00b6a Mon Sep 17 00:00:00 2001 From: Kirill Date: Mon, 29 Jul 2024 14:32:25 +0300 Subject: [PATCH 15/28] Add new transaction commitment function --- core/block.go | 9 ++-- core/block_test.go | 89 ++++++++++++++++++++++++++++++++++++++++ core/transaction.go | 22 ++++++++++ core/transaction_test.go | 17 ++++++++ 4 files changed, 132 insertions(+), 5 deletions(-) diff --git a/core/block.go b/core/block.go index 31d24b6a7c..f1fb9ff941 100644 --- a/core/block.go +++ b/core/block.go @@ -170,7 +170,7 @@ func pre07Hash(b *Block, chain *felt.Felt) (*felt.Felt, *BlockCommitments, error } //nolint:unused -func newBlockHash(b *Block) (*felt.Felt, error) { +func Post0132Hash(b *Block, stateDiffLen uint64, stateDiffHash *felt.Felt) (*felt.Felt, error) { seqAddr := b.SequencerAddress // todo override support? @@ -179,7 +179,7 @@ func newBlockHash(b *Block) (*felt.Felt, error) { var tErr, eErr, rErr error wg.Go(func() { - txCommitment, tErr = transactionCommitment(b.Transactions, b.Header.ProtocolVersion) + txCommitment, tErr = TransactionCommitmentPoseidon(b.Transactions) }) wg.Go(func() { eCommitment, eErr = eventCommitment(b.Receipts) @@ -199,8 +199,7 @@ func newBlockHash(b *Block) (*felt.Felt, error) { return nil, rErr } - // todo pass correct stateDiffLen - concatCounts := ConcatCounts(b.TransactionCount, b.EventCount, 0, b.L1DAMode) + concatCounts := ConcatCounts(b.TransactionCount, b.EventCount, stateDiffLen, b.L1DAMode) return crypto.PoseidonArray( new(felt.Felt).SetBytes([]byte("STARKNET_BLOCK_HASH0")), @@ -209,7 +208,7 @@ func newBlockHash(b *Block) (*felt.Felt, error) { seqAddr, // sequencer address new(felt.Felt).SetUint64(b.Timestamp), // block timestamp concatCounts, - &felt.Zero, // todo state_diff_hash + stateDiffHash, txCommitment, // transaction commitment eCommitment, // event commitment rCommitment, // receipt commitment diff --git a/core/block_test.go b/core/block_test.go index 4f048ecc92..734e299eb0 100644 --- a/core/block_test.go +++ b/core/block_test.go @@ -2,7 +2,9 @@ package core_test import ( "context" + "encoding/binary" "fmt" + "github.com/ethereum/go-ethereum/common" "testing" "github.com/NethermindEth/juno/clients/feeder" @@ -244,6 +246,79 @@ func TestBlockHash(t *testing.T) { }) } +type txData struct { + hash *felt.Felt + version *core.TransactionVersion + signatures []*felt.Felt +} + +func (t txData) Hash() *felt.Felt { + return t.hash +} + +func (t txData) Signature() []*felt.Felt { + return t.signatures +} + +func (t txData) TxVersion() *core.TransactionVersion { + return t.version +} + +func TestPost0132Hash(t *testing.T) { + txHash := new(felt.Felt).SetUint64(1) + + block := &core.Block{ + Header: &core.Header{ + Number: 1, + GlobalStateRoot: new(felt.Felt).SetUint64(2), + SequencerAddress: new(felt.Felt).SetUint64(3), + Timestamp: 4, + L1DAMode: core.Blob, + ProtocolVersion: "10", + GasPrice: new(felt.Felt).SetUint64(7), + GasPriceSTRK: new(felt.Felt).SetUint64(6), + L1DataGasPrice: &core.GasPrice{ + PriceInFri: new(felt.Felt).SetUint64(10), + PriceInWei: new(felt.Felt).SetUint64(9), + }, + ParentHash: new(felt.Felt).SetUint64(11), + TransactionCount: 1, + EventCount: 0, + }, + Transactions: []core.Transaction{ + txData{ + hash: txHash, + signatures: []*felt.Felt{ + new(felt.Felt).SetUint64(2), + new(felt.Felt).SetUint64(3), + }, + }, + }, + Receipts: []*core.TransactionReceipt{ + { + Fee: new(felt.Felt).SetUint64(99804), + L2ToL1Message: []*core.L2ToL1Message{ + createL2ToL1Message(34), + createL2ToL1Message(56), + }, + TransactionHash: txHash, + Reverted: true, + RevertReason: "aborted", + TotalGasConsumed: &core.GasConsumed{ + L1Gas: 16580, + L1DataGas: 32, + }, + }, + }, + } + + h, err := core.Post0132Hash(block, 10, utils.HexToFelt(t, "0x281f5966e49ad7dad9323826d53d1d27c0c4e6ebe5525e2e2fbca549bfa0a67")) + require.NoError(t, err) + + expected := utils.HexToFelt(t, "0x061e4998d51a248f1d0288d7e17f6287757b0e5e6c5e1e58ddf740616e312134") + assert.Equal(t, expected, h) +} + func TestBlockHashP2P(t *testing.T) { mainnetGW := adaptfeeder.New(feeder.NewTestClient(t, &utils.Mainnet)) @@ -264,3 +339,17 @@ func TestConcatCounts(t *testing.T) { assert.Equal(t, expected, result) } + +func createL2ToL1Message(seed uint64) *core.L2ToL1Message { + addrBytes := make([]byte, 8) + binary.BigEndian.PutUint64(addrBytes, seed+1) + + return &core.L2ToL1Message{ + From: new(felt.Felt).SetUint64(seed), + To: common.BytesToAddress(addrBytes), + Payload: []*felt.Felt{ + new(felt.Felt).SetUint64(seed + 2), + new(felt.Felt).SetUint64(seed + 3), + }, + } +} diff --git a/core/transaction.go b/core/transaction.go index 3074a6c8bb..3094919b7c 100644 --- a/core/transaction.go +++ b/core/transaction.go @@ -664,6 +664,28 @@ func transactionCommitment(transactions []Transaction, protocolVersion string) ( }) } +func TransactionCommitmentPoseidon(transactions []Transaction) (*felt.Felt, error) { + var commitment *felt.Felt + return commitment, trie.RunOnTempTriePoseidon(commitmentTrieHeight, func(trie *trie.Trie) error { + for i, transaction := range transactions { + hashElems := []*felt.Felt{transaction.Hash()} + // todo handle empty signature + hashElems = append(hashElems, transaction.Signature()...) + hash := crypto.PoseidonArray(hashElems...) + + if _, err := trie.Put(new(felt.Felt).SetUint64(uint64(i)), hash); err != nil { + return err + } + } + root, err := trie.Root() + if err != nil { + return err + } + commitment = root + return nil + }) +} + // ParseBlockVersion computes the block version, defaulting to "0.0.0" for empty strings func ParseBlockVersion(protocolVersion string) (*semver.Version, error) { if protocolVersion == "" { diff --git a/core/transaction_test.go b/core/transaction_test.go index c58517ac53..b6e99da585 100644 --- a/core/transaction_test.go +++ b/core/transaction_test.go @@ -350,3 +350,20 @@ func TestDeclareV0TransactionHash(t *testing.T) { require.NoError(t, err) assert.Equal(t, expectedHash, got) } + +func TestTransactionCommitmentPoseidon(t *testing.T) { + data := txData{ + hash: new(felt.Felt).SetUint64(1), + signatures: []*felt.Felt{ + new(felt.Felt).SetUint64(2), + new(felt.Felt).SetUint64(3), + }, + } + transactions := []core.Transaction{data, data} + + h, err := core.TransactionCommitmentPoseidon(transactions) + require.NoError(t, err) + + expected := utils.HexToFelt(t, "0x0282b635972328bd1cfa86496fe920d20bd9440cd78ee8dc90ae2b383d664dcf") + assert.Equal(t, expected, h) +} From fbee124b2ed4a8f7b81287ff792fce6ea4aa5057 Mon Sep 17 00:00:00 2001 From: Kirill Date: Tue, 30 Jul 2024 00:55:47 +0300 Subject: [PATCH 16/28] Update hashing logic --- adapters/p2p2core/receipt.go | 2 +- adapters/sn2core/sn2core.go | 2 +- blockchain/blockchain.go | 5 +-- core/block.go | 65 ++++++++++++++++++++++-------------- core/block_test.go | 10 +++--- core/receipt.go | 7 ++-- core/transaction.go | 63 ++++++++++++++++++++++++++++++++++ migration/migration.go | 2 +- node/node.go | 7 +++- starknet/transaction.go | 2 +- 10 files changed, 124 insertions(+), 41 deletions(-) diff --git a/adapters/p2p2core/receipt.go b/adapters/p2p2core/receipt.go index 3b30bc9cb4..66c28a1499 100644 --- a/adapters/p2p2core/receipt.go +++ b/adapters/p2p2core/receipt.go @@ -34,7 +34,6 @@ func AdaptReceipt(r *spec.Receipt, txHash *felt.Felt) *core.TransactionReceipt { TransactionHash: txHash, Reverted: common.RevertReason != nil, // todo is it correct? RevertReason: common.GetRevertReason(), - TotalGasConsumed: nil, // todo(kirill) set field after spec update } } @@ -61,6 +60,7 @@ func adaptExecutionResources(er *spec.Receipt_ExecutionResources) *core.Executio DataAvailability: nil, // todo(kirill) recheck MemoryHoles: uint64(er.MemoryHoles), Steps: uint64(er.Steps), // todo SPEC 32 -> 64 bytes + TotalGasConsumed: nil, // todo(kirill) fill after spec update } } diff --git a/adapters/sn2core/sn2core.go b/adapters/sn2core/sn2core.go index 1e6aff95c8..ead1605a64 100644 --- a/adapters/sn2core/sn2core.go +++ b/adapters/sn2core/sn2core.go @@ -76,7 +76,6 @@ func AdaptTransactionReceipt(response *starknet.TransactionReceipt) *core.Transa L2ToL1Message: utils.Map(utils.NonNilSlice(response.L2ToL1Message), AdaptL2ToL1Message), Reverted: response.ExecutionStatus == starknet.Reverted, RevertReason: response.RevertError, - TotalGasConsumed: adaptGasConsumed(response.TotalGasConsumed), } } @@ -113,6 +112,7 @@ func AdaptExecutionResources(response *starknet.ExecutionResources) *core.Execut MemoryHoles: response.MemoryHoles, Steps: response.Steps, DataAvailability: (*core.DataAvailability)(response.DataAvailability), + TotalGasConsumed: adaptGasConsumed(response.TotalGasConsumed), } } diff --git a/blockchain/blockchain.go b/blockchain/blockchain.go index 36d622991c..0c49bf5113 100644 --- a/blockchain/blockchain.go +++ b/blockchain/blockchain.go @@ -51,7 +51,7 @@ type Reader interface { var ( ErrParentDoesNotMatchHead = errors.New("block's parent hash does not match head block hash") - supportedStarknetVersion = semver.MustParse("0.13.1") + supportedStarknetVersion = semver.MustParse("0.13.2") ) func checkBlockVersion(protocolVersion string) error { @@ -340,6 +340,7 @@ func (b *Blockchain) Store(block *core.Block, blockCommitments *core.BlockCommit if err := verifyBlock(txn, block); err != nil { return err } + return errors.New("temp error") if err := core.NewState(txn).Update(block.Number, stateUpdate, newClasses); err != nil { return err } @@ -636,7 +637,7 @@ func (b *Blockchain) SanityCheckNewHeight(block *core.Block, stateUpdate *core.S return nil, err } - return core.VerifyBlockHash(block, b.network) + return core.VerifyBlockHash(block, b.network, stateUpdate.StateDiff) } type txAndReceiptDBKey struct { diff --git a/core/block.go b/core/block.go index f1fb9ff941..76c93d4ec5 100644 --- a/core/block.go +++ b/core/block.go @@ -72,7 +72,7 @@ type BlockCommitments struct { // VerifyBlockHash verifies the block hash. Due to bugs in Starknet alpha, not all blocks have // verifiable hashes. -func VerifyBlockHash(b *Block, network *utils.Network) (*BlockCommitments, error) { +func VerifyBlockHash(b *Block, network *utils.Network, stateDiff *StateDiff) (*BlockCommitments, error) { if len(b.Transactions) != len(b.Receipts) { return nil, fmt.Errorf("len of transactions: %v do not match len of receipts: %v", len(b.Transactions), len(b.Receipts)) @@ -107,7 +107,17 @@ func VerifyBlockHash(b *Block, network *utils.Network) (*BlockCommitments, error overrideSeq = fallbackSeq } - hash, commitments, err := blockHash(b, network, overrideSeq) + var ( + hash *felt.Felt + commitments *BlockCommitments + err error + ) + + if b.ProtocolVersion == "0.13.2" { + hash, commitments, err = Post0132Hash(b, stateDiff.Length(), stateDiff.Commitment()) + } else { + hash, commitments, err = blockHash(b, network, overrideSeq) + } if err != nil { return nil, err } @@ -170,7 +180,7 @@ func pre07Hash(b *Block, chain *felt.Felt) (*felt.Felt, *BlockCommitments, error } //nolint:unused -func Post0132Hash(b *Block, stateDiffLen uint64, stateDiffHash *felt.Felt) (*felt.Felt, error) { +func Post0132Hash(b *Block, stateDiffLen uint64, stateDiffHash *felt.Felt) (*felt.Felt, *BlockCommitments, error) { seqAddr := b.SequencerAddress // todo override support? @@ -182,44 +192,49 @@ func Post0132Hash(b *Block, stateDiffLen uint64, stateDiffHash *felt.Felt) (*fel txCommitment, tErr = TransactionCommitmentPoseidon(b.Transactions) }) wg.Go(func() { - eCommitment, eErr = eventCommitment(b.Receipts) + eCommitment, eErr = eventCommitmentPoseidon(b.Receipts) }) wg.Go(func() { rCommitment, rErr = receiptCommitment(b.Receipts) }) wg.Wait() + fmt.Println("Commitments", txCommitment, eCommitment, rCommitment, stateDiffLen, stateDiffHash) + if tErr != nil { - return nil, tErr + return nil, nil, tErr } if eErr != nil { - return nil, eErr + return nil, nil, eErr } if rErr != nil { - return nil, rErr + return nil, nil, rErr } concatCounts := ConcatCounts(b.TransactionCount, b.EventCount, stateDiffLen, b.L1DAMode) return crypto.PoseidonArray( - new(felt.Felt).SetBytes([]byte("STARKNET_BLOCK_HASH0")), - new(felt.Felt).SetUint64(b.Number), // block number - b.GlobalStateRoot, // global state root - seqAddr, // sequencer address - new(felt.Felt).SetUint64(b.Timestamp), // block timestamp - concatCounts, - stateDiffHash, - txCommitment, // transaction commitment - eCommitment, // event commitment - rCommitment, // receipt commitment - b.GasPrice, // gas price in wei - b.GasPriceSTRK, // gas price in fri - b.L1DataGasPrice.PriceInWei, - b.L1DataGasPrice.PriceInFri, - new(felt.Felt).SetBytes([]byte(b.ProtocolVersion)), - &felt.Zero, // reserved: extra data - b.ParentHash, // parent block hash - ), nil + new(felt.Felt).SetBytes([]byte("STARKNET_BLOCK_HASH0")), + new(felt.Felt).SetUint64(b.Number), // block number + b.GlobalStateRoot, // global state root + seqAddr, // sequencer address + new(felt.Felt).SetUint64(b.Timestamp), // block timestamp + concatCounts, + stateDiffHash, + txCommitment, // transaction commitment + eCommitment, // event commitment + rCommitment, // receipt commitment + b.GasPrice, // gas price in wei + b.GasPriceSTRK, // gas price in fri + b.L1DataGasPrice.PriceInWei, + b.L1DataGasPrice.PriceInFri, + new(felt.Felt).SetBytes([]byte(b.ProtocolVersion)), + &felt.Zero, // reserved: extra data + b.ParentHash, // parent block hash + ), &BlockCommitments{ + TransactionCommitment: txCommitment, + EventCommitment: eCommitment, + }, nil } // post07Hash computes the block hash for blocks generated after Cairo 0.7.0 diff --git a/core/block_test.go b/core/block_test.go index 734e299eb0..29ae17981e 100644 --- a/core/block_test.go +++ b/core/block_test.go @@ -183,7 +183,7 @@ func TestBlockHash(t *testing.T) { block, err := gw.BlockByNumber(context.Background(), tc.number) require.NoError(t, err) - commitments, err := core.VerifyBlockHash(block, &tc.chain) + commitments, err := core.VerifyBlockHash(block, &tc.chain, nil) assert.NoError(t, err) assert.NotNil(t, commitments) }) @@ -201,7 +201,7 @@ func TestBlockHash(t *testing.T) { mainnetBlock1.Hash = h1 expectedErr := "can not verify hash in block header" - commitments, err := core.VerifyBlockHash(mainnetBlock1, &utils.Mainnet) + commitments, err := core.VerifyBlockHash(mainnetBlock1, &utils.Mainnet, nil) assert.EqualError(t, err, expectedErr) assert.Nil(t, commitments) }) @@ -212,7 +212,7 @@ func TestBlockHash(t *testing.T) { block119802, err := goerliGW.BlockByNumber(context.Background(), 119802) require.NoError(t, err) - commitments, err := core.VerifyBlockHash(block119802, &utils.Goerli) + commitments, err := core.VerifyBlockHash(block119802, &utils.Goerli, nil) assert.NoError(t, err) assert.NotNil(t, commitments) }) @@ -226,7 +226,7 @@ func TestBlockHash(t *testing.T) { expectedErr := fmt.Sprintf("len of transactions: %v do not match len of receipts: %v", len(mainnetBlock1.Transactions), len(mainnetBlock1.Receipts)) - commitments, err := core.VerifyBlockHash(mainnetBlock1, &utils.Mainnet) + commitments, err := core.VerifyBlockHash(mainnetBlock1, &utils.Mainnet, nil) assert.EqualError(t, err, expectedErr) assert.Nil(t, commitments) }) @@ -240,7 +240,7 @@ func TestBlockHash(t *testing.T) { "transaction hash (%v) at index: %v does not match receipt's hash (%v)", mainnetBlock1.Transactions[1].Hash().String(), 1, mainnetBlock1.Receipts[1].TransactionHash) - commitments, err := core.VerifyBlockHash(mainnetBlock1, &utils.Mainnet) + commitments, err := core.VerifyBlockHash(mainnetBlock1, &utils.Mainnet, nil) assert.EqualError(t, err, expectedErr) assert.Nil(t, commitments) }) diff --git a/core/receipt.go b/core/receipt.go index 6b3e5e7c2b..f137237b25 100644 --- a/core/receipt.go +++ b/core/receipt.go @@ -21,7 +21,6 @@ type TransactionReceipt struct { TransactionHash *felt.Felt Reverted bool RevertReason string - TotalGasConsumed *GasConsumed } func (r *TransactionReceipt) Hash() (*felt.Felt, error) { @@ -31,9 +30,9 @@ func (r *TransactionReceipt) Hash() (*felt.Felt, error) { } var totalGasConsumed GasConsumed - // pre 0.13.2 this property is not set, in this case we use zero values in totalGasConsumed - if r.TotalGasConsumed != nil { - totalGasConsumed = *r.TotalGasConsumed + // pre 0.13.2 TotalGasConsumed property is not set, in this case we rely on zero value above + if r.ExecutionResources != nil && r.ExecutionResources.TotalGasConsumed != nil { + totalGasConsumed = *r.ExecutionResources.TotalGasConsumed } return crypto.PoseidonArray( diff --git a/core/transaction.go b/core/transaction.go index 3094919b7c..d178de78f7 100644 --- a/core/transaction.go +++ b/core/transaction.go @@ -100,6 +100,7 @@ type ExecutionResources struct { MemoryHoles uint64 Steps uint64 DataAvailability *DataAvailability + TotalGasConsumed *GasConsumed } type DataAvailability struct { @@ -701,6 +702,68 @@ func ParseBlockVersion(protocolVersion string) (*semver.Version, error) { return semver.NewVersion(strings.Join(digits[:3], sep)) } +// eventCommitment computes the event commitment for a block. +func eventCommitmentPoseidon(receipts []*TransactionReceipt) (*felt.Felt, error) { + var commitment *felt.Felt + return commitment, trie.RunOnTempTriePoseidon(commitmentTrieHeight, func(trie *trie.Trie) error { + eventCount := uint64(0) + numWorkers := runtime.GOMAXPROCS(0) + receiptPerWorker := len(receipts) / numWorkers + if receiptPerWorker == 0 { + receiptPerWorker = 1 + } + workerPool := pool.New().WithErrors().WithMaxGoroutines(numWorkers) + var trieMutex sync.Mutex + + for receiptIdx := range receipts { + if receiptIdx%receiptPerWorker == 0 { + curReceiptIdx := receiptIdx + curEventIdx := eventCount + + workerPool.Go(func() error { + maxIndex := curReceiptIdx + receiptPerWorker + if maxIndex > len(receipts) { + maxIndex = len(receipts) + } + receiptsSliced := receipts[curReceiptIdx:maxIndex] + + for _, receipt := range receiptsSliced { + for _, event := range receipt.Events { + hashElems := []*felt.Felt{event.From, receipt.TransactionHash} + hashElems = append(hashElems, new(felt.Felt).SetUint64(uint64(len(event.Keys)))) + hashElems = append(hashElems, event.Keys...) + hashElems = append(hashElems, new(felt.Felt).SetUint64(uint64(len(event.Data)))) + hashElems = append(hashElems, event.Data...) + + eventHash := crypto.PoseidonArray(hashElems...) + + eventTrieKey := new(felt.Felt).SetUint64(curEventIdx) + trieMutex.Lock() + _, err := trie.Put(eventTrieKey, eventHash) + trieMutex.Unlock() + if err != nil { + return err + } + curEventIdx++ + } + } + return nil + }) + } + eventCount += uint64(len(receipts[receiptIdx].Events)) + } + if err := workerPool.Wait(); err != nil { + return err + } + root, err := trie.Root() + if err != nil { + return err + } + commitment = root + return nil + }) +} + // eventCommitment computes the event commitment for a block. func eventCommitment(receipts []*TransactionReceipt) (*felt.Felt, error) { var commitment *felt.Felt diff --git a/migration/migration.go b/migration/migration.go index 631cc5c5f6..3e39c1831f 100644 --- a/migration/migration.go +++ b/migration/migration.go @@ -450,7 +450,7 @@ func calculateBlockCommitments(txn db.Transaction, network *utils.Network) error } workerPool.Go(func() error { - commitments, err := core.VerifyBlockHash(block, network) + commitments, err := core.VerifyBlockHash(block, network, nil) if err != nil { return err } diff --git a/node/node.go b/node/node.go index 592cffd743..6a20829e89 100644 --- a/node/node.go +++ b/node/node.go @@ -131,8 +131,13 @@ func New(cfg *Config, version string) (*Node, error) { //nolint:gocyclo,funlen return nil, fmt.Errorf("get head block from database: %v", err) } if head != nil { + stateUpdate, err := chain.StateUpdateByNumber(head.Number) + if err != nil { + return nil, err + } + // We assume that there is at least one transaction in the block or that it is a pre-0.7 block. - if _, err = core.VerifyBlockHash(head, &cfg.Network); err != nil { + if _, err = core.VerifyBlockHash(head, &cfg.Network, stateUpdate.StateDiff); err != nil { return nil, errors.New("unable to verify latest block hash; are the database and --network option compatible?") } } diff --git a/starknet/transaction.go b/starknet/transaction.go index 579ef4c629..3898e95e5b 100644 --- a/starknet/transaction.go +++ b/starknet/transaction.go @@ -219,6 +219,7 @@ type ExecutionResources struct { BuiltinInstanceCounter BuiltinInstanceCounter `json:"builtin_instance_counter"` MemoryHoles uint64 `json:"n_memory_holes"` DataAvailability *DataAvailability `json:"data_availability"` + TotalGasConsumed *GasConsumed `json:"total_gas_consumed"` } type DataAvailability struct { @@ -261,5 +262,4 @@ type TransactionReceipt struct { TransactionHash *felt.Felt `json:"transaction_hash"` TransactionIndex uint64 `json:"transaction_index"` RevertError string `json:"revert_error"` - TotalGasConsumed *GasConsumed `json:"total_gas_consumed"` } From 7418da1b843baba03c4c3e76be65558715835af1 Mon Sep 17 00:00:00 2001 From: Kirill Date: Tue, 30 Jul 2024 01:14:41 +0300 Subject: [PATCH 17/28] Refactor code --- core/block.go | 15 +++++++++++---- core/state_update.go | 35 +++++++++++++++++++++++++++++++++++ node/node.go | 2 +- 3 files changed, 47 insertions(+), 5 deletions(-) diff --git a/core/block.go b/core/block.go index 76c93d4ec5..dcf200aebb 100644 --- a/core/block.go +++ b/core/block.go @@ -4,6 +4,7 @@ import ( "encoding/binary" "errors" "fmt" + "github.com/Masterminds/semver/v3" "slices" "github.com/NethermindEth/juno/core/crypto" @@ -101,6 +102,13 @@ func VerifyBlockHash(b *Block, network *utils.Network, stateDiff *StateDiff) (*B if metaInfo.FallBackSequencerAddress != nil { fallbackSeqAddresses = append(fallbackSeqAddresses, metaInfo.FallBackSequencerAddress) } + + blockVer, err := ParseBlockVersion(b.ProtocolVersion) + if err != nil { + return nil, err + } + v0_13_2 := semver.MustParse("0.13.2") + for _, fallbackSeq := range fallbackSeqAddresses { var overrideSeq *felt.Felt if b.SequencerAddress == nil { @@ -112,11 +120,10 @@ func VerifyBlockHash(b *Block, network *utils.Network, stateDiff *StateDiff) (*B commitments *BlockCommitments err error ) - - if b.ProtocolVersion == "0.13.2" { - hash, commitments, err = Post0132Hash(b, stateDiff.Length(), stateDiff.Commitment()) - } else { + if blockVer.LessThan(v0_13_2) { hash, commitments, err = blockHash(b, network, overrideSeq) + } else { + hash, commitments, err = Post0132Hash(b, stateDiff.Length(), stateDiff.Commitment()) } if err != nil { return nil, err diff --git a/core/state_update.go b/core/state_update.go index 8bb88f681e..13ab01e345 100644 --- a/core/state_update.go +++ b/core/state_update.go @@ -50,6 +50,41 @@ func (d *StateDiff) Length() uint64 { return uint64(length) } +func (d *StateDiff) Hash() *felt.Felt { + prefixHash, err := new(felt.Felt).SetString("STARKNET_STATE_DIFF0") + if err != nil { + // shouldn't happen + panic(err) + } + + hashElems := []*felt.Felt{prefixHash} + + // updated contracts + numOfUpdatedContracts := len(d.DeployedContracts) + len(d.ReplacedClasses) + hashElems = append(hashElems, new(felt.Felt).SetUint64(uint64(numOfUpdatedContracts))) + // todo sort + for addr, classHash := range d.DeployedContracts { + hashElems = append(hashElems, &addr, classHash) + } + // todo sort + for addr, classHash := range d.ReplacedClasses { + hashElems = append(hashElems, &addr, classHash) + } + + // declared classes + numOfDeclaredClasses := len(d.DeclaredV1Classes) + hashElems = append(hashElems, new(felt.Felt).SetUint64(uint64(numOfDeclaredClasses))) + for classHash, compiledClasshash := range d.DeclaredV1Classes { + hashElems = append(hashElems, &classHash, compiledClasshash) + } + + /*Poseidon( + "STARKNET_STATE_DIFF0", deployed_contracts, declared_classes, deprecated_declared_classes, + 1, 0, storage_diffs, nonces + )*/ + return crypto.PoseidonArray(hashElems...) +} + func (d *StateDiff) Commitment() *felt.Felt { version := felt.Zero var tmpFelt felt.Felt diff --git a/node/node.go b/node/node.go index 6a20829e89..590ce42968 100644 --- a/node/node.go +++ b/node/node.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "github.com/NethermindEth/juno/core" "net/url" "reflect" "runtime" @@ -13,7 +14,6 @@ import ( "github.com/NethermindEth/juno/blockchain" "github.com/NethermindEth/juno/clients/feeder" "github.com/NethermindEth/juno/clients/gateway" - "github.com/NethermindEth/juno/core" "github.com/NethermindEth/juno/db" "github.com/NethermindEth/juno/db/pebble" "github.com/NethermindEth/juno/db/remote" From a8ad8ead0385795b5aed4ab509e49203a1e6c3e9 Mon Sep 17 00:00:00 2001 From: IronGauntlets Date: Tue, 30 Jul 2024 04:25:02 +0100 Subject: [PATCH 18/28] Fix StateDiff.Hash() --- adapters/vm2core/vm2core.go | 2 +- blockchain/blockchain.go | 2 +- clients/feeder/feeder_test.go | 16 + .../sepolia-integration/block/35748.json | 134 ++ .../state_update/35748.json | 41 + .../state_update/35749.json | 93 + .../state_update/37500.json | 68 + .../state_update/38748.json | 1569 +++++++++++++++++ core/block.go | 5 +- core/block_test.go | 187 +- core/receipt_pkg_test.go | 26 +- core/state_update.go | 96 +- core/state_update_test.go | 33 + core/transaction_test.go | 32 +- node/node.go | 2 +- starknet/block.go | 3 + 16 files changed, 2161 insertions(+), 148 deletions(-) create mode 100644 clients/feeder/testdata/sepolia-integration/block/35748.json create mode 100644 clients/feeder/testdata/sepolia-integration/state_update/35748.json create mode 100644 clients/feeder/testdata/sepolia-integration/state_update/35749.json create mode 100644 clients/feeder/testdata/sepolia-integration/state_update/37500.json create mode 100644 clients/feeder/testdata/sepolia-integration/state_update/38748.json diff --git a/adapters/vm2core/vm2core.go b/adapters/vm2core/vm2core.go index a673aec31e..cedcb4597f 100644 --- a/adapters/vm2core/vm2core.go +++ b/adapters/vm2core/vm2core.go @@ -11,7 +11,7 @@ import ( ) func AdaptExecutionResources(resources *vm.ExecutionResources) *core.ExecutionResources { - return &core.ExecutionResources{ + return &core.ExecutionResources{ //nolint:exhaustruct BuiltinInstanceCounter: core.BuiltinInstanceCounter{ Pedersen: resources.Pedersen, RangeCheck: resources.RangeCheck, diff --git a/blockchain/blockchain.go b/blockchain/blockchain.go index 0c49bf5113..bb5594d5cd 100644 --- a/blockchain/blockchain.go +++ b/blockchain/blockchain.go @@ -341,7 +341,7 @@ func (b *Blockchain) Store(block *core.Block, blockCommitments *core.BlockCommit return err } return errors.New("temp error") - if err := core.NewState(txn).Update(block.Number, stateUpdate, newClasses); err != nil { + if err := core.NewState(txn).Update(block.Number, stateUpdate, newClasses); err != nil { //nolint:govet return err } if err := StoreBlockHeader(txn, block.Header); err != nil { diff --git a/clients/feeder/feeder_test.go b/clients/feeder/feeder_test.go index 8aa4fe94fa..5c92fa659b 100644 --- a/clients/feeder/feeder_test.go +++ b/clients/feeder/feeder_test.go @@ -334,6 +334,22 @@ func TestBlockHeaderV0131Unmarshal(t *testing.T) { require.Equal(t, uint64(128), block.Receipts[0].ExecutionResources.DataAvailability.L1DataGas) } +func TestBlockHeaderv0132Unmarshal(t *testing.T) { + client := feeder.NewTestClient(t, &utils.SepoliaIntegration) + block, err := client.Block(context.Background(), "35748") + require.NoError(t, err) + + // Only focus on checking the new fields + require.Equal(t, utils.HexToFelt(t, "0x1ea2a9cfa3df5297d58c0a04d09d276bc68d40fe64701305bbe2ed8f417e869"), block.Hash) + require.Equal(t, utils.HexToFelt(t, "0x77140bef51bbb4d1932f17cc5081825ff18465a1df4440ca0429a4fa80f1dc5"), block.ParentHash) + require.Equal(t, utils.HexToFelt(t, "0x6f12628d21a8df7f158b631d801fc0dd20034b9e22eca255bddc0c1c1bc283f"), block.ReceiptCommitment) + require.Equal(t, utils.HexToFelt(t, "0x23587c54d590b57b8e25acbf1e1a422eb4cd104e95ee4a681021a6bb7456afa"), block.StateDiffcommitment) + require.Equal(t, uint64(6), block.StateDiffLength) + require.Equal(t, "0.13.2", block.Version) + require.Equal(t, uint64(117620), block.Receipts[0].ExecutionResources.TotalGasConsumed.L1Gas) + require.Equal(t, uint64(192), block.Receipts[0].ExecutionResources.TotalGasConsumed.L1DataGas) +} + func TestClassV0Unmarshal(t *testing.T) { client := feeder.NewTestClient(t, &utils.Mainnet) diff --git a/clients/feeder/testdata/sepolia-integration/block/35748.json b/clients/feeder/testdata/sepolia-integration/block/35748.json new file mode 100644 index 0000000000..870aaf3836 --- /dev/null +++ b/clients/feeder/testdata/sepolia-integration/block/35748.json @@ -0,0 +1,134 @@ +{ + "block_hash": "0x1ea2a9cfa3df5297d58c0a04d09d276bc68d40fe64701305bbe2ed8f417e869", + "parent_block_hash": "0x77140bef51bbb4d1932f17cc5081825ff18465a1df4440ca0429a4fa80f1dc5", + "block_number": 35748, + "state_root": "0x38e01cbe2d5721780b2e1a478fd131f2ffcc099528dd2e1289f26b027127790", + "transaction_commitment": "0x54f43cf29b80cc83aef36f3195b73cb165ad12553eae147b4cce62adbf0b180", + "event_commitment": "0x12dfbe9dbbaba9c34b5a4c0ba622dcd8e2bb0264481c77f073008b59825a758", + "receipt_commitment": "0x6f12628d21a8df7f158b631d801fc0dd20034b9e22eca255bddc0c1c1bc283f", + "state_diff_commitment": "0x23587c54d590b57b8e25acbf1e1a422eb4cd104e95ee4a681021a6bb7456afa", + "state_diff_length": 6, + "status": "ACCEPTED_ON_L1", + "l1_da_mode": "BLOB", + "l1_gas_price": { + "price_in_wei": "0x7427e87c4", + "price_in_fri": "0x9346cee0949c" + }, + "l1_data_gas_price": { + "price_in_wei": "0x3b095dc6", + "price_in_fri": "0x4ada914d823" + }, + "transactions": [ + { + "transaction_hash": "0x5ac644bbd6ae98d3be2d988439854e33f0961e24f349a63b43e16d172bfe747", + "version": "0x2", + "max_fee": "0x4f6ac5195e92e4", + "signature": [ + "0x43ad3c7c77f7b7762db41ee9d33958813ee25efed77bc7199e08f4f40b1a59", + "0xfedb8715405faf28de29a07a3f3f06f078bac3fcb67ac7f5ae392e15a75921" + ], + "nonce": "0xd", + "class_hash": "0x2fd9e122406490dc0f299f3070eaaa8df854d97ff81b47e91da32b8cd9d757a", + "compiled_class_hash": "0x55d1e0ee31f8f937fc75b37045129fbe0e01747baacb44b89d2d3d2c649117e", + "sender_address": "0x472aa8128e01eb0df145810c9511a92852d62a68ba8198ce5fa414e6337a365", + "type": "DECLARE" + }, + { + "transaction_hash": "0x21bc0afe54123b946855e1bf9389d943313df5c5c396fbf0630234a44f6f592", + "version": "0x2", + "max_fee": "0xe6e9346a5ae75a", + "signature": [ + "0x12a928f7042a66c5419fc5182da6879c357f013335d8b61d0ad774009afbb40", + "0x63479f4343dc2f068bff99fbbf0027250a672999fb5675cee1f2d1a64d33844" + ], + "nonce": "0xe", + "class_hash": "0x19de7881922dbc95846b1bb9464dba34046c46470cfb5e18b4cb2892fd4111f", + "compiled_class_hash": "0x6506976af042088c9ea49e6cc9c9a12838ee6920bb989dce02f5c6467667367", + "sender_address": "0x472aa8128e01eb0df145810c9511a92852d62a68ba8198ce5fa414e6337a365", + "type": "DECLARE" + } + ], + "timestamp": 1720426817, + "sequencer_address": "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "transaction_receipts": [ + { + "execution_status": "SUCCEEDED", + "transaction_index": 0, + "transaction_hash": "0x5ac644bbd6ae98d3be2d988439854e33f0961e24f349a63b43e16d172bfe747", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x472aa8128e01eb0df145810c9511a92852d62a68ba8198ce5fa414e6337a365", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xd07af45c84550", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 3950, + "builtin_instance_counter": { + "pedersen_builtin": 16, + "range_check_builtin": 157, + "ecdsa_builtin": 1, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 117620, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xd07af45c84550" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 1, + "transaction_hash": "0x21bc0afe54123b946855e1bf9389d943313df5c5c396fbf0630234a44f6f592", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x472aa8128e01eb0df145810c9511a92852d62a68ba8198ce5fa414e6337a365", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0x471426f16c4330", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 3950, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "ecdsa_builtin": 1, + "range_check_builtin": 157, + "pedersen_builtin": 16 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 641644, + "l1_data_gas": 192 + } + }, + "actual_fee": "0x471426f16c4330" + } + ], + "starknet_version": "0.13.2" +} \ No newline at end of file diff --git a/clients/feeder/testdata/sepolia-integration/state_update/35748.json b/clients/feeder/testdata/sepolia-integration/state_update/35748.json new file mode 100644 index 0000000000..fd213bb604 --- /dev/null +++ b/clients/feeder/testdata/sepolia-integration/state_update/35748.json @@ -0,0 +1,41 @@ +{ + "block_hash": "0x1ea2a9cfa3df5297d58c0a04d09d276bc68d40fe64701305bbe2ed8f417e869", + "new_root": "0x38e01cbe2d5721780b2e1a478fd131f2ffcc099528dd2e1289f26b027127790", + "old_root": "0xb120f982c77eab1b25f29349fb1458f32157887c64feb91e51e7f4cad62721", + "state_diff": { + "storage_diffs": { + "0x1": [ + { + "key": "0x8b9a", + "value": "0x6ae6fe45c608e642524de25140f19a44d40dc26286e38d3f184c7fb2fd21767" + } + ], + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7": [ + { + "key": "0x84a17db3276b7f8c33d3cdae9067d3db20b6a24b5c29fd185df2f7f42c0713", + "value": "0x90d0c5a3d34c3e73" + }, + { + "key": "0x5496768776e3db30053404f18067d81a6e06f5a2b0de326e21298fd9d569a9a", + "value": "0x55620cf9acab16e56" + } + ] + }, + "nonces": { + "0x472aa8128e01eb0df145810c9511a92852d62a68ba8198ce5fa414e6337a365": "0xf" + }, + "deployed_contracts": [], + "old_declared_contracts": [], + "declared_classes": [ + { + "class_hash": "0x19de7881922dbc95846b1bb9464dba34046c46470cfb5e18b4cb2892fd4111f", + "compiled_class_hash": "0x6506976af042088c9ea49e6cc9c9a12838ee6920bb989dce02f5c6467667367" + }, + { + "class_hash": "0x2fd9e122406490dc0f299f3070eaaa8df854d97ff81b47e91da32b8cd9d757a", + "compiled_class_hash": "0x55d1e0ee31f8f937fc75b37045129fbe0e01747baacb44b89d2d3d2c649117e" + } + ], + "replaced_classes": [] + } +} \ No newline at end of file diff --git a/clients/feeder/testdata/sepolia-integration/state_update/35749.json b/clients/feeder/testdata/sepolia-integration/state_update/35749.json new file mode 100644 index 0000000000..bf23816c05 --- /dev/null +++ b/clients/feeder/testdata/sepolia-integration/state_update/35749.json @@ -0,0 +1,93 @@ +{ + "block_hash": "0x23b37df7360bc6c434d32a6a4f46f1705efb4fdf7142bfd66929f5b40035a6", + "new_root": "0x8638b46e7b92719ae718dc352c793d1df15c55956be999a539e9a27c260337", + "old_root": "0x38e01cbe2d5721780b2e1a478fd131f2ffcc099528dd2e1289f26b027127790", + "state_diff": { + "storage_diffs": { + "0x65cdd7892656f7f89887c2c84bb3cea8f8c1b472a4f61838496c1fc7cc8733b": [ + { + "key": "0x23bf06fbbf6634459b7cd052e704bcf80f07e85cbdede138ce8e1e3aace24ac", + "value": "0x4617cc24c69548663a20ccd75a98355fab6a7c70b13cb427194943e34298ba6" + }, + { + "key": "0x3b28019ccfdbd30ffc65951d94bb85c9e2b8434111a000b5afd533ce65f57a4", + "value": "0x7075626c69635f6b6579" + } + ], + "0x4718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d": [ + { + "key": "0x110e2f729c9c2b988559994a3daccd838cf52faf88e18101373e67dd061455a", + "value": "0x403702d55d9d63cf0000" + }, + { + "key": "0x1b5af78b6c417eca272a1b502eabe32e63f5f3c8d738ba6b995027beaeb217c", + "value": "0x668ba2f8000000000000000000000000003ff41da4afa083c70000" + }, + { + "key": "0x38c10662a48073f77efadb4820d93ad877d4de93741e9165b24bc8877d93b78", + "value": "0x10" + }, + { + "key": "0x391a2fd317962118227a3ef0f473318220a4e94843d9c9be5a7b8c608c89cfe", + "value": "0x10f0ca1aa84ce252345" + }, + { + "key": "0x5496768776e3db30053404f18067d81a6e06f5a2b0de326e21298fd9d569a9a", + "value": "0x9b6770b5e60ea7ac46a" + } + ], + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7": [ + { + "key": "0x110e2f729c9c2b988559994a3daccd838cf52faf88e18101373e67dd061455a", + "value": "0x1b8ef773d001192ee4" + }, + { + "key": "0x391a2fd317962118227a3ef0f473318220a4e94843d9c9be5a7b8c608c89cfe", + "value": "0x29a222e3ca29723c" + }, + { + "key": "0x5496768776e3db30053404f18067d81a6e06f5a2b0de326e21298fd9d569a9a", + "value": "0x55620d0d1f6b3fc1a" + } + ], + "0x1": [ + { + "key": "0x8b9b", + "value": "0xb4ede87d129aee5d94af6e3bcc09bdf73b76ee1138ca98565069efe6353443" + } + ], + "0x5e4cecd764121b8547d6e0ebec94618edc0933f97918af264d4d7064e70dc36": [ + { + "key": "0x3b28019ccfdbd30ffc65951d94bb85c9e2b8434111a000b5afd533ce65f57a4", + "value": "0x7075626c69635f6b6579" + } + ], + "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a": [ + { + "key": "0x3b28019ccfdbd30ffc65951d94bb85c9e2b8434111a000b5afd533ce65f57a4", + "value": "0x406a640b3b70dad390d661c088df1fbaeb5162a07d57cf29ba794e2b0e3c804" + } + ] + }, + "nonces": { + "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a": "0x5" + }, + "deployed_contracts": [ + { + "address": "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "class_hash": "0x2fd9e122406490dc0f299f3070eaaa8df854d97ff81b47e91da32b8cd9d757a" + }, + { + "address": "0x5e4cecd764121b8547d6e0ebec94618edc0933f97918af264d4d7064e70dc36", + "class_hash": "0x19de7881922dbc95846b1bb9464dba34046c46470cfb5e18b4cb2892fd4111f" + }, + { + "address": "0x65cdd7892656f7f89887c2c84bb3cea8f8c1b472a4f61838496c1fc7cc8733b", + "class_hash": "0x19de7881922dbc95846b1bb9464dba34046c46470cfb5e18b4cb2892fd4111f" + } + ], + "old_declared_contracts": [], + "declared_classes": [], + "replaced_classes": [] + } +} \ No newline at end of file diff --git a/clients/feeder/testdata/sepolia-integration/state_update/37500.json b/clients/feeder/testdata/sepolia-integration/state_update/37500.json new file mode 100644 index 0000000000..246a7907b6 --- /dev/null +++ b/clients/feeder/testdata/sepolia-integration/state_update/37500.json @@ -0,0 +1,68 @@ +{ + "block_hash": "0xf7471e29d9f546fce49b82c15eb3f2d62d27526884e7787277c9002b9cac83", + "new_root": "0x702f54f4fc777b52bfe061727dd0c5fd42e233a22c5f1f0015ebc5926ef6269", + "old_root": "0x16f20cc1f75887804afe3caf2b71634c01b2c88eeda6262c092a42c87f89c92", + "state_diff": { + "storage_diffs": { + "0x4b4f08b68696ba6ca3fd389029d9bb995b4766137d3b677531bbf4daf4cdaaf": [ + { + "key": "0x7431f86a4b86525ba04a618ee9341ba2700f9140f7d3a4cef2bed168853aca", + "value": "0x73d68a78c82678e56e8b773c93be758a2d78357e3873183df2113757249497e" + }, + { + "key": "0x27420377e357df917f46f7da15f75eef9a54209b04f0e7c1ced77ebf946ac22", + "value": "0x6a50b14efece100bb11677ee2d60b64ce87bb2016272b2f4680cd430411ff0f" + }, + { + "key": "0x57bf0d97a5df93699924802cca2b94f116b8143b5461eed2a22f1678924db05", + "value": "0x1a809bc02e2b01f90889c9f0f12fc328bfced04b5682c5ae560a83a8ea5f66d" + }, + { + "key": "0x64382489d9f51a6bbd49f2790a0d5d085bf9e4819ebfe9ada2129000ad8279f", + "value": "0x77f4adf16a16df35338fbfa45678d3428331df7240c9a2be7e3c66b832f7181" + }, + { + "key": "0x77ceef1f69814554b166b6eb599e12e7c950b8635c78e7fdb3ca1470060e85d", + "value": "0x5847d80389f672bf855d2c1e3a60ac472b67c7a92b00eee9e93ba7734a0e67b" + } + ], + "0x13185b3ac5099a063cad6e464eb30ffa6a2852cb4a66de900cdd8617b7e3f9b": [ + { + "key": "0x3d6933bfd424d3116f778553944913a49af3b8a33f3bc830d5b1a4e1e462998", + "value": "0x44462f71dbc43b3d14b2c6a24535e5d68e50a5bd02bdc1601a5c0944a799bb5" + }, + { + "key": "0x49667a6a1ed14647a07a7282dbf17a06cc133f4abcd3274b27a914e6fcbf89b", + "value": "0x3d033db8de9c3d64a3396ee9c875bbc68556cc9f2951ce58d645c014ac79b22" + }, + { + "key": "0x5824decd0a03f4a6158888c7b32ab20a3c7da4a2111224736d8a9601ccdb128", + "value": "0x5a7a736db3204fe897ebe35170d303011ba6894dc669ae2895d7d252c8b7d73" + } + ], + "0x1": [ + { + "key": "0x9272", + "value": "0x130895094f3512f385588f703e3d773bdba31b19da08efafa3e5f971f3a586" + } + ], + "0x4718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d": [ + { + "key": "0x391a2fd317962118227a3ef0f473318220a4e94843d9c9be5a7b8c608c89cfe", + "value": "0xf1bc7d75ab4802d2ea" + }, + { + "key": "0x5496768776e3db30053404f18067d81a6e06f5a2b0de326e21298fd9d569a9a", + "value": "0xa76689b06448a4a2dad" + } + ] + }, + "nonces": { + "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a": "0xc74e" + }, + "deployed_contracts": [], + "old_declared_contracts": [], + "declared_classes": [], + "replaced_classes": [] + } +} \ No newline at end of file diff --git a/clients/feeder/testdata/sepolia-integration/state_update/38748.json b/clients/feeder/testdata/sepolia-integration/state_update/38748.json new file mode 100644 index 0000000000..4c9c79ee84 --- /dev/null +++ b/clients/feeder/testdata/sepolia-integration/state_update/38748.json @@ -0,0 +1,1569 @@ +{ + "block_hash": "0x40b9de4d20b6537151895df0fa2520be3639a2a2a65915b5d27855efd1d78fe", + "new_root": "0x4628191c1b4000fdd0f64686a38b4701e42dafaa3ea730a6d57c55f69c3b618", + "old_root": "0x73490b361e55608d6572ce3ee39d686a71eab58b16511c9887498b7c2724968", + "state_diff": { + "storage_diffs": { + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7": [ + { + "key": "0x2cae20d6f722dde1124d0983ef0949cef3ba37ecfe346a429844d7302fec2", + "value": "0x1" + }, + { + "key": "0xb71ac4583a03a2d436e6a5651a6368eff96896dda181f606ac3f540730470", + "value": "0x1" + }, + { + "key": "0xde610375ad32ca53161456c413aeda52a30e079684b361a2dac0164f8ad31", + "value": "0x1" + }, + { + "key": "0xe0b571af9e985c63c43fc77181e8eb525736ca838538f8b2e041265c5c2a4", + "value": "0x8e0f1cce8fb2b6" + }, + { + "key": "0x12f7e7142efa9318bec44c718867c7f30a126cb385e762d58a8c3414a362cc", + "value": "0x1" + }, + { + "key": "0x13a2e6345934de0330b6054740318571255adfe68447884562642c37234000", + "value": "0x1" + }, + { + "key": "0x14b313bf7bd5499a962f56784de028e80989f76c3434feb4323900ffab9165", + "value": "0x1" + }, + { + "key": "0x2009599232d246b2aef1a58d9a76c7229440b57524b439c5dc0cf62a8fef49", + "value": "0x1" + }, + { + "key": "0x22e05f5da5178ce7aab408113210ebad4c8a43b53ee5fdf198a05ceb22bafc", + "value": "0x1" + }, + { + "key": "0x287f381e6d10e828a757fb3ee6322014cccd6149f00590155d3005bbfa06ea", + "value": "0x8def3f68b7e9ac" + }, + { + "key": "0x2fc65d993d7d14e94cd22c97907d20829b13999de85913203ac12d736ade92", + "value": "0x8e04dcf8ef1e09" + }, + { + "key": "0x30064e218b5de6166cb8d83fa96450096fa8e3271244164745d0aa63c7e943", + "value": "0x1" + }, + { + "key": "0x30e0b9953f9a9d0fc1dd6cb8aeb8d335467cefdd497c58acf17edce7bc89e0", + "value": "0x8dd702b0a830c0" + }, + { + "key": "0x31f93d9c536332f75bf6263f84cb1263d5d21b0300cd02ec89b764728256be", + "value": "0x1" + }, + { + "key": "0x48976fe95fa6666dc62894d929e7c65b37f6bed0c2cdc803ba1056f9d0d1c5", + "value": "0x8de98f1c995495" + }, + { + "key": "0x4fa19410ed187bdc944a74bb796ae1ccca71c3aec99aafc1d41db2501d9676", + "value": "0x1" + }, + { + "key": "0x56a8ab1f2c24d761800ce76106c30e6831a14195531f3b6c72913ea17eb3b1", + "value": "0x1" + }, + { + "key": "0x5bff0a41e2ebdb431c1a09070777ee717a3dece4baf74735b7d90bbcc7dcde", + "value": "0x8de28081d9fe5f" + }, + { + "key": "0x618a048a55d84fa64020eacfd3b4ce59c587d5463e677a79bf2b158ce24143", + "value": "0x1" + }, + { + "key": "0x6b4d0438d5c4c922acd7c60c97fb82ea0625486329d81b4d9448fa50c08c11", + "value": "0x1" + }, + { + "key": "0x73775f97fd92deba07cd0015a530ad86ac748c852db5fe0a234af8bc5a0b60", + "value": "0x1" + }, + { + "key": "0x759f422a63ea8637972d8ff09f4aa5cecbc84ef74d2ba06a9299a2e6fe87ac", + "value": "0x8df40831b1a904" + }, + { + "key": "0x7a927268a06eeea27e2524594f70fd28f2a6c38b74d34bd71ec9c500609a07", + "value": "0x1" + }, + { + "key": "0x7d7c6c149e2013aed4620fb6ca06525959a6e75e343ef266284e0878fa75cb", + "value": "0x1" + }, + { + "key": "0x88fa0739b9e0c1998d69df9ca6c23cd55cee4c6316e94d999511bd21b7d06f", + "value": "0x8dd0e1c8a8ec0d" + }, + { + "key": "0x92a49aa1a7d88feceaf880ae20b27e2c6997b9ba57fcdc149c61c096023ce0", + "value": "0x1" + }, + { + "key": "0x96cda0b4bdd4168c98c6444775ce5022b61a60719785a5f6e7a900e9cc12e5", + "value": "0x1" + }, + { + "key": "0x989062e46371d015d50706ac31ab4cdfdcca611eab53bd7564036ec8e30be8", + "value": "0x8dc535fa7f143e" + }, + { + "key": "0xabee496d61b8878d27cfc3b50b4dd5d0c8e8f892e4939dac9d149c4878412a", + "value": "0x1" + }, + { + "key": "0xae9486a43b9e064dd537eda39db1b791d15ca35f7faec363de43327b8345b7", + "value": "0x1" + }, + { + "key": "0xb1c69fe626bd6d931244ab8182901674b7f4f067d7ca2ed9b1633dbed68015", + "value": "0x8de704549f9158" + }, + { + "key": "0xb8f902834f83607565847c9de9eae9c5d3584c46c53cef97633870ac8b16a5", + "value": "0x1" + }, + { + "key": "0xbbabba018368d17e65266639f758ddf03489afa231203465345a15c30e6e26", + "value": "0x8dd56caf8eca88" + }, + { + "key": "0xc01655196d167069df4bedab61ede2a699e769c334462a67e2ebd003b9e21f", + "value": "0x8dd0c9c54ee898" + }, + { + "key": "0xc83212690db8edceeeea9145cabb8e12d754b1b5ed55f6de756ffd82988731", + "value": "0x8df994306f0dbd" + }, + { + "key": "0xcdca81656e7cf13114750ebaf0550e88fbb39ee345b5f933b093651663d74a", + "value": "0x1" + }, + { + "key": "0xcef8bf9734733322ea8c40c4141f022c045152513eb48f450a50e38cf59cbd", + "value": "0x8df5ee309d3d61" + }, + { + "key": "0xd0063537c3feca8f74e36c953a4bc07544f3487fe62fcfeca203351c7415e4", + "value": "0x1" + }, + { + "key": "0xd1dbf38f91cdccaa9872785ad9ecbb2c053f6bf629ca3e094d1c39adf87307", + "value": "0x8def65fb313496" + }, + { + "key": "0xd3eef632b9bcc00ae7e1a9ce52a3ddc2be5ad95c60c83fd6227a01a3fcd912", + "value": "0x8df2b5947d8808" + }, + { + "key": "0xdda3c201e24095a4f6e09060c36728ecdb39cddf4e407c65febf872a902518", + "value": "0x8dfa61a52e8ca5" + }, + { + "key": "0xddac96de2c4f2c5dc99e5a6c605215d2eb6ce37692aeec7e041600adba8bf9", + "value": "0x8df68fe97edf6b" + }, + { + "key": "0xe616eb3e1d77f413c69646ea22ca7c34a24866525ea50ab0d7ec769a742da6", + "value": "0x1" + }, + { + "key": "0xefd2b39bcd46eaf0cf9f8377dd6a5be0cfc1aa147abf6cef20421779b0debb", + "value": "0x1" + }, + { + "key": "0xf108bcb7b0bdd5a52f4bffa00ee6b6d7b739f368a41152002a237e9793d6a8", + "value": "0x1" + }, + { + "key": "0xf2e8aa9ba8b0bcc71ebb4a9d5a5fbbc2f3390c78b8727d71813ee40d964194", + "value": "0x8de5ad1c08817a" + }, + { + "key": "0x100683dc269178fc51b4dd10ac092617ba9730db291cf2448e6792ab68eb8c8", + "value": "0x1" + }, + { + "key": "0x1106ca865907c9fef52a56c2a1a243115eef151d62aa40e2e42bd5592e84ca0", + "value": "0x8e02f0dd34f23f" + }, + { + "key": "0x113213df70b3275e8151d385747206004c3eb89d5e462ad14ef6a7b7093a774", + "value": "0x1" + }, + { + "key": "0x115467517b2abc844c25ba953dc0a883ce1c9add4691b05fceca0d5e5c5f36a", + "value": "0x1" + }, + { + "key": "0x116909e9d173f4409b3145e1224f72b53aa74983250429c48af34e2772680e9", + "value": "0x8df3000f76d86a" + }, + { + "key": "0x11f603d9416d64faf8a3747a1dcbb544b94dbe55b3900a0cd511ca476e9a307", + "value": "0x1" + }, + { + "key": "0x1219a6a260cccde0d684a1140650f9c432cf192cd83ecf8b0b34968738b17ee", + "value": "0x1" + }, + { + "key": "0x12786970fa4ce7b3fbd843714c257c11fcebdc680a58b1cf1d94ce4a60af797", + "value": "0x1" + }, + { + "key": "0x1289e62b80dd306f7ea8b71a1c28e10071ca64725670488356e0a152b2400f0", + "value": "0x1" + }, + { + "key": "0x12b29a431dc3c6a4d96e97726f942c8fb179034eea0c80a1addddd21f5262c4", + "value": "0x8e0e7145dfc190" + }, + { + "key": "0x12dda0fa98ec2b3923a6dc72217e8713770fab8ddea661519a0594b81ecd0be", + "value": "0x1" + }, + { + "key": "0x12f5b2bc51b8f163647f2fa1ef9a63cd2588374df6a0f5942d4a7e29978fd02", + "value": "0x8def3025f73aa8" + }, + { + "key": "0x12fee4c3c17c9102aaf0ae2338d0843e2164d7d065495ab5bf7f82e0884cb5d", + "value": "0x8de8d4689ae8fa" + }, + { + "key": "0x141b8120f330f3c6a0ae1e539e47690be4631885f1fc3872e31a963012197c7", + "value": "0x1" + }, + { + "key": "0x15298672b0aa6c2f54c7c1b4e7590179d7778f06f2bf62dd571592db91b099f", + "value": "0x1" + }, + { + "key": "0x15eb6d26789365ad79b97f773add9f3889bc8ac78d927d4def3a890942260b4", + "value": "0x1" + }, + { + "key": "0x15ee6676d75dcd4ce80c0569bafd56bc0646f472db8afb1a23de9267eb12a54", + "value": "0x8e03112fc20dd7" + }, + { + "key": "0x160c2313996fc20a4362c1cfbfc75cbb759cddf60b71f9109e42c2cd6bb95a9", + "value": "0x1" + }, + { + "key": "0x166302e10581a8be4a62a69b444a597303eb0a61eb061b5c7291984272c90a1", + "value": "0x1" + }, + { + "key": "0x16b9a5031f51ff40e40a21b967c588683c12ba50dfa59b06a9388b65da573a8", + "value": "0x8ddd921e0f0b6c" + }, + { + "key": "0x16ce4042a2e2f63a3e851cc0be9f55eb21e855e911bbeb97c58cb3037b5acda", + "value": "0x1" + }, + { + "key": "0x17406f542e0274a3ab640886d63e067117bf78e54e8a59591347ac1ad6bb078", + "value": "0x8df175eb1e5d5d" + }, + { + "key": "0x1770bf09f252bfd0d116935fc5c4a28db8e5bb04b4d295719ed65b7c411fd11", + "value": "0x1" + }, + { + "key": "0x17acc29a46421ea750f369aca35a7353154d69782012558224233d0f076d948", + "value": "0x1" + }, + { + "key": "0x17ca79278fa640b884e60c33c98d62ad1128ae45bf87ce0c843b07909d335c9", + "value": "0x8dfd30f01085f7" + }, + { + "key": "0x17fa7073da7a230a61630f45f03da73e0a25df0880eb3803f2f9f69d613e96d", + "value": "0x8ddc4655781151" + }, + { + "key": "0x1803a29070da1e3bb9dae113fbc9ccab377eb6d8d71892e14fd7506dd683ba4", + "value": "0x8e02eb5d70b3dd" + }, + { + "key": "0x19c30afe905a53fb0a1813ef53574e39235902811c8b713a29dac93a60e1ad2", + "value": "0x1" + }, + { + "key": "0x19efce91e78b59d7ca89486a06606bb1bd4ae0639a55360e5516cdc761e3e3d", + "value": "0x1" + }, + { + "key": "0x1a3e973bcb75ed42e272ce09f7070b04f85661808696fffa04791b32d062963", + "value": "0x1" + }, + { + "key": "0x1a6dd7a72633a4bf9ef1100907db3510c6acdb35c48d69de9e6e69e522d24b9", + "value": "0x1" + }, + { + "key": "0x1ad92cfe00915dcc095058dbad0e824075bc26479a38086fdfdf86904d4bbd0", + "value": "0x8e013a26c36d2a" + }, + { + "key": "0x1adfce0f896d673330146d7454aa8e04679423c958645604aa74a7c92da525a", + "value": "0x1" + }, + { + "key": "0x1af46a2b2d04a1320df3966e1e86c5c2b145e5fd4aa25ff8c7b9fb99a95c4d1", + "value": "0x8df79369a515ff" + }, + { + "key": "0x1c5257db686e02021c4526419a6b4391bed7acaa3b910c32f42fb6853b3c6eb", + "value": "0x1" + }, + { + "key": "0x1ccf7f4e6e9b4c33e43fb60b8217cbb2eb9562a620be3bf39fe746c1c7d3a10", + "value": "0x8dfd7a4c6c1f8e" + }, + { + "key": "0x1cf29e3f2a24694f6842f313f7f76fcab97266c68ae0a4498bf37faeb53ac65", + "value": "0x1" + }, + { + "key": "0x1d5da14ebcf1f6d53c8f643921f0f5fc3ea41d5eab14ecd6a376f60fa27e384", + "value": "0x1" + }, + { + "key": "0x1d89ab4394ec415bfeee0f45367832d44a3bb8c06011d234e06af8c40d08804", + "value": "0x1" + }, + { + "key": "0x1dab879fd6928781d860817b355e4f378e02cf2d0427525433fb3aacd5b9ebf", + "value": "0x1" + }, + { + "key": "0x1f1949836b4f32a9aa35965ff4d5a16f0f6b997ea8ce8bf2bdf93cea54849fa", + "value": "0x1" + }, + { + "key": "0x1f4e6b90eef5e926c2b118cb4388b8096df355183c325427f42072989e7de7b", + "value": "0x8dea27354382cb" + }, + { + "key": "0x1f5315afd677936a3d010a8ec48408db437d86f51a1bfeaea9227114e45d2e6", + "value": "0x1" + }, + { + "key": "0x1f5a8e5dd66d11fc3458e533a815d872faf79fc86a6660c4a710f41156863fc", + "value": "0x1" + }, + { + "key": "0x1fedc5be4429da6426371213532d9f3880fcc320bb3eadc0b6e1977b860783e", + "value": "0x8df0477789b757" + }, + { + "key": "0x2085b4645ed3c7310c005ab0491a6f678ec12a5a48c7e620eb289fe88d3c4c5", + "value": "0x8de8056857064c" + }, + { + "key": "0x20e4d41d299ddc0e0485d23b8646e71d5366421f9557c52a53fb55ea91adc37", + "value": "0x8deaf9cda4cd93" + }, + { + "key": "0x2168079a832cdb9aeda11ee820bb53d4ad872cea717ba0c885c75af48263239", + "value": "0x8dff5237741c8d" + }, + { + "key": "0x21fb49b41efcaaaebdcdcec8afd8af300ebcc04f10174754baf279197809110", + "value": "0x1" + }, + { + "key": "0x2200d80fc115010ff512eddf5b530e0557edc94e17c216c5c13ecfe4bf1bbf7", + "value": "0x8df85d970d1e8f" + }, + { + "key": "0x2201a9c60bdb707184a55eec2664caa29d7d5b41ec4dafb90b72dae5bbace83", + "value": "0x1" + }, + { + "key": "0x2212a060701a4cc5987dcec8644cd6d1c09e7d4a4810ad0b908985dc25a86d5", + "value": "0x1" + }, + { + "key": "0x221a643ebc1e890665b3651e02d6e04a904b40ce350746a34a11e1088ea22a6", + "value": "0x8dec6538b9f70b" + }, + { + "key": "0x223dd1e237404fdc9550fa7c16a346c08cdf8ea6ede3beeb00bee45efaf894f", + "value": "0x1" + }, + { + "key": "0x231e43460d7481352e1e6cb1cf83be630576de46a5cbced941b2fb1dac5d8f1", + "value": "0x1" + }, + { + "key": "0x235b30788c547d428ce5386013a5d8c2561b40e48132b7eca3e0f24b0b3a2ec", + "value": "0x1" + }, + { + "key": "0x2362aed92b9ab80bd6dd095a81e1e2890875c4d820a54bf36705e23a074a34c", + "value": "0x8de49ede4a1f43" + }, + { + "key": "0x239970446a52db27f8acbfcdf462813869ef8b57b7ee83801968f35da4a7989", + "value": "0x1" + }, + { + "key": "0x239d38c852d14a9829e56f115820b7d34e7f7ed2239dd12d9721ddc815ba030", + "value": "0x1" + }, + { + "key": "0x239da6b5e1db92a2e113b0ba67adc0cbfc46b07dbaacaec2708044b5d3dc592", + "value": "0x1" + }, + { + "key": "0x24276aab142df614a55c01a8c81619edc0ea7541c5a383d728d85c4a92c330e", + "value": "0x8df6bdb0d6bb7d" + }, + { + "key": "0x249c824819071a7861473a6faa19e871e5e372d80b7d18fa231b61b979af359", + "value": "0x8e0a70088e8425" + }, + { + "key": "0x252b975029573b7a9bc18340adbf4318a3bdc3c0a155cf342426fb35dfc7859", + "value": "0x1" + }, + { + "key": "0x253e1f9a0b7d6f3ad8ac55f27a1952328e9d15dd4d02017d89e65350ac5c558", + "value": "0x1" + }, + { + "key": "0x2656159dc3e67fb2909119669c12be1ca2aa54c0b6738aff46d3b194f6d1a44", + "value": "0x1" + }, + { + "key": "0x26e8e0b9497a85a22d6859fb2a2bf48cd55a6637d145bb51c82baca0f150e3b", + "value": "0x1" + }, + { + "key": "0x277cb0bcd08397d8edd4f1b5bb31119607c9dea9b4e03f3acf5eb066a4e4119", + "value": "0x1" + }, + { + "key": "0x27a143237c4443f6c79aed401c840bfb6e1df259410880dcc44012a5d46bfb5", + "value": "0x1" + }, + { + "key": "0x28ef9a15fa52ed4314c2eebc1dee7c75ecec3489c6505cd2b4ee78f754377bd", + "value": "0x1" + }, + { + "key": "0x29449b45f1505e52bf9ffbebc53244e7159a7082a5eede1df0e81663a0d45bb", + "value": "0x1" + }, + { + "key": "0x2947bf059e9a75e783d22e487dda212164ab9a137ee8d3a55616646d06da8b1", + "value": "0x8de1326de79568" + }, + { + "key": "0x29666eb7861a1d9920416e69866e52e313c25dad889a4fd3a22821b21f4420c", + "value": "0x8dc37cdf8982b7" + }, + { + "key": "0x29b16afce4e8df93a2fda5923cf341855b9611f7ca906c3508863c39b6947ed", + "value": "0x8e07c2f00a8643" + }, + { + "key": "0x29fdee1fe99092296f5250f22665d5b77c287f9922f22d5e38df0238a9f8521", + "value": "0x1" + }, + { + "key": "0x2af44e2283c0b984704f65d15917d3ce455eb8fbc0e90c7b3025a5d16366ce2", + "value": "0x1" + }, + { + "key": "0x2b2a9fd807202cccd36cd7017ef1db110057adf2ef851a3917a61673eeff7c0", + "value": "0x8df5525d94a2ba" + }, + { + "key": "0x2b49603fd5c1ad46eeec972d61afe1db7c975f2afec1cb5d10e525b836f09c1", + "value": "0x8dfad8027ec0e9" + }, + { + "key": "0x2b9b7d18ab9282a4cfcd33fdf050cb4a8875c3ae25630545d2f198b920fceb1", + "value": "0x8dea36ab2c8dec" + }, + { + "key": "0x2ba233b611d3b999844b8db9fa589f44f7d010de536733726a528c61a13f15d", + "value": "0x1" + }, + { + "key": "0x2baef9565c3521f9872bf8eb0c05741e2228d6b048b9c1b6537d91d82bcf3d1", + "value": "0x8de31b655b01be" + }, + { + "key": "0x2c1ee4a677d9f5ae7eb16095be6174643dd8c5d5676e74171b8f72b31753e0b", + "value": "0x8deb822ba4344e" + }, + { + "key": "0x2c5fe596b0140488335add24f94205564eabe942bf5c2d238e840bf862d60da", + "value": "0x1" + }, + { + "key": "0x2cb69bf0e86898d6ae450cc20b5ee74c1f3f89f55f65706f7d2e6f551409280", + "value": "0x1" + }, + { + "key": "0x2d5c92f36942c2a94a15a8624bbc11c3f8585c9e20b2c9ef9a9999c8ebee626", + "value": "0x1" + }, + { + "key": "0x2d5d0843aac7bd6c72204fbae61fac4d27be78267c56956aa5a4d47333e8edd", + "value": "0x8debd947c829f9" + }, + { + "key": "0x2d617dd390070b4c93930044812828c11f64915b520d70c8d6dc195d5b1d192", + "value": "0x1" + }, + { + "key": "0x2d7a6e385f57fd8da3f1eb3b1b8df1e329ceb457481a718d66ef98d06cdf264", + "value": "0x1" + }, + { + "key": "0x2d8e2187213b4af6dd3d3c5dfa38df554091e216799fc773a71aaba8bda4b2e", + "value": "0x8dfac0312890c7" + }, + { + "key": "0x2daaf788fc5e7fe1752059090cd2276dca5e8e68373cfddc131b2e73f1abdad", + "value": "0x1" + }, + { + "key": "0x2e6d9a4fb201d3f4c69b3cd83520b451f7a0fab7a2b9dcda06543f5c0b7f3de", + "value": "0x1" + }, + { + "key": "0x2e794994f9caeea310a700b186586e272769e602aa9f0e5823dc9b57696516a", + "value": "0x8dfb6a4b3ac23e" + }, + { + "key": "0x2f7ce7e4af10f103a30ae0055b922b718bb9ac6ffe6350227fda32c159ce285", + "value": "0x1" + }, + { + "key": "0x2fddec9d4d430c1e252f399def60dc851f1fa7e777ed81a8c75a18e6b5639f0", + "value": "0x1" + }, + { + "key": "0x2fe0458eb51e935a73b881338873dc040f3d60d1fa156f2a775864df819faeb", + "value": "0x1" + }, + { + "key": "0x2ffa4c4c8d4a0c3e6855e316190ea3839f6b382f4068413c85119dff34e067e", + "value": "0x8ddd4904ec45fb" + }, + { + "key": "0x30bc4c4197cf9e14b9d6a677a71f394fd160fd22a42c54fa94996c2c6ca9fbf", + "value": "0x8dd0d9f8614785" + }, + { + "key": "0x31b7b54d177f1afc53af67ebd60d7fb5b4066995ed7f5d1fadba3ac6824b06c", + "value": "0x1" + }, + { + "key": "0x32442a6d2db6867682f871abecd2595b41182a259968d23fcc412ed01aa6f78", + "value": "0x1" + }, + { + "key": "0x32b4bd77abdbb7b4cff8e1a5eab723fc9cd48ad31d8a13f8ca40a3145a89ae5", + "value": "0x1" + }, + { + "key": "0x32f78216c1f67a465460e0457c8af4def2b264821fa7e6f0e0eb4ecd7c3c064", + "value": "0x1" + }, + { + "key": "0x331a9c84f6c01410722b3943541a966f3a7a1fe4c2c6cc310e39a8901d0b882", + "value": "0x1" + }, + { + "key": "0x33246439787adf7836a6d596d30837ab876e4cc4e301354b311afc3aa228646", + "value": "0x8ded5e57ee8316" + }, + { + "key": "0x33b0fb0ce3ffca1310574d80e71e3c828314e95495be0130b4df6ca60289bd9", + "value": "0x8ddc858e79fdc1" + }, + { + "key": "0x3455e66d5bbe58b8f930aec6495610bda3028028706604b3698a903e275420d", + "value": "0x8dec4d8e9cb4c8" + }, + { + "key": "0x3457adb01684a7809a4040a308945fa82a28c6877a8580babff35f4cb69552a", + "value": "0x1" + }, + { + "key": "0x347f9cedb47cb3e80815cdc4542f003d492adabb65e81830a49876aaa336d70", + "value": "0x8dd2a4b74208de" + }, + { + "key": "0x34b3b591e1a5e575089bce3ba39411210c649ef7df9aab08a6e1cb6a54e5eec", + "value": "0x8dea10d19e2195" + }, + { + "key": "0x35741e597b02b407008393501930f2710417f813755f12911f9870fdce473b8", + "value": "0x1" + }, + { + "key": "0x358b654583e17a6c89524f324d1da661daee25ad440a4e5a764feb05fb4a441", + "value": "0x1" + }, + { + "key": "0x35f465f9f9d107296bb7f689d9ddb81d5e9aaa6f32e681614ee6b8884b1a3b4", + "value": "0x1" + }, + { + "key": "0x361b29905384ba563255d329328904422ae8d911a1705346926d12d42d09876", + "value": "0x8dcaa3774e643f" + }, + { + "key": "0x3661fb80ee0ff242083bd702fadf26357b961012797fd0c8f7289384e0daf25", + "value": "0x1" + }, + { + "key": "0x36e7701997c0e4ea018e4f9c6ce5df386c1b604ef0ffce5320295ec5ef85152", + "value": "0x1" + }, + { + "key": "0x37585865971c98086f810152171cb8e1ffa42e2ec26c9fd5722143b3e82b57b", + "value": "0x8dc55546c3c783" + }, + { + "key": "0x3855455efb485a3415b03833e4991994d7684172e7aa4f7ca36afec52e0c1cd", + "value": "0x1" + }, + { + "key": "0x389a00bc8bcf1b98bdbf9583d7df871f840bcc39bab2e0be1815115c648e6fb", + "value": "0x1" + }, + { + "key": "0x38f956a99996399ea2930964f8dbaae85272e199e180a339e49e8665adafcf5", + "value": "0x1" + }, + { + "key": "0x3904e0cea330a6df4a08b0c4e937c46830f1413f60bdbedd2e7fb1a6c93f172", + "value": "0x8ded5cfd834741" + }, + { + "key": "0x396cc5879320b85a09789a7f84a82efea9d40779347558bd15c0735aa67fb7a", + "value": "0x1" + }, + { + "key": "0x39a3e732737456e58a2446e1e553c9fdab84bfbdbb8be02ccaf843b347838f2", + "value": "0x8de3ea8e44079c" + }, + { + "key": "0x3a34da40854577852aa21e0cf4b778ce32bd89ad39cab3e16e627716127f054", + "value": "0x1" + }, + { + "key": "0x3afcc39fa40cda7719382e517ee9d07001b44f43a5c0951c5569820f8888994", + "value": "0x1" + }, + { + "key": "0x3b50d30d67076f3816ae943fcf25678ef5a0ab731cfc403f7f3a32a9e578a30", + "value": "0x1" + }, + { + "key": "0x3c4a17fda8826b30cfe651920477bb557de62050147685bce25ad5da4e3b7ee", + "value": "0x1" + }, + { + "key": "0x3c4b4f729c6d762ece6d1bcec5efde6e101722df6a5a67682dd7a4e0934cb2a", + "value": "0x1" + }, + { + "key": "0x3c57a74c779f6e2831b3a9c6b71d7bf3fde76998bcaebca74ae1f8a4c6945c1", + "value": "0x1" + }, + { + "key": "0x3c77eb0db214b949e5486cd43db06732d55cbdacabe43c8c9bd4e9c827d0697", + "value": "0x1" + }, + { + "key": "0x3cb7630d6cd6f91577ac5cbc2a66d360277a6de42e9fe39d38a7429780fdc47", + "value": "0x8dea88c507eb91" + }, + { + "key": "0x3cccc184b0b291fe23633d15f9a2a41201bd07d77ebc1520c72c8cf48155c47", + "value": "0x1" + }, + { + "key": "0x3d46b8637eb650c14015c4a3136610a3bbddd08d09c4f0b790e1ccb480e3e15", + "value": "0x8dfc28d6e2053b" + }, + { + "key": "0x3df82d63f61c38b16492abf032970595c5f95b2f977ae8f1572f9bb27ada1f0", + "value": "0x1" + }, + { + "key": "0x3e8b019b30e28438d9868f7bd1f5ebae4fd115105818666dc59349fea8079db", + "value": "0x8dfd064285cbb0" + }, + { + "key": "0x3ee4f14405bc87a76448263a4d1d6c8a74aa232f3ef433ecc2d4b0b59437c89", + "value": "0x8dde6da88fa9ab" + }, + { + "key": "0x3f39a3610f2d8c3fd1f3a14bab9a0ca3f91c91138b3f523a4788fe3eefe22c0", + "value": "0x1" + }, + { + "key": "0x3f658f512bbfa0885fe4cc4594c46e58eef091313aaa938704acd8c205ab69f", + "value": "0x1" + }, + { + "key": "0x3ff50882b640c3eb73194990145c971e9fcbb8faa75a2b72fa4f2b1ee9fc185", + "value": "0x8de2c8cc43d2c6" + }, + { + "key": "0x400a6d4ecbecc894010216a65688fbe8fe6f3a5bf5ef94156acb235255eef90", + "value": "0x1" + }, + { + "key": "0x41dff08191913269b91db46de107b705a34206ca66f88b2c47a979558c5171b", + "value": "0x1" + }, + { + "key": "0x42663116fbc7689173bc13bed9c673df82e810c80f8e40fc55cd0d643a58429", + "value": "0x1" + }, + { + "key": "0x428d123e9c718c602afef4f9a2a7eac3ed4f138cad6f1b81f8881502c17e4c3", + "value": "0x1" + }, + { + "key": "0x434445e006464139b571d6823e9a0adfa2ec8815f6c6ebeb7c298176360819c", + "value": "0x1" + }, + { + "key": "0x43600a6940c44f5ab3a775f2feaa453942308e80192879872e03855b7cb7725", + "value": "0x1" + }, + { + "key": "0x438d785f138e852a09140662761e7297d9ad296e62c09b73bac2941d67ef2b2", + "value": "0x1" + }, + { + "key": "0x43d0c436efa280d0df83542b6f8bc5f8ff8b00131f1c200ee1a5a33f8f19f76", + "value": "0x8dd28d50dfcf17" + }, + { + "key": "0x444579fa1991ff6e3ced752cb179258cdbd2f69f254b262ae802a8e338dc8ad", + "value": "0x1" + }, + { + "key": "0x449e523db4d1e3bfa9c2f745461ada9bd6986694cd8abc3dbdaaec564da75be", + "value": "0x1" + }, + { + "key": "0x450c8591ca0539225510bb1c0e9ff53b5ff68337056fc5195dd6c143ce2eb8a", + "value": "0x8dd3e28b756cfc" + }, + { + "key": "0x4624a9217017c8f9b89f064ce13ed6d7e1ad7808c89329ce8fb0ab9cff54f6f", + "value": "0x1" + }, + { + "key": "0x467d7613318baa61c07f9855a432380876592346b9de1703442f6cc1c5e6603", + "value": "0x1" + }, + { + "key": "0x4692da77a7b0b76e4116bb922b56432fae68ecc84a6a252725d2b2c9b2a3d6a", + "value": "0x8df68103289b30" + }, + { + "key": "0x46a3e3c657b8d77fbcd61407b64079f131354a5fdc2b5798d7a9e2fc0531244", + "value": "0x1" + }, + { + "key": "0x46b254458f0e949a6c5c0d30d7353ed8673ab5f15ca81964c10e91230032ff6", + "value": "0x8df64e2efd7137" + }, + { + "key": "0x4765dc79df8b2ff9cb00947b615d9b22de878ba18ef545e4d56183493dfeb00", + "value": "0x8df6c4a99e4510" + }, + { + "key": "0x47b472d9b2e8295957ee17958cacf864b23882c650a3e030f0be4545b5f82d0", + "value": "0x8dff0958ae2138" + }, + { + "key": "0x47d36c76afe2ddcb1d6fed0a05733ca6087f52dcc77e36962f34b4a2d6715a0", + "value": "0x1" + }, + { + "key": "0x4800a46d53a452cef06412426027b97aa5bf8ede2f0ada3a6572d54af59f4b7", + "value": "0x1" + }, + { + "key": "0x483d45474228b56426807712d629994f62dc3af3848f4e08862265be773ac3b", + "value": "0x1" + }, + { + "key": "0x485d3b59026b6de0fd5da944569d5afa19ce7a84b8c684f4d4b8d8fdb379732", + "value": "0x8e0e73f3274a2f" + }, + { + "key": "0x48615efa52cd3e67bf1bfbc679468c953bd243291248dfc86732a6edc515a84", + "value": "0x1" + }, + { + "key": "0x48b9c695cea50493e2dee8795661cc06484682b34200b91db89e4dbec3596cd", + "value": "0x8e0c71ea61b57f" + }, + { + "key": "0x48c26133bd24fe0d67e5bd2d3d0dac8119bf7bce5752e10e79a3a6936ad5703", + "value": "0x1" + }, + { + "key": "0x4926244e3947504cc44d6eb31416bf3d2d72b21ec923b77aa3bbede744cd299", + "value": "0x1" + }, + { + "key": "0x49849c5ead978177920a1178be1c9b0e9caf97cda93104bf193cbaf0277684c", + "value": "0x8dedffbdbae492" + }, + { + "key": "0x49e3975d754f726f5ec605794b6c676c77a40e8ccfd035d0ca27dc23ebcf43b", + "value": "0x8def750f8a5cdc" + }, + { + "key": "0x4a871ac8b63ca66409e0ed2b983dff213223379e981d2858c2ff16164b469e0", + "value": "0x1" + }, + { + "key": "0x4b3cac3b282bc2496af9d4e58db75cab212cffdd0118d9e0787bb684bad2f99", + "value": "0x8de807541e417c" + }, + { + "key": "0x4bcddc63760285ba6398028935f62e1d07cb9326ce5959953dec0a6b4ad77f0", + "value": "0x8dd4bab63fcb7d" + }, + { + "key": "0x4c4526af15d9abddd2c26d3668620ededc9af9055e58912a04e4ed2c58c5ac9", + "value": "0x8de091cdd8c09a" + }, + { + "key": "0x4c972ed4926ddeb69bb20b873f57d28cd768a98607f56c75a6f5be3d0aaf2cf", + "value": "0x8de1bb0b67560b" + }, + { + "key": "0x4d0f7e249d7d03a72484973a081bb479a35a25550e5028e93a01650a993cdec", + "value": "0x1" + }, + { + "key": "0x4d9891e4da4d9cabd9d6530352f4b429035a9dd2d6f8991c93220799e8343e3", + "value": "0x1" + }, + { + "key": "0x4db6898278f59f3f669f50f36fa0052726bd0a64d79ac8f7c84b8435c0dce82", + "value": "0x8de8a245cfa492" + }, + { + "key": "0x4eef7e71f2cb56d1b2032b387c79a6e3d3fe23016beef73167990949791bac6", + "value": "0x1" + }, + { + "key": "0x4f03e428db4a998e6116a8aa8db9523afbf2ce9883e5bc9e7e2ddf67ea1f437", + "value": "0x8df4b23b3c73d1" + }, + { + "key": "0x4f6253109b4cac2bbec754a2eca79359a5f06d0cfa048e8ffc13a1b385dd8f8", + "value": "0x1" + }, + { + "key": "0x4f69aaa85fd2abc0e4d8889ac52d5b0ec7321389d25f8e9e3566323cbfa2a2b", + "value": "0x1" + }, + { + "key": "0x4ff39a65a7078cf719d42b81fa55137be6e113eef335d43c5ef77d1d598b017", + "value": "0x8de473cc0aeb0f" + }, + { + "key": "0x50a1abde7ac8a250da7d26e053aa71883f182cc599278f42b27ef98964f8585", + "value": "0x8dd3c823281bda" + }, + { + "key": "0x520f5fbc9812c45b4c7c8c3fdb44d3efd70e9c5ede3664a0a60cc61e3ca3e14", + "value": "0x1" + }, + { + "key": "0x524d68345533dc3112a8adca7ebd00db09033d0d843b917d24e916354b6ca8b", + "value": "0x1" + }, + { + "key": "0x53a47d355d78e426b17c4c2a3891b15c59cf15e77a7194d30fc7e511d25d9e0", + "value": "0x8dfcceaf7ce6e0" + }, + { + "key": "0x53e554d61078d36e9f9c792f23a4d4db6b29dc4e8b3e9f8ee1ee1166cccc515", + "value": "0x8df29ed9799f08" + }, + { + "key": "0x5496768776e3db30053404f18067d81a6e06f5a2b0de326e21298fd9d569a9a", + "value": "0x55f0dd811994b2a93" + }, + { + "key": "0x54984012f1f5027e1dca6600bf9f24ea9cfeccd5c15926714cc582a55bcca3e", + "value": "0x1" + }, + { + "key": "0x556c77b8426528f7a12f0c6db708ba5b195152c0329f0e242184686ed9b2490", + "value": "0x8dce7b07af5c81" + }, + { + "key": "0x55eedd99b3c640f2dffa94d3d7bfe1e75bfa3290496f7200a7c2ca1852e0df1", + "value": "0x8e03be134dbd50" + }, + { + "key": "0x573666ded98c097dece5dc928e752d5ac46e22c71b02f12d02078f47ca001d1", + "value": "0x8ded7e404eba1b" + }, + { + "key": "0x57963069447dcd8b95809ac3be92fa00f533264cf0dc3b48670db3cdafc1395", + "value": "0x8df056380831cc" + }, + { + "key": "0x585c5db4d99d90733684d6c8b7eadc4ab894ab1a9e610ed405c9a449200b523", + "value": "0x8dfc5369706d76" + }, + { + "key": "0x586e01797305ad6031b9d42351921efe615f3ce2f14c46062be90f58842644b", + "value": "0x8dd0317f9a81aa" + }, + { + "key": "0x58d09e65a09ea242c974f98f0c0c4dd69a777f595de4698186b1ee77cec6010", + "value": "0x8e04614a4a77c2" + }, + { + "key": "0x590bf74e426f1ddd41909047e4edb59fb769e818a584548bd667f09b266c6dc", + "value": "0x1" + }, + { + "key": "0x595f8bd5646ead1e7964bb92d3f14bb8167bca3a8ca45f466dff0b914c677a5", + "value": "0x1" + }, + { + "key": "0x59670ab395bdbac1b3a8c4009b738badfa74cdac52f74b2b13931dcbfa20131", + "value": "0x8df6daa853acf4" + }, + { + "key": "0x5974743be3f049de3187e08b2af31a47ae86df5b7a9a9e95f00455d16802b20", + "value": "0x8dd9292e0c1e77" + }, + { + "key": "0x59d8be276b904d76266be6f3fb22ff560eb387a36f796a39d414fef917429b9", + "value": "0x1" + }, + { + "key": "0x59df3b8a60482b7a1483ced9dd8ae9522c2ac282e1da1c0b7eaaf208df64b1e", + "value": "0x8ddc8a52e60fb2" + }, + { + "key": "0x5a141bbcd7752d2059f2bdbf070d7071c6559b6df61cac1b78a77ed63270eae", + "value": "0x1" + }, + { + "key": "0x5a4170aa7ded377b9c7f1d0256d079be3400b1b18b54d5696b221c3b3914331", + "value": "0x8e0dc8a4f45c3f" + }, + { + "key": "0x5aee1722c2a4e24ad53a6cedadeb45fee8c6ede9a4ad14d8266b43196fdd3b3", + "value": "0x1" + }, + { + "key": "0x5af084d9f883c3ca2810e715936ab4f624d21d0c5886a62b5c5bf28c34c134b", + "value": "0x1" + }, + { + "key": "0x5bdd9bbb239440dfa26f37aebc86320877d870be701c7e0e60c848cabb4f2e3", + "value": "0x8df0d19486c01f" + }, + { + "key": "0x5c41fead4a1ce2479da98eaa149ec2597fe4eda2f83dae91f9add1149b683f4", + "value": "0x1" + }, + { + "key": "0x5c62aeaf526cd94bb6ed07c9d66750d39dd08182df4b2ee87df92c0e3ced406", + "value": "0x8dec97cb8e1506" + }, + { + "key": "0x5c9b982bde83ad8cd8f4f68dfd6dcf5f35bfc7c8fbbb7fbd19a93bc27c5e4b9", + "value": "0x8de15026533b1c" + }, + { + "key": "0x5d0e6d7247e0952473d2c3105b5c28d9f349d1131fc1fe6180fce90e638c8eb", + "value": "0x8e04ff5421c7f3" + }, + { + "key": "0x5d1ff1a3106ca278be0ad4336113d7bc65a841e99adf8694bdebbed88081848", + "value": "0x8dd8ea25a5d8cc" + }, + { + "key": "0x5d2e0b7aa7fe3b46501a9ed6724769ac4229a7459dc22036511a1e4800b847b", + "value": "0x1" + }, + { + "key": "0x5d8b5cdb54285f0077509094b9f9e4a16eb0f1d28b3c49e99b451be886fa5ab", + "value": "0x1" + }, + { + "key": "0x5e261f7cc9bfc56d28bdc4e01e110a9f47c8afdfdf976893350d465b05f6a3b", + "value": "0x1" + }, + { + "key": "0x5e5ac122f1bd5cf60b302e661bba571b87047a4232fdb418e9ea5c2d0148157", + "value": "0x1" + }, + { + "key": "0x5ea17cadf9cc312fa00c6a31b76bea87dbc970d903461d1aa5818f274ff93e0", + "value": "0x1" + }, + { + "key": "0x5eb8e1bb6baa45ca2c6192eea33674bc22782a8f63dfd42915ded0631f06182", + "value": "0x1" + }, + { + "key": "0x5ef92b14bd604fa164defb67038b774c831fdef6fd2679490deabdd8bc6b541", + "value": "0x8deb831cba94fc" + }, + { + "key": "0x5f19b0750c2e59be5f24fdbda322eecefaf39089ca31eb241376657106cef04", + "value": "0x1" + }, + { + "key": "0x5f5a37308679b2838b6893a0bb977bc7509b5f31d2b246e0b76c4051e921cdf", + "value": "0x1" + }, + { + "key": "0x5fa1c3e53547ac4f7376415a8a6c28f19c6835630af7fec71c35de17e06d1b1", + "value": "0x8dee49535a0fef" + }, + { + "key": "0x5fe9236c79c9fc8ee7e5efe2646a001eafc9e51711e4f0a9e12342bd12eff72", + "value": "0x1" + }, + { + "key": "0x602947848bc5c77040c8416d3b68103bc37f1c593df4d91f9e3059505ffd940", + "value": "0x1" + }, + { + "key": "0x612fa032a6b469d619750a711aba717c2e86bd2d9f805f7905766f5c5b9428c", + "value": "0x1" + }, + { + "key": "0x61586f90b94364db496927f36aad0359b95222492a0b76058a60f3d168d4a8c", + "value": "0x1" + }, + { + "key": "0x61885371c96c6bdb3340ec1d747fd6b9940e48dbb36e1447be1d58f605d4677", + "value": "0x8df03104cae30e" + }, + { + "key": "0x61a3a43fcdd2c641a858d51d03d574702a5761478c9806f16b076ddcd39b48b", + "value": "0x8decf6f201f338" + }, + { + "key": "0x6260962b86043946be8e838d17d9e2d0ff737dfca64d5e8561bb98c48fda105", + "value": "0x8e02575b8a2c99" + }, + { + "key": "0x62714224de0774c23fa821e1260d25d631c1f52071d02d0d1902752acbef438", + "value": "0x1" + }, + { + "key": "0x627d14dd9e29abd685638cfc7c5895f19688d54c3be1dd8122cb617f58ad4ac", + "value": "0x8df659728f970f" + }, + { + "key": "0x62abb91c7a917b630fead054baf606b06ae8b52eba8a59638ef5b410ef39bd1", + "value": "0x8df9b1d2c9d906" + }, + { + "key": "0x62ac16eef085942eae7fcc4ba7b090f6c6029b9b0fbd6a8df72f49a10e405d5", + "value": "0x1" + }, + { + "key": "0x642489877b663afd825daad8b696c95b6b9c51f71972fd2fb9d3f460b502206", + "value": "0x1" + }, + { + "key": "0x64276354b8fb3897ee3b048f0175eb32547775ac07d2d033f925bc59a678914", + "value": "0x8dee6739ed670c" + }, + { + "key": "0x6470151033e57b681e4919a7a0b2432b0698cb63c06d252c59f0663408ffef4", + "value": "0x8de14acb0f04c0" + }, + { + "key": "0x64c90e8def8cc67aa84f8a97b7a990c56303eb2a3ffe908f68281e0f5ae011c", + "value": "0x8de12604941b98" + }, + { + "key": "0x6502d9596f6ea1c2dfe1ad228ff089b8aebc130b7724d64659293788acd9f46", + "value": "0x1" + }, + { + "key": "0x655923ef3dcc53c4fe43ab00ca279aa2aef7eacf812e63f69db47c65b9c3c84", + "value": "0x1" + }, + { + "key": "0x657634e2fb85b52606bff68bf0f22a9391774f3171fe5c3442112e02c4c772f", + "value": "0x8de46b70f6322c" + }, + { + "key": "0x65c216af08bc9fd8cee995d1d31bce4be924379b59d8be77e67a160536bb053", + "value": "0x1" + }, + { + "key": "0x65c23924ab9005c8f9b47f9fb47ad31f6f562483cd91ba8fe7aaf33b33935cb", + "value": "0x1" + }, + { + "key": "0x65cb3a80531507498bb42246862c4915e9cb69f8b86d336b0889f7342e81d02", + "value": "0x8df3849ad192fa" + }, + { + "key": "0x661a5dae935856372b739cef24c3ec5822042a0aff08549dc200bf2d0b4e490", + "value": "0x8de681c37889dd" + }, + { + "key": "0x66f9f164539a75ea40a1aa64889a4bb90feae902e54e48280dd1ecb7bdcb961", + "value": "0x1" + }, + { + "key": "0x6775caafca32898e237cc3f7d7544105354ba32adbb92421ab09da58be22ab8", + "value": "0x8dd49f7e83c902" + }, + { + "key": "0x689db6c3d42fb77bdde2908e6bfb50ae1a264deb74f011a4033840221ef5f36", + "value": "0x8dfe03b9d44a94" + }, + { + "key": "0x694b96f5139847db506c6d00d72f5009e78bfe89b0ede797cfbe553ebc899fb", + "value": "0x1" + }, + { + "key": "0x69b64b30d9c234022f0a0386a2ee0b05625f0606e3563462361ad2e8f195a54", + "value": "0x1" + }, + { + "key": "0x69badc62f450611ed8fbf0ff1dd698d937e52fded263b51d4a7462fdfe5ecfd", + "value": "0x8df979d9af5767" + }, + { + "key": "0x6a37412c03a9e0a8014f7e8954a7f65a6dcf3b41030ad7be90bb2f0eaeefca2", + "value": "0x8df141c994d44d" + }, + { + "key": "0x6a55f11e3520dbac332bdd0a4f5ff71fc3b945574b2c580c1a1b2449c8591fb", + "value": "0x8dd8fce6437a8c" + }, + { + "key": "0x6a5ef7200647f8cd9720057264f59e24e7d13958b901534bb9009a46e9ef556", + "value": "0x1" + }, + { + "key": "0x6c57b54f74e602b85f35572473257e9cc74f3a1ddd33e4486af4e5b9a9451b9", + "value": "0x1" + }, + { + "key": "0x6cdd012e4760cf720dcd8564aa8ccf25831a07a5f4cfa851c7bd512a7bed05d", + "value": "0x8dfaab9902b89a" + }, + { + "key": "0x6cefe2dd5afb48745543010943eff9c98bc8f1ddc3e689e7383fdb8dcb91fc4", + "value": "0x1" + }, + { + "key": "0x6cf4cdb2c5a49bb36ec0a99d139ae9f6ce15af58d6fd0e1f28ee41f0ef259cb", + "value": "0x1" + }, + { + "key": "0x6d91141570e158b6710992b8d8935d7bcf5829b34a93bdc4b01d27e582a2489", + "value": "0x1" + }, + { + "key": "0x6dafb14967ec9d27cbee417a03b25fb8d89a2521e7ca84495b45dd06f4b7a60", + "value": "0x1" + }, + { + "key": "0x6e7368f7ed09938ec6d33aa889390d8bfbbdc82552e39e51be513e343460b82", + "value": "0x1" + }, + { + "key": "0x6f10ecf24f16095dc3e157aaf80fd21c50f31d687b0254ab52af7266fb1aec1", + "value": "0x1" + }, + { + "key": "0x6f59c62bfc9237d040c9a7724a3abb1ac477817b7beff141fadcf28691f5546", + "value": "0x1" + }, + { + "key": "0x6fa4bdaec9e9e15edbd9fba5d06a6619a34cf1b2d4d5e4d543ad31f34df350f", + "value": "0x1" + }, + { + "key": "0x6fb4cc900c622b8f551ed04ffc05dcc06440c1debdead45a06109a5a10dc99d", + "value": "0x8e05b2cc68a5a2" + }, + { + "key": "0x6fef1326975969712551275cb742c444dfa1a8bf3d28698ddd2b7df883a2d9b", + "value": "0x8df4158991a39f" + }, + { + "key": "0x70a34e992008687439eb7b3d27f9092c2dfd5c746fa91b83c979c1d6e0eedd9", + "value": "0x8df85fd8c28db5" + }, + { + "key": "0x713a84374fd65f5a32f7ad33bf7364f5aa54d4b808b26d67f6df4e3ffbcebe0", + "value": "0x8e0a74d521eb66" + }, + { + "key": "0x7141159d944b50ef836b0562043d480bad37b11c3226c45094459fa6d551450", + "value": "0x8deeed38753172" + }, + { + "key": "0x717af73cab9866eaccb464f20c6860f3b5718d9483f2044946b77a14be5e106", + "value": "0x1" + }, + { + "key": "0x71bbd68db1b1f6308a737d6aea9f3bb98d49fcb83ac81c78f1da660c10ce727", + "value": "0x8dfe61c6bf0a36" + }, + { + "key": "0x71df2acbebfbddfebd5323c4d6187556b4f664c002986262d209b8471e9ea7d", + "value": "0x1" + }, + { + "key": "0x72df145c025ca49a0590e8a2111d79aae5f53d780d7c338014531433fc1c535", + "value": "0x1" + }, + { + "key": "0x7321726c779db8844abc91ac2013f7aeefb3a436203900f46d6b05caf56a5db", + "value": "0x1" + }, + { + "key": "0x742b036cfce90c0f8e905baad06b6fba117da6d411fbb605c0561bd3ebc0d02", + "value": "0x8e02580d724b83" + }, + { + "key": "0x74f3e574355fa1250a1d96df058333bc96646fe308f55764c4bd4470f821d14", + "value": "0x1" + }, + { + "key": "0x74fb3055479b6bb2ec9de7adbb5d2ce148607b1b2ca7be64e65354124afcef4", + "value": "0x1" + }, + { + "key": "0x75775398361d13bce39f7e68bd3d0f86cff2e71a7b9711fec768edddebe0e3e", + "value": "0x8df30d77c579a2" + }, + { + "key": "0x7589b4e29694e3f024fb591ee5f0838d6406f5bb6bd161aab97053c4d885443", + "value": "0x1" + }, + { + "key": "0x76779deada7d3ec92b7d5aca51c07ced4126232cc293aa89f865533ee66b7e4", + "value": "0x8ddce36d8f4762" + }, + { + "key": "0x769fa04e087de09e86833711e816496102b664c25707b6dfda4816e16619c31", + "value": "0x8dc3e4e9d56a35" + }, + { + "key": "0x76bfde9959afdc94a39daf72356597b847c0b2ddfb17ad56a37dff74ea27bb6", + "value": "0x1" + }, + { + "key": "0x77312bd48274bf71c86ac60c05b2b1a94d2287ad7b8de8a12d3201a03f5bc4e", + "value": "0x1" + }, + { + "key": "0x776c150c774b62503b7b74f8a7b9be62c9a3a5843dcae772d9ae4dd5c2ec1b9", + "value": "0x8debd6bcae6ba8" + }, + { + "key": "0x779ff3ce786b1baf0bea8205c51801f6a9204dc12314df41a710cb162b1c2a1", + "value": "0x1" + }, + { + "key": "0x77b25789c4942ecbc9858ac48a01e236dff0968f2adab8ce2faab033f5b3d63", + "value": "0x8dd8bc976fb9d6" + }, + { + "key": "0x77e3c7856dd304278ff93b120e76451dcb9ccf473985294b1b9f728f55adcdb", + "value": "0x8deae7f135bf4f" + }, + { + "key": "0x786079baf35f6e76bed9ad4d338e854f2168631811602b50d2df291185982bf", + "value": "0x1" + }, + { + "key": "0x78fb2bdd4a439f07768894ffd2f161aaa2bc020c5c1169622eba8fe7391bcb0", + "value": "0x8deefa70db01cf" + }, + { + "key": "0x795d5e103b62b3bacf21a67694c52e0a24acfbee84d65ac4d919bec86c09f1b", + "value": "0x8dd1c5de9cc302" + }, + { + "key": "0x79bc20d989a620cb9cde3505b4586cfe02390acef6790223a237baf5880ae09", + "value": "0x1" + }, + { + "key": "0x79e3f144b52d54da7197acc79a2da563aff9360f14da0699da5538f199a4e4c", + "value": "0x1" + }, + { + "key": "0x7a444376af096a7ffa024ff7a31584a85dc7baae556228deb00517c52fd8fb4", + "value": "0x8deaec50316c0e" + }, + { + "key": "0x7ab2990a5d9a9104f4e32744b40b729311fbe7eb7133f75711dca171d3d4d50", + "value": "0x1" + }, + { + "key": "0x7b465dcfc9855260499ba9a6021f7eb03696caae853744f9574b059fef7e22d", + "value": "0x8de65d879976b5" + }, + { + "key": "0x7c31b2d9acff770c5e5fa9f9899830e61d030399a907164753b17f093c74a53", + "value": "0x8de98c1a54703c" + }, + { + "key": "0x7c70358fce864d123b19f4bba61bfa1160e9b56f0c1c78e72fc8cf3de1e7108", + "value": "0x8dd5f00f54f06d" + }, + { + "key": "0x7cc4f3d56f9964311c40a834ab6322e21ff058c8993a2b10a31947793513fcf", + "value": "0x8de587958cc799" + }, + { + "key": "0x7ce952b4b2ba3585ab388c86002610b0ed30add8c3b21c357957198ff858e6b", + "value": "0x8de96919e551d9" + }, + { + "key": "0x7d086bca7aeb680167e9be8dae7f122b7a986328bb47009af4b9933beb84312", + "value": "0x1" + }, + { + "key": "0x7d9764430e9c442e245ff9729efb89aa0b7c453e460404f06cdbdd6fd9e20fe", + "value": "0x8df77c615011a1" + }, + { + "key": "0x7da0a82b3b955a971cc28e6134e29e612130b87b59914261db581d24f5ae07e", + "value": "0x1" + }, + { + "key": "0x7e0875a92a2578f4814a64addb6bf7c01187af2d8f22720364252289983b81d", + "value": "0x8ddaf729f17f63" + }, + { + "key": "0x7e5cfa03e5a5250141f671b578d21e2bb4ee95080cacefc5b523c309ca59c35", + "value": "0x1" + }, + { + "key": "0x7e64f78462e406d8f0bdc79f8e40a8ba82acd9ae221fdc07fb556a5baa1dd5b", + "value": "0x8df92cc5d53311" + }, + { + "key": "0x7e887139891880a283d0379a7c045071c56fd1a51a8a20dff126b94bbf2022c", + "value": "0x1" + }, + { + "key": "0x7f5cded0bb1f4138fe07b7cb88054d1b3c76335d876adad47559100b0a07dab", + "value": "0x1" + }, + { + "key": "0x7fd2d29743040cdbe40dd47a78d9c4b3a48a05b4e42e462a7a0ebbf9886e930", + "value": "0x8ddd424b938376" + }, + { + "key": "0x7fea98501906010712d3fd0275a36f698bf612a38722882e26c70ba2000f693", + "value": "0x1" + } + ], + "0x1": [ + { + "key": "0x9752", + "value": "0x446099625482113f8d7025cf27a20eedce56a96bc3f8547591d22271e4afc12" + } + ] + }, + "nonces": { + "0x6028344c83f128591c5a1905e734c37f6449505087573a54b99891e864ef8f7": "0x45", + "0xa91641858e346eee18cdb5985b97a73eedc7fdc92de8fd3cef0b42bdbc00d3": "0x23", + "0x7b3796a71a75e9d55aad1d46057f6facb3040eaea69d255c6cca52c9124e94c": "0x60", + "0x19994bf4904edd8efa817a79fecb999e7c622f2643aea5d54647c0031d724c6": "0x60", + "0x5ea1cbe943d1a798d02899e2b74b7626b315d2b81febf7b8adf33d8e57dc91": "0x4b", + "0x4c37d767a43169fce247342e46438d0bea2b0d7f4efcd4a4686615e20a7c417": "0x29", + "0x385f7376f9614f368023e004031b50167fcd10b85b9cd45ea52b56c7dc2431f": "0x6c", + "0x3341e828e15b839729b07957cabc597cb6556e61649a0f3bf98578f4b542c9e": "0x40", + "0x6d7caa4818f9d3d4fcc09f69e5c776ad60978fa701d99a6c5a0c70b7b25e1d5": "0x30", + "0x481d6bc11e059a6f76ef7f3967cf22b9a0ad02236c59bfd641076cbf371628": "0x2f", + "0x11f8473d749770009ec91b9e6f723403f9be76e2c93c62919d14989aa9f343d": "0x36", + "0x3a70b8ddcec9d026ff4a3fb2024f7815fd47dcf62716107d34a6ae5ee861e0f": "0x6d", + "0x275c01d887730e6551ff416d8ef128d2a79afcbc244c776c819aefbea1818bb": "0x3f", + "0x41157baa0cd2f7bc1029be65db77a81f97784d3f5aa16f77775d9edbb4cb615": "0x60", + "0x45588fdb74513b42789edc109403dc2c2ac13e1a7bbe19a99d9ec45297f7450": "0x3e", + "0x14169d652eaae2abcfa6fda7c924f8da98566eb1f5f9f33fbf09629ae2b2327": "0x45", + "0x1bf2463473be14da2f0ba583dfe08a8465ba99771450d67599de126fb58da9d": "0x46", + "0x75eacc62294b96b3a09da916ec3e77bc37fa6ab5176e5bbd28aaf588d74baa2": "0x43", + "0x3f9e6e9b92cb5febf0b6b79209a9080a53bc94642b01bfb5fe2b61289f18b2c": "0x35", + "0x4540dc7107f1d6a135b575115091ee56ab13c5cb22a6188a2e7fccda0e009a": "0x5a", + "0x5826e2098829177a40c6b697dedb6b2c24d0378abb5a0dd870a19aef97cb78c": "0x4a", + "0x1d00cc561c943b49f5f2bac27591530a55970c3d0716317ad42b78cd6fb469f": "0x46", + "0x755a7995c1b920ef28e18c4978d73a1c935ce206722c4a8398a1735548abe2d": "0x16", + "0x691301df126b5190e5227b9fd62788723db7b5ea790c4e1da8f85aa6235d46d": "0x53", + "0x7e83c177ff630265eda312465978a679b25f8eb253c000a925fa5f42bb233fe": "0x53", + "0x1a06329b78575c630b343cf559544f84241bc44f3c63bfb013678aa8145215d": "0x7c", + "0x64db11e31dea49ac0945a548fed4b38657452f98f0f29f413062b12873f4afa": "0x2d", + "0x6f4bd4995a3282be1860aca91fe2a498942add440516467aca9da8a1bcf4a41": "0x69", + "0x143e4f7f4f62e00b9a027fc1d1e3e91fb655bb0c68d152a3bd81bee1ea38471": "0x49", + "0x78a19562b686d6cca5841bb192c83795cd8a1d9ffde0c0b4a53cb004575818b": "0x7c", + "0x13d16147f8cd04b852cfdab7107c6cb96de2bfa2a020b22694e8067c87eaacf": "0x41", + "0x5b574462c662b90b11ce7c5750ac6b71d21d5b84c62a6085220557f3e54c14": "0x49", + "0x21bf47cfe73804095e3e1b25e656ca2ca9787651de3e69c9950943f501e30ce": "0x2c", + "0x46e53968a2b5fe68b9b0d6ba6d8a475211b845759822e9161e3cea1afbb1c5f": "0x37", + "0x3dda73cf3d5558a6e785f54cc6e7207b0173f0cc3cce20f64992566ee734d7a": "0x4e", + "0xd9def9409244513635be50767308e1c80a10bb5d116efdf78b9de36620bcbb": "0x24", + "0x59c0424db8476a9d158e52848aea567f806afcb99141b8ef0a543758db2ce60": "0x65", + "0x3732d673d40f828b64bfc85236012ce2c280d3c936aacfb8104f7d4c8c74bb0": "0x3a", + "0x1c23816c01bfbd90fd57873025b4d5b86ee2cccfbad90d3a7fa25dc569638cf": "0x64", + "0x200c519983a0104346afba82a2dc4eccd4a4373aa70a13316626e932cb6e58d": "0x52", + "0x2ec59285aa2e4cbfefaddc331f3d876f207aed3b028f5b62957b0a464f92918": "0x46", + "0x5726d58c2c6bc370074cb67581d03cab05e1304365ca0ee9f4ebf3faade40c4": "0x42", + "0x9b0e317d0bc8a7d797d9a4575dad53eccf44b671c0591c7ba82f5804d12985": "0x40", + "0x2655cd6a02dcc25554bdddc055f304c84bb130828e1b162c82958bbc92dfee": "0x60", + "0x1e6da06bc1d877fb69dd4110f38f0e5a206174c57305df51653141381aaaf43": "0x35", + "0x2390a4d84cf00928adf4058ff1f15c8fe615ccaa3ccc1cd9b571d8be7ae806a": "0x3b", + "0x451d8a5c0ea89978d07a24ac6c594e1f0b57ca0a141ba357d8e169fd73151a3": "0x24", + "0x689549c1747f38f450a34084202987ae19adc553d7ce10c3d5136ed8f768334": "0x43", + "0x350e280198d66aaecfeeb902b02089e026bc792f5ddfb88b04ebc92218f8fcb": "0x24", + "0x67e4d23e57541aa5d087eb95ec42bff6a9feadb0ca6dece4b60cb6e9b8c1970": "0x41", + "0xba1224bab4ce060da0b89da3294a672ffd0b4c313430b67aa6397510739502": "0x2a", + "0x40de1d323a5870a9b1011b1476bfd58f92a35ba59b1f9f3c69cb083fcba122a": "0x51", + "0x15bab3e51c95b9d58b038c49fcbd26d6e163cafd66d2f2cccfce75cee26b762": "0x2f", + "0xe04c9e37787de848379c7898612cde59fbf95ec633deeea3e34e81f1d7df56": "0x19", + "0x57dfd6da6e2abc9b831a908fe8d4ef45fe2830c3ea287ec2341c4bd88046574": "0x41", + "0x33128bd86065b89665dccf20b8224238a3f169cc2aa63ea3de1d4e1b4431db0": "0x2d", + "0x5f34cd49c033df5b7d3da352020e839e88ca2c28025e25f70a6a485d68fc0ea": "0x46", + "0x87b5c2536abec4170cd59c7ad72798d6dd22bf2a77cb5d36cb68876d59d258": "0x14", + "0x6075da58eeaeb2c380b51f5115dfcafbafc70ea16a200175ad50937d50cbc3d": "0x2a", + "0x6bf239cfd8ddfb4edacc070a23929b9b2522585548656ed1de1033d1765b25c": "0x3e", + "0x49872eb6a8d0b7336f6577bbefdd1667fc0ed6f6df6509a6b52d62048a38fc6": "0x45", + "0x6fe8b5ce08982b6ee4321997594e23a9637fe0d45bfd5b5d718695f08b38a72": "0x47", + "0x4dde2846e7cce0c39e57113809340c87421454d8d7c48167a7a2db9d0ef7067": "0x41", + "0x58643681bd6dbef6bcf4828660ddeec18f3d669b12ec626f14092306fe80e99": "0x64", + "0x2cbd65c97f07d4b0830802c819049523e1b8d30cc0bf8d4246df94854faa766": "0x4d", + "0xc24b71d1cdb836ea2a8a5d364fb9131c44fd4e15d1129f2233e3dbcdfe855c": "0x4f", + "0x6804962ed2a44ddd07ad2931838b13ebc114b3e7f91b220fee99a5aca96e83b": "0x42", + "0x36b39a015dc8b78a90ebc74d8f98a7b5a6cdc718118014291966650d6df65": "0x37", + "0x594a6c429ca64604465758db99ef286d5c00d847c8072fec3ff5f0e6b65cf64": "0x35", + "0x4c7fbf3010747ded03b3cbd0a8bfb888cdeb9080a06f5d0d1e32e36473ac5ac": "0x21", + "0x79b0d5fe892237bcdc0979892a9b2790f23781d41aaa8adf351c7980c8b65": "0x2c", + "0x7b4ca69e72ffdbb43edb9266a3ce13b385e714e06f6aee2d7f2215b405f6a9a": "0x69", + "0x176c25d47570070342b173716432127caf510d2b00189a3d8c9c0266297ec30": "0x3c", + "0x73f94dad20c07abaa57a278d02d169b48882bce673c421251686075a986db83": "0x5a", + "0x51d568676ce46d5f9a0d7c23c7c72cdb8536f38d74b3138f3cb9acae98b074d": "0x4e", + "0x40a560ccc59fff23ec01af1087d97bab10001e48e0fb493bec9c4c7e6831cbd": "0x5a", + "0x5032f6bd44ec915ff81e2a450cf2dcd1e28534d804ea9cd38d186dc64c1ce80": "0x4f", + "0x401930eb5465af9c93f63defae98fa9ededf374a901f24f1210a150923d10f7": "0x20", + "0x2b24cb0ac3991cb6362f305bb241e0e874784d44e89d08859536270a29a3799": "0x2e", + "0x20f2f2964d6cb9859f1d264e759fe089eec481f131defb7137878c36478bc9": "0x3a", + "0x34535ded79eb990827817ffa6c14988cd29970cd3cb4d5943684335f8360720": "0x5a", + "0x63e18fe7f3cb5a5194204ba9107a7f425c503c6adef0b686127b14bdeb5d302": "0x39", + "0x7b3f54f0755766215caa99b8ce31250020050ac00bdbdc25bbeb1cf5035388c": "0x2b", + "0x708610e23e4fff8c6434eefadcc284215b0ca10c5b2530d784a547ab7ba6c1e": "0x46", + "0x4bad3730634830da8c2cea36bc8c0103c47a074f259edd5aba3852e1245a9bc": "0x66", + "0x1d751f8d431c913531632cdaee1f2598821304cdb401170a91c76f0d5919a9e": "0x54", + "0x1862d76a292338a2634814f9f2ecb90684c52e1c3f600388865df686cf4e54a": "0x52", + "0x77845f6d3bebb7c5e30619c191333c3cae03565c2d367fe68bf73dfe1197bb9": "0x59", + "0x4e17f08446389b5cd0df8953acf3a0f2f6a6b2a80abd762b0101e7c6c103157": "0x2e", + "0x247d1a8c411f2a456bc8a538fcf23efbd493c71b73f7421a8a4657147a59609": "0x76", + "0x4102dafaf51f5e6c854259a48f6ccde4fac083d2dec07e784c5c38e7c6e9a8d": "0x38", + "0x3acd1c7261d5bda1736a89318f1b662d1ff804ba44a0c510cd2832156bc4a6f": "0x63", + "0x4a724a4229813f34e274837684c652260f7621f76e9457942f05cb59fe4469d": "0x23", + "0x71a161b38b1229d32ae61b14a2f44bdc73e6664ff8b3a4184f66abca2735fdf": "0x2d", + "0x3c875403ce3066337b984c541ecb4f47557e421e859816e65bc85a402abeda9": "0x4c", + "0x7707b0c961121ae62f4ef63605121041f2754bb095e682a4544b021aee7e2b3": "0x6b", + "0x6c55ba1f4efe13d3eb06441582c3aef616542be06363571d970ecbceb893de2": "0x37", + "0xe2fce66497ffbc0b04f6d1c27eec2f8da3c4b7ac78a24cab67595644173eed": "0x53", + "0x2333f8254e3d2a9f527f4ed292f0f84b35af2dac6c0e664691ed48c7251ecd": "0x32", + "0x5c4f4e4ae30a422a1b735b38c52bdf5739ad64b2f95492ab6ccd93b4f6be2df": "0x3c", + "0x66a981c57e4253cf8d24eaaed89f7719c9a697be3b41a0371b24c8fc00a1cad": "0x3d", + "0x73ea2bf4f84c4ef4f95f6a5a03af3317277deb63039330d881ea20e33d0738c": "0x36", + "0x6be5a0624172c2f0a3d116d03a861375e023f340caaa6363854c9ae4a460f5": "0x32", + "0x104745966fa5cd518bab10b5f1a741f4a3435d7d9b060b8a11778cb36fcb574": "0x55", + "0x48cd92c018be0434daffcbcbcd6722aceda59a54ad1efe411fec777f41f8caf": "0x45", + "0xa0e0c780524827e8f094bf8c199269f06f86309d30c65af0f7dac6968de3c3": "0x5a", + "0x12e4dfa71ee52225ff301eb69e2fc08fbc001b0821578be07648a7ea493021f": "0x64", + "0x541b4a8bb25092e7a52dbe8f07810e5c9efcb2774d52b567845fe8d3dc3c92a": "0x26", + "0x2ec71fc858681fa0cca225185a86060926a9bfd338d749f256910d415770d1d": "0x51", + "0x10bd0687cdf260d35210af52a93a9712d51a403868a103e91e491eaf17973cd": "0x19", + "0x253b4898f783590539e8ff61faee36bbe6f4022af6f5742fd80ed8a609d8cea": "0x4a", + "0x77c28f25bc25bd5207ab10317a8ad029b560f22d77b3492cc910236a2ce1278": "0x3a", + "0x768a45776c6e33860c802ea8b6f69170b275d576ff5ea0b6ed54c7b0da443e9": "0x36", + "0x273d24a6e32e7dc5531d7e1d17df2b2f91b7c50da2c9142a78c02de878cdd5f": "0x34", + "0x688e05ac8427736a7bc419f86ad7a90ea6157d2d82ed30f09149b18c97a2391": "0x35", + "0x2f50b3c524482dfd39d8236ea2c114df8d8fd907711584de81eddbeca7b7921": "0x42", + "0x3fd8c55203651e0b3c6cac235b8b489b0a302731691e1c4b860b7dc41a6d6be": "0x3f", + "0xcc4c8e4096a5dc1b161bde1c0207c34f82f4c0195cd428253f1baed6308d5a": "0x47", + "0x1835c7d07311634fe0abc0e12897de6de8420f56fc0e9e1cf0550a71c31f7da": "0x5d", + "0x3b02187b88b06e6993158e652acc2836e15b6f0a95d4abf74891334b462f741": "0x20", + "0x2709f3ff0b285074ffbebef3078d2ccd7d26d0fd7bcd4422d8ceb5e9a6a40ff": "0x4e", + "0x22ccb773bb8c536d70c99ad4be229b6425be5e8014a1330c72495760d2f4b60": "0x1d", + "0x12b01545b7bbd20fcdffb03575a25cad0b30698ad7ad4781be1221f554f4741": "0x47", + "0x17fb33a9db88d0e4e3b382dad1733522ec8024647716f463066bedbb490978d": "0x43", + "0x11e0a33ad5c43d5bd2f7f0ccc2b66f591c6c908910c1f2f377c6f586a458eb0": "0x3a", + "0x500eb16558214463a5c37ac189e1b12443e97a3bdf89ec0c0c4986376bfb00f": "0x6c", + "0x47666c862e5e3db0e5a43aafd2d1ba5b1e8eb498ea5b42ebc6cd01ee3a16609": "0x34", + "0x3591c61d75a1d75ee576d70a366138be4c288034605022086e8abd6cc6a282a": "0x69", + "0x43438d30a486df0100bfb40f7dddbdcf9b9c21f2079ae785a22b2816d09d842": "0x41", + "0x56ffd7a92298ef76ddbd31936c19c23d29edc2f34207f1b0b5b270aa511d8d5": "0x7e", + "0x5112b78113307795cf45051a65e9d2b535a236cb8ff8a93b9f4f460357b705b": "0x32", + "0x6133eb7e32610962c067accae847789b414e52ef69407bcda0dbc4e0562235e": "0x59", + "0x5aa0c4b6d10882180ed3bf70dc5bb99fad462fb926c251329f4c0f997cd5ae9": "0x53", + "0x6ae831431e8fa2128b079844633e084604422d63b7f1ad1a79fb81e37447463": "0x5b", + "0x524987ff394990a95fa0015a8eb66e61ff9f8626291dedd4f7d50a5f020f797": "0x47", + "0x2e19f222ead0bc05ad25d190bf89a63ecabf82f53f7d6bf383d05553acaf123": "0x4a", + "0x309e46e00ee3cfb4d1bd1f42267126cfc9b7c501f439a9c60093330c7e0cfa9": "0x6f", + "0x7d3644f1c8cc3d0fde11a7c69ccdd59e392199be927e2e283d21b5445357ab1": "0x13", + "0x38f5a14f93aa2041cbab6a0a2eb909f268a10be56addc697592c87c68eed875": "0x67", + "0x6a4213ccb648d4cc272690144073efdb184bc5c0253f798973666761b231827": "0x22", + "0x115f012bd02db4cad77f3fb19bea28087d03a4d03f965781711cd9a9379d100": "0x12", + "0x9a747a346243aff99283048beabf09c2ef25bfbbc8a177945f3a0eab0d3882": "0x31", + "0x384152c373546b914f69e6c011747c08c519c3f43a4dc4b4b51849ca0e99ded": "0x13", + "0x1624d229b7b2733f0e4f72f205ab058c0b247045ff371aa5a7aa95a7a037906": "0x31", + "0x1b7e553d9d69a2a1fcf9ae3a72bd41bac0ae603acc77c783ae58bf1ba08b80c": "0x43", + "0x13372661462e9437e3be7442c0bb7f0a28642510ec3879927eebfdaa11c6b64": "0x7e", + "0x1050347b94b0cbce9abe2ceab62f47257071169a4ab22b4fb67f3a731e0b486": "0x24", + "0x9529b7734deb881652cb0903f26875b01134cb0b091822f85edc697164e7d1": "0x31", + "0x72a90329f10cca92a43cb8014ea168049ee3e1b9013638afa026a4671863ca1": "0x43", + "0x46388b18ad7cd2514d20b64c07904b351d313f9b185eb864e9cef8a129a9db0": "0x44" + }, + "deployed_contracts": [], + "old_declared_contracts": [], + "declared_classes": [], + "replaced_classes": [] + } +} \ No newline at end of file diff --git a/core/block.go b/core/block.go index dcf200aebb..482972d870 100644 --- a/core/block.go +++ b/core/block.go @@ -4,9 +4,9 @@ import ( "encoding/binary" "errors" "fmt" - "github.com/Masterminds/semver/v3" "slices" + "github.com/Masterminds/semver/v3" "github.com/NethermindEth/juno/core/crypto" "github.com/NethermindEth/juno/core/felt" "github.com/NethermindEth/juno/utils" @@ -73,6 +73,8 @@ type BlockCommitments struct { // VerifyBlockHash verifies the block hash. Due to bugs in Starknet alpha, not all blocks have // verifiable hashes. +// +//nolint:gocyclo func VerifyBlockHash(b *Block, network *utils.Network, stateDiff *StateDiff) (*BlockCommitments, error) { if len(b.Transactions) != len(b.Receipts) { return nil, fmt.Errorf("len of transactions: %v do not match len of receipts: %v", @@ -186,7 +188,6 @@ func pre07Hash(b *Block, chain *felt.Felt) (*felt.Felt, *BlockCommitments, error ), &BlockCommitments{TransactionCommitment: txCommitment}, nil } -//nolint:unused func Post0132Hash(b *Block, stateDiffLen uint64, stateDiffHash *felt.Felt) (*felt.Felt, *BlockCommitments, error) { seqAddr := b.SequencerAddress // todo override support? diff --git a/core/block_test.go b/core/block_test.go index 29ae17981e..f5e3cb6e57 100644 --- a/core/block_test.go +++ b/core/block_test.go @@ -2,9 +2,7 @@ package core_test import ( "context" - "encoding/binary" "fmt" - "github.com/ethereum/go-ethereum/common" "testing" "github.com/NethermindEth/juno/clients/feeder" @@ -246,78 +244,79 @@ func TestBlockHash(t *testing.T) { }) } -type txData struct { - hash *felt.Felt - version *core.TransactionVersion - signatures []*felt.Felt -} - -func (t txData) Hash() *felt.Felt { - return t.hash -} - -func (t txData) Signature() []*felt.Felt { - return t.signatures -} - -func (t txData) TxVersion() *core.TransactionVersion { - return t.version -} - -func TestPost0132Hash(t *testing.T) { - txHash := new(felt.Felt).SetUint64(1) - - block := &core.Block{ - Header: &core.Header{ - Number: 1, - GlobalStateRoot: new(felt.Felt).SetUint64(2), - SequencerAddress: new(felt.Felt).SetUint64(3), - Timestamp: 4, - L1DAMode: core.Blob, - ProtocolVersion: "10", - GasPrice: new(felt.Felt).SetUint64(7), - GasPriceSTRK: new(felt.Felt).SetUint64(6), - L1DataGasPrice: &core.GasPrice{ - PriceInFri: new(felt.Felt).SetUint64(10), - PriceInWei: new(felt.Felt).SetUint64(9), - }, - ParentHash: new(felt.Felt).SetUint64(11), - TransactionCount: 1, - EventCount: 0, - }, - Transactions: []core.Transaction{ - txData{ - hash: txHash, - signatures: []*felt.Felt{ - new(felt.Felt).SetUint64(2), - new(felt.Felt).SetUint64(3), - }, - }, - }, - Receipts: []*core.TransactionReceipt{ - { - Fee: new(felt.Felt).SetUint64(99804), - L2ToL1Message: []*core.L2ToL1Message{ - createL2ToL1Message(34), - createL2ToL1Message(56), - }, - TransactionHash: txHash, - Reverted: true, - RevertReason: "aborted", - TotalGasConsumed: &core.GasConsumed{ - L1Gas: 16580, - L1DataGas: 32, - }, - }, - }, - } - - h, err := core.Post0132Hash(block, 10, utils.HexToFelt(t, "0x281f5966e49ad7dad9323826d53d1d27c0c4e6ebe5525e2e2fbca549bfa0a67")) - require.NoError(t, err) - - expected := utils.HexToFelt(t, "0x061e4998d51a248f1d0288d7e17f6287757b0e5e6c5e1e58ddf740616e312134") - assert.Equal(t, expected, h) -} +// type txData struct { +// hash *felt.Felt +// version *core.TransactionVersion +// signatures []*felt.Felt +//} +// +// func (t txData) Hash() *felt.Felt { +// return t.hash +//} +// +// func (t txData) Signature() []*felt.Felt { +// return t.signatures +//} +// +// func (t txData) TxVersion() *core.TransactionVersion { +// return t.version +//} +// +// func TestPost0132Hash(t *testing.T) { +// txHash := new(felt.Felt).SetUint64(1) +// +// block := &core.Block{ +// Header: &core.Header{ +// Number: 1, +// GlobalStateRoot: new(felt.Felt).SetUint64(2), +// SequencerAddress: new(felt.Felt).SetUint64(3), +// Timestamp: 4, +// L1DAMode: core.Blob, +// ProtocolVersion: "10", +// GasPrice: new(felt.Felt).SetUint64(7), +// GasPriceSTRK: new(felt.Felt).SetUint64(6), +// L1DataGasPrice: &core.GasPrice{ +// PriceInFri: new(felt.Felt).SetUint64(10), +// PriceInWei: new(felt.Felt).SetUint64(9), +// }, +// ParentHash: new(felt.Felt).SetUint64(11), +// TransactionCount: 1, +// EventCount: 0, +// }, +// Transactions: []core.Transaction{ +// txData{ +// hash: txHash, +// signatures: []*felt.Felt{ +// new(felt.Felt).SetUint64(2), +// new(felt.Felt).SetUint64(3), +// }, +// }, +// }, +// Receipts: []*core.TransactionReceipt{ +// { +// Fee: new(felt.Felt).SetUint64(99804), +// L2ToL1Message: []*core.L2ToL1Message{ +// createL2ToL1Message(34), +// createL2ToL1Message(56), +// }, +// TransactionHash: txHash, +// Reverted: true, +// RevertReason: "aborted", +// ExecutionResources: +// TotalGasConsumed: &core.GasConsumed{ +// L1Gas: 16580, +// L1DataGas: 32, +// }, +// }, +// }, +// } +// +// h, err := core.Post0132Hash(block, 10, utils.HexToFelt(t, "0x281f5966e49ad7dad9323826d53d1d27c0c4e6ebe5525e2e2fbca549bfa0a67")) +// require.NoError(t, err) +// +// expected := utils.HexToFelt(t, "0x061e4998d51a248f1d0288d7e17f6287757b0e5e6c5e1e58ddf740616e312134") +// assert.Equal(t, expected, h) +//} func TestBlockHashP2P(t *testing.T) { mainnetGW := adaptfeeder.New(feeder.NewTestClient(t, &utils.Mainnet)) @@ -333,23 +332,23 @@ func TestBlockHashP2P(t *testing.T) { }) } -func TestConcatCounts(t *testing.T) { - result := core.ConcatCounts(4, 3, 2, core.Blob) - expected := utils.HexToFelt(t, "0x0000000000000004000000000000000300000000000000028000000000000000") - - assert.Equal(t, expected, result) -} - -func createL2ToL1Message(seed uint64) *core.L2ToL1Message { - addrBytes := make([]byte, 8) - binary.BigEndian.PutUint64(addrBytes, seed+1) - - return &core.L2ToL1Message{ - From: new(felt.Felt).SetUint64(seed), - To: common.BytesToAddress(addrBytes), - Payload: []*felt.Felt{ - new(felt.Felt).SetUint64(seed + 2), - new(felt.Felt).SetUint64(seed + 3), - }, - } -} +// func TestConcatCounts(t *testing.T) { +// result := core.ConcatCounts(4, 3, 2, core.Blob) +// expected := utils.HexToFelt(t, "0x0000000000000004000000000000000300000000000000028000000000000000") +// +// assert.Equal(t, expected, result) +//} +// +// func createL2ToL1Message(seed uint64) *core.L2ToL1Message { +// addrBytes := make([]byte, 8) +// binary.BigEndian.PutUint64(addrBytes, seed+1) +// +// return &core.L2ToL1Message{ +// From: new(felt.Felt).SetUint64(seed), +// To: common.BytesToAddress(addrBytes), +// Payload: []*felt.Felt{ +// new(felt.Felt).SetUint64(seed + 2), +// new(felt.Felt).SetUint64(seed + 3), +// }, +// } +//} diff --git a/core/receipt_pkg_test.go b/core/receipt_pkg_test.go index e6aadae54b..c2f9da121e 100644 --- a/core/receipt_pkg_test.go +++ b/core/receipt_pkg_test.go @@ -14,8 +14,13 @@ import ( func TestReceiptHash(t *testing.T) { t.Run("with gas_consumed", func(t *testing.T) { receipt := &TransactionReceipt{ - Fee: new(felt.Felt).SetUint64(99804), - ExecutionResources: nil, + Fee: new(felt.Felt).SetUint64(99804), + ExecutionResources: &ExecutionResources{ + TotalGasConsumed: &GasConsumed{ + L1Gas: 16580, + L1DataGas: 32, + }, + }, L2ToL1Message: []*L2ToL1Message{ createL2ToL1Message(34), createL2ToL1Message(56), @@ -23,10 +28,6 @@ func TestReceiptHash(t *testing.T) { TransactionHash: new(felt.Felt).SetUint64(1234), Reverted: true, RevertReason: "aborted", - TotalGasConsumed: &GasConsumed{ - L1Gas: 16580, - L1DataGas: 32, - }, } hash, err := receipt.Hash() @@ -58,8 +59,13 @@ func TestReceiptHash(t *testing.T) { func TestReceiptCommitment(t *testing.T) { receipt := &TransactionReceipt{ - Fee: new(felt.Felt).SetUint64(99804), - ExecutionResources: nil, + Fee: new(felt.Felt).SetUint64(99804), + ExecutionResources: &ExecutionResources{ + TotalGasConsumed: &GasConsumed{ + L1Gas: 16580, + L1DataGas: 32, + }, + }, L2ToL1Message: []*L2ToL1Message{ createL2ToL1Message(34), createL2ToL1Message(56), @@ -67,10 +73,6 @@ func TestReceiptCommitment(t *testing.T) { TransactionHash: new(felt.Felt).SetUint64(1234), Reverted: true, RevertReason: "aborted", - TotalGasConsumed: &GasConsumed{ - L1Gas: 16580, - L1DataGas: 32, - }, } hash, err := receipt.Hash() diff --git a/core/state_update.go b/core/state_update.go index 13ab01e345..f90e206419 100644 --- a/core/state_update.go +++ b/core/state_update.go @@ -2,6 +2,7 @@ package core import ( "fmt" + "slices" "sort" "github.com/NethermindEth/juno/core/crypto" @@ -51,38 +52,91 @@ func (d *StateDiff) Length() uint64 { } func (d *StateDiff) Hash() *felt.Felt { - prefixHash, err := new(felt.Felt).SetString("STARKNET_STATE_DIFF0") - if err != nil { - // shouldn't happen - panic(err) - } + var digest crypto.PoseidonDigest + + digest.Update(new(felt.Felt).SetBytes([]byte("STARKNET_STATE_DIFF0"))) - hashElems := []*felt.Felt{prefixHash} + // updated_contracts = deployedContracts + replacedClasses + // Digest: [number_of_updated_contracts, address_0, class_hash_0, address_1, class_hash_1, ...]. + numOfUpdatedContracts := uint64(len(d.DeployedContracts) + len(d.ReplacedClasses)) + digest.Update(new(felt.Felt).SetUint64(numOfUpdatedContracts)) - // updated contracts - numOfUpdatedContracts := len(d.DeployedContracts) + len(d.ReplacedClasses) - hashElems = append(hashElems, new(felt.Felt).SetUint64(uint64(numOfUpdatedContracts))) - // todo sort - for addr, classHash := range d.DeployedContracts { - hashElems = append(hashElems, &addr, classHash) + // The sequencer guarantees that a contract cannot be: + // - deployed twice, + // - deployed and have its class replaced in the same state diff, or + // - have its class replaced multiple times in the same state diff. + updatedContracts := make(map[felt.Felt]*felt.Felt) + for k, v := range d.DeployedContracts { + updatedContracts[k] = v } - // todo sort - for addr, classHash := range d.ReplacedClasses { - hashElems = append(hashElems, &addr, classHash) + for k, v := range d.ReplacedClasses { + updatedContracts[k] = v + } + + sortedUpdatedContractsHashes := sortedFeltKeys(updatedContracts) + for _, hash := range sortedUpdatedContractsHashes { + digest.Update(&hash, updatedContracts[hash]) } // declared classes - numOfDeclaredClasses := len(d.DeclaredV1Classes) - hashElems = append(hashElems, new(felt.Felt).SetUint64(uint64(numOfDeclaredClasses))) - for classHash, compiledClasshash := range d.DeclaredV1Classes { - hashElems = append(hashElems, &classHash, compiledClasshash) + // Digest: [number_of_declared_classes, class_hash_0, compiled_class_hash_0, class_hash_1, compiled_class_hash_1, + // ...]. + numOfDeclaredClasses := uint64(len(d.DeclaredV1Classes)) + digest.Update(new(felt.Felt).SetUint64(numOfDeclaredClasses)) + + sortedDeclaredV1ClassHashes := sortedFeltKeys(d.DeclaredV1Classes) + for _, classHash := range sortedDeclaredV1ClassHashes { + digest.Update(&classHash, d.DeclaredV1Classes[classHash]) + } + + // deprecated_declared_classes + // Digest: [number_of_old_declared_classes, class_hash_0, class_hash_1, ...]. + numOfDeclaredV0Classes := uint64(len(d.DeclaredV0Classes)) + digest.Update(new(felt.Felt).SetUint64(numOfDeclaredV0Classes)) + + // Todo: consider make a copy of d.DeclaredV0Classes? + slices.SortFunc(d.DeclaredV0Classes, func(a, b *felt.Felt) int { return a.Cmp(b) }) + digest.Update(d.DeclaredV0Classes...) + + // Placeholder values + digest.Update(new(felt.Felt).SetUint64(1), new(felt.Felt).SetUint64(0)) + + // storage_diffs + // Digest: [ + // number_of_updated_contracts, + // contract_address_0, number_of_updates_in_contract_0, key_0, value0, key1, value1, ..., + // contract_address_1, number_of_updates_in_contract_1, key_0, value0, key1, value1, ..., + // ] + numOfStorageDiffs := uint64(len(d.StorageDiffs)) + digest.Update(new(felt.Felt).SetUint64(numOfStorageDiffs)) + + sortedStorageDiffAddrs := sortedFeltKeys(d.StorageDiffs) + for _, addr := range sortedStorageDiffAddrs { + digest.Update(&addr) + + sortedDiffKeys := sortedFeltKeys(d.StorageDiffs[addr]) + digest.Update(new(felt.Felt).SetUint64(uint64(len(sortedDiffKeys)))) + + for _, k := range sortedDiffKeys { + digest.Update(&k, d.StorageDiffs[addr][k]) + } + } + + // nonces + // Digest: [number_of_updated_contracts nonces, contract_address_0, nonce_0, contract_address_1, nonce_1, ...] + numOfNonces := uint64(len(d.Nonces)) + digest.Update(new(felt.Felt).SetUint64(numOfNonces)) + + sortedNoncesAddrs := sortedFeltKeys(d.Nonces) + for _, addr := range sortedNoncesAddrs { + digest.Update(&addr, d.Nonces[addr]) } /*Poseidon( - "STARKNET_STATE_DIFF0", deployed_contracts, declared_classes, deprecated_declared_classes, + "STARKNET_STATE_DIFF0", deployed_contracts_and_replaced_classes, declared_classes, deprecated_declared_classes, 1, 0, storage_diffs, nonces )*/ - return crypto.PoseidonArray(hashElems...) + return digest.Finish() } func (d *StateDiff) Commitment() *felt.Felt { diff --git a/core/state_update_test.go b/core/state_update_test.go index 7cecfb9a4c..e50a6cf522 100644 --- a/core/state_update_test.go +++ b/core/state_update_test.go @@ -44,6 +44,39 @@ func TestStateDiffCommitment(t *testing.T) { } } +func TestStateDiffHash(t *testing.T) { + client := feeder.NewTestClient(t, &utils.SepoliaIntegration) + gw := adaptfeeder.New(client) + + for _, test := range []struct { + blockNum uint64 + expected string + }{ + { + blockNum: 37500, + expected: "0x114e85f23a3dc3febd8dccb01d701220dbf314dd30b2db2c649edcd4bc35b2b", + }, + { + blockNum: 35748, + expected: "0x23587c54d590b57b8e25acbf1e1a422eb4cd104e95ee4a681021a6bb7456afa", + }, + { + blockNum: 35749, + expected: "0x323feeef51cadc14d4a025eb541227b177f69d1e6052854de262ca5e18055a1", + }, + { + blockNum: 38748, + expected: "0x2bb5df3dccd80b8eb8ad3f759b0ba045d467a79f032605d35380c87f8e730be", + }, + } { + t.Run(fmt.Sprintf("blockNum_%d", test.blockNum), func(t *testing.T) { + su, err := gw.StateUpdate(context.Background(), test.blockNum) + require.NoError(t, err) + assert.Equal(t, utils.HexToFelt(t, test.expected), su.StateDiff.Hash()) + }) + } +} + func TestStateDiffLength(t *testing.T) { client := feeder.NewTestClient(t, &utils.Sepolia) gw := adaptfeeder.New(client) diff --git a/core/transaction_test.go b/core/transaction_test.go index b6e99da585..f6c44218d9 100644 --- a/core/transaction_test.go +++ b/core/transaction_test.go @@ -351,19 +351,19 @@ func TestDeclareV0TransactionHash(t *testing.T) { assert.Equal(t, expectedHash, got) } -func TestTransactionCommitmentPoseidon(t *testing.T) { - data := txData{ - hash: new(felt.Felt).SetUint64(1), - signatures: []*felt.Felt{ - new(felt.Felt).SetUint64(2), - new(felt.Felt).SetUint64(3), - }, - } - transactions := []core.Transaction{data, data} - - h, err := core.TransactionCommitmentPoseidon(transactions) - require.NoError(t, err) - - expected := utils.HexToFelt(t, "0x0282b635972328bd1cfa86496fe920d20bd9440cd78ee8dc90ae2b383d664dcf") - assert.Equal(t, expected, h) -} +// func TestTransactionCommitmentPoseidon(t *testing.T) { +// data := txData{ +// hash: new(felt.Felt).SetUint64(1), +// signatures: []*felt.Felt{ +// new(felt.Felt).SetUint64(2), +// new(felt.Felt).SetUint64(3), +// }, +// } +// transactions := []core.Transaction{data, data} +// +// h, err := core.TransactionCommitmentPoseidon(transactions) +// require.NoError(t, err) +// +// expected := utils.HexToFelt(t, "0x0282b635972328bd1cfa86496fe920d20bd9440cd78ee8dc90ae2b383d664dcf") +// assert.Equal(t, expected, h) +//} diff --git a/node/node.go b/node/node.go index 590ce42968..6a20829e89 100644 --- a/node/node.go +++ b/node/node.go @@ -4,7 +4,6 @@ import ( "context" "errors" "fmt" - "github.com/NethermindEth/juno/core" "net/url" "reflect" "runtime" @@ -14,6 +13,7 @@ import ( "github.com/NethermindEth/juno/blockchain" "github.com/NethermindEth/juno/clients/feeder" "github.com/NethermindEth/juno/clients/gateway" + "github.com/NethermindEth/juno/core" "github.com/NethermindEth/juno/db" "github.com/NethermindEth/juno/db/pebble" "github.com/NethermindEth/juno/db/remote" diff --git a/starknet/block.go b/starknet/block.go index 18a4a5c8ef..b2ec831661 100644 --- a/starknet/block.go +++ b/starknet/block.go @@ -14,6 +14,9 @@ type Block struct { StateRoot *felt.Felt `json:"state_root"` TransactionCommitment *felt.Felt `json:"transaction_commitment"` EventCommitment *felt.Felt `json:"event_commitment"` + ReceiptCommitment *felt.Felt `json:"receipt_commitment"` + StateDiffcommitment *felt.Felt `json:"state_diff_commitment"` + StateDiffLength uint64 `json:"state_diff_length"` Status string `json:"status"` Transactions []*Transaction `json:"transactions"` Timestamp uint64 `json:"timestamp"` From 233a57872c52848faa257e2a953dde4eaec8059c Mon Sep 17 00:00:00 2001 From: IronGauntlets Date: Tue, 30 Jul 2024 05:22:08 +0100 Subject: [PATCH 19/28] Fix transaction commitment --- blockchain/blockchain.go | 4 ++-- core/block.go | 19 +++++++++++++------ core/transaction.go | 14 +++++++++----- 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/blockchain/blockchain.go b/blockchain/blockchain.go index bb5594d5cd..ee2411c471 100644 --- a/blockchain/blockchain.go +++ b/blockchain/blockchain.go @@ -340,8 +340,8 @@ func (b *Blockchain) Store(block *core.Block, blockCommitments *core.BlockCommit if err := verifyBlock(txn, block); err != nil { return err } - return errors.New("temp error") - if err := core.NewState(txn).Update(block.Number, stateUpdate, newClasses); err != nil { //nolint:govet + + if err := core.NewState(txn).Update(block.Number, stateUpdate, newClasses); err != nil { return err } if err := StoreBlockHeader(txn, block.Header); err != nil { diff --git a/core/block.go b/core/block.go index 482972d870..97d3ab844c 100644 --- a/core/block.go +++ b/core/block.go @@ -125,7 +125,7 @@ func VerifyBlockHash(b *Block, network *utils.Network, stateDiff *StateDiff) (*B if blockVer.LessThan(v0_13_2) { hash, commitments, err = blockHash(b, network, overrideSeq) } else { - hash, commitments, err = Post0132Hash(b, stateDiff.Length(), stateDiff.Commitment()) + hash, commitments, err = Post0132Hash(b, stateDiff) } if err != nil { return nil, err @@ -188,12 +188,13 @@ func pre07Hash(b *Block, chain *felt.Felt) (*felt.Felt, *BlockCommitments, error ), &BlockCommitments{TransactionCommitment: txCommitment}, nil } -func Post0132Hash(b *Block, stateDiffLen uint64, stateDiffHash *felt.Felt) (*felt.Felt, *BlockCommitments, error) { +func Post0132Hash(b *Block, stateDiff *StateDiff) (*felt.Felt, *BlockCommitments, error) { seqAddr := b.SequencerAddress // todo override support? wg := conc.NewWaitGroup() - var txCommitment, eCommitment, rCommitment *felt.Felt + var txCommitment, eCommitment, rCommitment, sdCommitment *felt.Felt + var sdLength uint64 var tErr, eErr, rErr error wg.Go(func() { @@ -205,9 +206,15 @@ func Post0132Hash(b *Block, stateDiffLen uint64, stateDiffHash *felt.Felt) (*fel wg.Go(func() { rCommitment, rErr = receiptCommitment(b.Receipts) }) + + wg.Go(func() { + sdLength = stateDiff.Length() + sdCommitment = stateDiff.Hash() + }) + wg.Wait() - fmt.Println("Commitments", txCommitment, eCommitment, rCommitment, stateDiffLen, stateDiffHash) + fmt.Println("Commitments", txCommitment, eCommitment, rCommitment, sdLength, sdCommitment) if tErr != nil { return nil, nil, tErr @@ -219,7 +226,7 @@ func Post0132Hash(b *Block, stateDiffLen uint64, stateDiffHash *felt.Felt) (*fel return nil, nil, rErr } - concatCounts := ConcatCounts(b.TransactionCount, b.EventCount, stateDiffLen, b.L1DAMode) + concatCounts := ConcatCounts(b.TransactionCount, b.EventCount, sdLength, b.L1DAMode) return crypto.PoseidonArray( new(felt.Felt).SetBytes([]byte("STARKNET_BLOCK_HASH0")), @@ -228,7 +235,7 @@ func Post0132Hash(b *Block, stateDiffLen uint64, stateDiffHash *felt.Felt) (*fel seqAddr, // sequencer address new(felt.Felt).SetUint64(b.Timestamp), // block timestamp concatCounts, - stateDiffHash, + sdCommitment, txCommitment, // transaction commitment eCommitment, // event commitment rCommitment, // receipt commitment diff --git a/core/transaction.go b/core/transaction.go index d178de78f7..bae9e5efbc 100644 --- a/core/transaction.go +++ b/core/transaction.go @@ -669,12 +669,16 @@ func TransactionCommitmentPoseidon(transactions []Transaction) (*felt.Felt, erro var commitment *felt.Felt return commitment, trie.RunOnTempTriePoseidon(commitmentTrieHeight, func(trie *trie.Trie) error { for i, transaction := range transactions { - hashElems := []*felt.Felt{transaction.Hash()} - // todo handle empty signature - hashElems = append(hashElems, transaction.Signature()...) - hash := crypto.PoseidonArray(hashElems...) + var digest crypto.PoseidonDigest + digest.Update(transaction.Hash()) - if _, err := trie.Put(new(felt.Felt).SetUint64(uint64(i)), hash); err != nil { + if txSignature := transaction.Signature(); len(txSignature) > 0 { + digest.Update(txSignature...) + } else { + digest.Update(&felt.Zero) + } + + if _, err := trie.Put(new(felt.Felt).SetUint64(uint64(i)), digest.Finish()); err != nil { return err } } From b1a9ca264f84cb6cf18bda88f7e489793d54c2f8 Mon Sep 17 00:00:00 2001 From: IronGauntlets Date: Tue, 30 Jul 2024 14:28:43 +0100 Subject: [PATCH 20/28] Fix review issues --- clients/feeder/feeder_test.go | 2 +- core/block.go | 2 -- core/state_update.go | 10 +++------- starknet/block.go | 2 +- 4 files changed, 5 insertions(+), 11 deletions(-) diff --git a/clients/feeder/feeder_test.go b/clients/feeder/feeder_test.go index 5c92fa659b..a22590a943 100644 --- a/clients/feeder/feeder_test.go +++ b/clients/feeder/feeder_test.go @@ -343,7 +343,7 @@ func TestBlockHeaderv0132Unmarshal(t *testing.T) { require.Equal(t, utils.HexToFelt(t, "0x1ea2a9cfa3df5297d58c0a04d09d276bc68d40fe64701305bbe2ed8f417e869"), block.Hash) require.Equal(t, utils.HexToFelt(t, "0x77140bef51bbb4d1932f17cc5081825ff18465a1df4440ca0429a4fa80f1dc5"), block.ParentHash) require.Equal(t, utils.HexToFelt(t, "0x6f12628d21a8df7f158b631d801fc0dd20034b9e22eca255bddc0c1c1bc283f"), block.ReceiptCommitment) - require.Equal(t, utils.HexToFelt(t, "0x23587c54d590b57b8e25acbf1e1a422eb4cd104e95ee4a681021a6bb7456afa"), block.StateDiffcommitment) + require.Equal(t, utils.HexToFelt(t, "0x23587c54d590b57b8e25acbf1e1a422eb4cd104e95ee4a681021a6bb7456afa"), block.StateDiffCommitment) require.Equal(t, uint64(6), block.StateDiffLength) require.Equal(t, "0.13.2", block.Version) require.Equal(t, uint64(117620), block.Receipts[0].ExecutionResources.TotalGasConsumed.L1Gas) diff --git a/core/block.go b/core/block.go index 97d3ab844c..9eb620ded4 100644 --- a/core/block.go +++ b/core/block.go @@ -214,8 +214,6 @@ func Post0132Hash(b *Block, stateDiff *StateDiff) (*felt.Felt, *BlockCommitments wg.Wait() - fmt.Println("Commitments", txCommitment, eCommitment, rCommitment, sdLength, sdCommitment) - if tErr != nil { return nil, nil, tErr } diff --git a/core/state_update.go b/core/state_update.go index f90e206419..789dbf6b0a 100644 --- a/core/state_update.go +++ b/core/state_update.go @@ -2,6 +2,7 @@ package core import ( "fmt" + "maps" "slices" "sort" @@ -66,12 +67,8 @@ func (d *StateDiff) Hash() *felt.Felt { // - deployed and have its class replaced in the same state diff, or // - have its class replaced multiple times in the same state diff. updatedContracts := make(map[felt.Felt]*felt.Felt) - for k, v := range d.DeployedContracts { - updatedContracts[k] = v - } - for k, v := range d.ReplacedClasses { - updatedContracts[k] = v - } + maps.Copy(updatedContracts, d.DeployedContracts) + maps.Copy(updatedContracts, d.ReplacedClasses) sortedUpdatedContractsHashes := sortedFeltKeys(updatedContracts) for _, hash := range sortedUpdatedContractsHashes { @@ -94,7 +91,6 @@ func (d *StateDiff) Hash() *felt.Felt { numOfDeclaredV0Classes := uint64(len(d.DeclaredV0Classes)) digest.Update(new(felt.Felt).SetUint64(numOfDeclaredV0Classes)) - // Todo: consider make a copy of d.DeclaredV0Classes? slices.SortFunc(d.DeclaredV0Classes, func(a, b *felt.Felt) int { return a.Cmp(b) }) digest.Update(d.DeclaredV0Classes...) diff --git a/starknet/block.go b/starknet/block.go index b2ec831661..c7f65394ce 100644 --- a/starknet/block.go +++ b/starknet/block.go @@ -15,7 +15,7 @@ type Block struct { TransactionCommitment *felt.Felt `json:"transaction_commitment"` EventCommitment *felt.Felt `json:"event_commitment"` ReceiptCommitment *felt.Felt `json:"receipt_commitment"` - StateDiffcommitment *felt.Felt `json:"state_diff_commitment"` + StateDiffCommitment *felt.Felt `json:"state_diff_commitment"` StateDiffLength uint64 `json:"state_diff_length"` Status string `json:"status"` Transactions []*Transaction `json:"transactions"` From a380d7f2da7cf285a2fdffef227c888220f46772 Mon Sep 17 00:00:00 2001 From: IronGauntlets Date: Tue, 30 Jul 2024 15:24:34 +0100 Subject: [PATCH 21/28] Refactor StateDiff's Hash() and Commitment() Extract common code patterns into private functions. --- core/state_update.go | 200 +++++++++++++++----------------------- core/state_update_test.go | 10 +- 2 files changed, 87 insertions(+), 123 deletions(-) diff --git a/core/state_update.go b/core/state_update.go index 789dbf6b0a..50501e9479 100644 --- a/core/state_update.go +++ b/core/state_update.go @@ -1,10 +1,8 @@ package core import ( - "fmt" "maps" "slices" - "sort" "github.com/NethermindEth/juno/core/crypto" "github.com/NethermindEth/juno/core/felt" @@ -53,46 +51,22 @@ func (d *StateDiff) Length() uint64 { } func (d *StateDiff) Hash() *felt.Felt { - var digest crypto.PoseidonDigest + digest := new(crypto.PoseidonDigest) digest.Update(new(felt.Felt).SetBytes([]byte("STARKNET_STATE_DIFF0"))) // updated_contracts = deployedContracts + replacedClasses // Digest: [number_of_updated_contracts, address_0, class_hash_0, address_1, class_hash_1, ...]. - numOfUpdatedContracts := uint64(len(d.DeployedContracts) + len(d.ReplacedClasses)) - digest.Update(new(felt.Felt).SetUint64(numOfUpdatedContracts)) - - // The sequencer guarantees that a contract cannot be: - // - deployed twice, - // - deployed and have its class replaced in the same state diff, or - // - have its class replaced multiple times in the same state diff. - updatedContracts := make(map[felt.Felt]*felt.Felt) - maps.Copy(updatedContracts, d.DeployedContracts) - maps.Copy(updatedContracts, d.ReplacedClasses) - - sortedUpdatedContractsHashes := sortedFeltKeys(updatedContracts) - for _, hash := range sortedUpdatedContractsHashes { - digest.Update(&hash, updatedContracts[hash]) - } + updatedContractsDigest(d.DeployedContracts, d.ReplacedClasses, digest) // declared classes // Digest: [number_of_declared_classes, class_hash_0, compiled_class_hash_0, class_hash_1, compiled_class_hash_1, // ...]. - numOfDeclaredClasses := uint64(len(d.DeclaredV1Classes)) - digest.Update(new(felt.Felt).SetUint64(numOfDeclaredClasses)) - - sortedDeclaredV1ClassHashes := sortedFeltKeys(d.DeclaredV1Classes) - for _, classHash := range sortedDeclaredV1ClassHashes { - digest.Update(&classHash, d.DeclaredV1Classes[classHash]) - } + declaredClassesDigest(d.DeclaredV1Classes, digest) // deprecated_declared_classes // Digest: [number_of_old_declared_classes, class_hash_0, class_hash_1, ...]. - numOfDeclaredV0Classes := uint64(len(d.DeclaredV0Classes)) - digest.Update(new(felt.Felt).SetUint64(numOfDeclaredV0Classes)) - - slices.SortFunc(d.DeclaredV0Classes, func(a, b *felt.Felt) int { return a.Cmp(b) }) - digest.Update(d.DeclaredV0Classes...) + deprecatedDeclaredClassesDigest(d.DeclaredV0Classes, digest) // Placeholder values digest.Update(new(felt.Felt).SetUint64(1), new(felt.Felt).SetUint64(0)) @@ -103,30 +77,11 @@ func (d *StateDiff) Hash() *felt.Felt { // contract_address_0, number_of_updates_in_contract_0, key_0, value0, key1, value1, ..., // contract_address_1, number_of_updates_in_contract_1, key_0, value0, key1, value1, ..., // ] - numOfStorageDiffs := uint64(len(d.StorageDiffs)) - digest.Update(new(felt.Felt).SetUint64(numOfStorageDiffs)) - - sortedStorageDiffAddrs := sortedFeltKeys(d.StorageDiffs) - for _, addr := range sortedStorageDiffAddrs { - digest.Update(&addr) - - sortedDiffKeys := sortedFeltKeys(d.StorageDiffs[addr]) - digest.Update(new(felt.Felt).SetUint64(uint64(len(sortedDiffKeys)))) - - for _, k := range sortedDiffKeys { - digest.Update(&k, d.StorageDiffs[addr][k]) - } - } + storageDiffDigest(d.StorageDiffs, digest) // nonces // Digest: [number_of_updated_contracts nonces, contract_address_0, nonce_0, contract_address_1, nonce_1, ...] - numOfNonces := uint64(len(d.Nonces)) - digest.Update(new(felt.Felt).SetUint64(numOfNonces)) - - sortedNoncesAddrs := sortedFeltKeys(d.Nonces) - for _, addr := range sortedNoncesAddrs { - digest.Update(&addr, d.Nonces[addr]) - } + noncesDigest(d.Nonces, digest) /*Poseidon( "STARKNET_STATE_DIFF0", deployed_contracts_and_replaced_classes, declared_classes, deprecated_declared_classes, @@ -143,59 +98,21 @@ func (d *StateDiff) Commitment() *felt.Felt { hash_of_deployed_contracts=hash([number_of_deployed_contracts, address_1, class_hash_1, address_2, class_hash_2, ...]) */ - var hashOfDeployedContracts crypto.PoseidonDigest - deployedReplacedAddresses := make([]felt.Felt, 0, len(d.DeployedContracts)+len(d.ReplacedClasses)) - for addr := range d.DeployedContracts { - deployedReplacedAddresses = append(deployedReplacedAddresses, addr) - } - for addr := range d.ReplacedClasses { - deployedReplacedAddresses = append(deployedReplacedAddresses, addr) - } - hashOfDeployedContracts.Update(tmpFelt.SetUint64(uint64(len(deployedReplacedAddresses)))) - sort.Slice(deployedReplacedAddresses, func(i, j int) bool { - switch deployedReplacedAddresses[i].Cmp(&deployedReplacedAddresses[j]) { - case -1: - return true - case 1: - return false - default: - // The sequencer guarantees that a contract cannot be: - // - deployed twice, - // - deployed and have its class replaced in the same state diff, or - // - have its class replaced multiple times in the same state diff. - panic(fmt.Sprintf("address appears twice in deployed and replaced addresses: %s", &deployedReplacedAddresses[i])) - } - }) - for idx := range deployedReplacedAddresses { - addr := deployedReplacedAddresses[idx] - classHash, ok := d.DeployedContracts[addr] - if !ok { - classHash = d.ReplacedClasses[addr] - } - hashOfDeployedContracts.Update(&addr, classHash) - } + hashOfDeployedContracts := new(crypto.PoseidonDigest) + updatedContractsDigest(d.DeployedContracts, d.ReplacedClasses, hashOfDeployedContracts) /* hash_of_declared_classes = hash([number_of_declared_classes, class_hash_1, compiled_class_hash_1, class_hash_2, compiled_class_hash_2, ...]) */ - var hashOfDeclaredClasses crypto.PoseidonDigest - hashOfDeclaredClasses.Update(tmpFelt.SetUint64(uint64(len(d.DeclaredV1Classes)))) - declaredV1ClassHashes := sortedFeltKeys(d.DeclaredV1Classes) - for idx := range declaredV1ClassHashes { - classHash := declaredV1ClassHashes[idx] - hashOfDeclaredClasses.Update(&classHash, d.DeclaredV1Classes[classHash]) - } + hashOfDeclaredClasses := new(crypto.PoseidonDigest) + declaredClassesDigest(d.DeclaredV1Classes, hashOfDeclaredClasses) /* hash_of_old_declared_classes = hash([number_of_old_declared_classes, class_hash_1, class_hash_2, ...]) */ - var hashOfOldDeclaredClasses crypto.PoseidonDigest - hashOfOldDeclaredClasses.Update(tmpFelt.SetUint64(uint64(len(d.DeclaredV0Classes)))) - sort.Slice(d.DeclaredV0Classes, func(i, j int) bool { - return d.DeclaredV0Classes[i].Cmp(d.DeclaredV0Classes[j]) == -1 - }) - hashOfOldDeclaredClasses.Update(d.DeclaredV0Classes...) + hashOfOldDeclaredClasses := new(crypto.PoseidonDigest) + deprecatedDeclaredClassesDigest(d.DeclaredV0Classes, hashOfOldDeclaredClasses) /* flattened_storage_diffs = [number_of_updated_contracts, contract_address_1, number_of_updates_in_contract, @@ -204,26 +121,11 @@ func (d *StateDiff) Commitment() *felt.Felt { hash_of_storage_domain_state_diff = hash([*flattened_storage_diffs, *flattened_nonces]) */ daModeL1 := 0 - hashOfStorageDomains := make([]crypto.PoseidonDigest, 1) - - sortedStorageDiffAddrs := sortedFeltKeys(d.StorageDiffs) - hashOfStorageDomains[daModeL1].Update(tmpFelt.SetUint64(uint64(len(sortedStorageDiffAddrs)))) - for idx, addr := range sortedStorageDiffAddrs { - hashOfStorageDomains[daModeL1].Update(&sortedStorageDiffAddrs[idx]) - diffKeys := sortedFeltKeys(d.StorageDiffs[sortedStorageDiffAddrs[idx]]) - - hashOfStorageDomains[daModeL1].Update(tmpFelt.SetUint64(uint64(len(diffKeys)))) - for idx := range diffKeys { - key := diffKeys[idx] - hashOfStorageDomains[daModeL1].Update(&key, d.StorageDiffs[addr][key]) - } - } + hashOfStorageDomains := make([]*crypto.PoseidonDigest, 1) + hashOfStorageDomains[daModeL1] = new(crypto.PoseidonDigest) - sortedNonceKeys := sortedFeltKeys(d.Nonces) - hashOfStorageDomains[daModeL1].Update(tmpFelt.SetUint64(uint64(len(sortedNonceKeys)))) - for idx := range sortedNonceKeys { - hashOfStorageDomains[daModeL1].Update(&sortedNonceKeys[idx], d.Nonces[sortedNonceKeys[idx]]) - } + storageDiffDigest(d.StorageDiffs, hashOfStorageDomains[daModeL1]) + noncesDigest(d.Nonces, hashOfStorageDomains[daModeL1]) /* flattened_total_state_diff = hash([state_diff_version, @@ -231,7 +133,7 @@ func (d *StateDiff) Commitment() *felt.Felt { hash_of_old_declared_classes, number_of_DA_modes, DA_mode_0, hash_of_storage_domain_state_diff_0, DA_mode_1, hash_of_storage_domain_state_diff_1, …]) */ - var commitmentDigest crypto.PoseidonDigest + commitmentDigest := new(crypto.PoseidonDigest) commitmentDigest.Update(&version, hashOfDeployedContracts.Finish(), hashOfDeclaredClasses.Finish(), hashOfOldDeclaredClasses.Finish()) commitmentDigest.Update(tmpFelt.SetUint64(uint64(len(hashOfStorageDomains)))) for idx := range hashOfStorageDomains { @@ -245,9 +147,69 @@ func sortedFeltKeys[V any](m map[felt.Felt]V) []felt.Felt { for addr := range m { keys = append(keys, addr) } - sort.Slice(keys, func(i, j int) bool { - return keys[i].Cmp(&keys[j]) == -1 - }) - + slices.SortFunc(keys, func(a, b felt.Felt) int { return a.Cmp(&b) }) return keys } + +func updatedContractsDigest(deployedContracts, replacedClasses map[felt.Felt]*felt.Felt, digest *crypto.PoseidonDigest) { + numOfUpdatedContracts := uint64(len(deployedContracts) + len(replacedClasses)) + digest.Update(new(felt.Felt).SetUint64(numOfUpdatedContracts)) + + // The sequencer guarantees that a contract cannot be: + // - deployed twice, + // - deployed and have its class replaced in the same state diff, or + // - have its class replaced multiple times in the same state diff. + updatedContracts := make(map[felt.Felt]*felt.Felt) + maps.Copy(updatedContracts, deployedContracts) + maps.Copy(updatedContracts, replacedClasses) + + sortedUpdatedContractsHashes := sortedFeltKeys(updatedContracts) + for _, hash := range sortedUpdatedContractsHashes { + digest.Update(&hash, updatedContracts[hash]) + } +} + +func declaredClassesDigest(declaredV1Classes map[felt.Felt]*felt.Felt, digest *crypto.PoseidonDigest) { + numOfDeclaredClasses := uint64(len(declaredV1Classes)) + digest.Update(new(felt.Felt).SetUint64(numOfDeclaredClasses)) + + sortedDeclaredV1ClassHashes := sortedFeltKeys(declaredV1Classes) + for _, classHash := range sortedDeclaredV1ClassHashes { + digest.Update(&classHash, declaredV1Classes[classHash]) + } +} + +func deprecatedDeclaredClassesDigest(declaredV0Classes []*felt.Felt, digest *crypto.PoseidonDigest) { + numOfDeclaredV0Classes := uint64(len(declaredV0Classes)) + digest.Update(new(felt.Felt).SetUint64(numOfDeclaredV0Classes)) + + slices.SortFunc(declaredV0Classes, func(a, b *felt.Felt) int { return a.Cmp(b) }) + digest.Update(declaredV0Classes...) +} + +func storageDiffDigest(storageDiffs map[felt.Felt]map[felt.Felt]*felt.Felt, digest *crypto.PoseidonDigest) { + numOfStorageDiffs := uint64(len(storageDiffs)) + digest.Update(new(felt.Felt).SetUint64(numOfStorageDiffs)) + + sortedStorageDiffAddrs := sortedFeltKeys(storageDiffs) + for _, addr := range sortedStorageDiffAddrs { + digest.Update(&addr) + + sortedDiffKeys := sortedFeltKeys(storageDiffs[addr]) + digest.Update(new(felt.Felt).SetUint64(uint64(len(sortedDiffKeys)))) + + for _, k := range sortedDiffKeys { + digest.Update(&k, storageDiffs[addr][k]) + } + } +} + +func noncesDigest(nonces map[felt.Felt]*felt.Felt, digest *crypto.PoseidonDigest) { + numOfNonces := uint64(len(nonces)) + digest.Update(new(felt.Felt).SetUint64(numOfNonces)) + + sortedNoncesAddrs := sortedFeltKeys(nonces) + for _, addr := range sortedNoncesAddrs { + digest.Update(&addr, nonces[addr]) + } +} diff --git a/core/state_update_test.go b/core/state_update_test.go index e50a6cf522..74fac50699 100644 --- a/core/state_update_test.go +++ b/core/state_update_test.go @@ -37,10 +37,12 @@ func TestStateDiffCommitment(t *testing.T) { expected: "0x32a531da56a82f993a29b3cfe4102b1589ddbc64bfd7be24706ab2b5ac2dba5", }, } { - su, err := gw.StateUpdate(context.Background(), test.blockNum) - require.NoError(t, err) - commitment := su.StateDiff.Commitment() - assert.Equal(t, utils.HexToFelt(t, test.expected), commitment) + t.Run(fmt.Sprintf("blockNum=%d", test.blockNum), func(t *testing.T) { + su, err := gw.StateUpdate(context.Background(), test.blockNum) + require.NoError(t, err) + commitment := su.StateDiff.Commitment() + assert.Equal(t, utils.HexToFelt(t, test.expected), commitment) + }) } } From 0c279ac1f0b9335fb2f98f6b95519692035b011e Mon Sep 17 00:00:00 2001 From: IronGauntlets Date: Tue, 30 Jul 2024 15:28:57 +0100 Subject: [PATCH 22/28] Remove nolint:exhaustruct --- adapters/vm2core/vm2core.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/adapters/vm2core/vm2core.go b/adapters/vm2core/vm2core.go index cedcb4597f..3c83713740 100644 --- a/adapters/vm2core/vm2core.go +++ b/adapters/vm2core/vm2core.go @@ -11,7 +11,7 @@ import ( ) func AdaptExecutionResources(resources *vm.ExecutionResources) *core.ExecutionResources { - return &core.ExecutionResources{ //nolint:exhaustruct + return &core.ExecutionResources{ BuiltinInstanceCounter: core.BuiltinInstanceCounter{ Pedersen: resources.Pedersen, RangeCheck: resources.RangeCheck, @@ -29,6 +29,7 @@ func AdaptExecutionResources(resources *vm.ExecutionResources) *core.ExecutionRe MemoryHoles: resources.MemoryHoles, Steps: resources.Steps, DataAvailability: adaptDA(resources.DataAvailability), + TotalGasConsumed: nil, // todo: fill after 0.13.2 } } From 278a97ec1d087701a0cddc750fb9568b574d78bb Mon Sep 17 00:00:00 2001 From: IronGauntlets Date: Tue, 30 Jul 2024 15:58:06 +0100 Subject: [PATCH 23/28] Add receipt and state diff commitment to BlockCommitments --- blockchain/blockchain_test.go | 25 +++++++++++++++++++++++++ core/block.go | 3 +++ 2 files changed, 28 insertions(+) diff --git a/blockchain/blockchain_test.go b/blockchain/blockchain_test.go index 76ebc1b164..c0c3666a91 100644 --- a/blockchain/blockchain_test.go +++ b/blockchain/blockchain_test.go @@ -268,6 +268,31 @@ func TestStore(t *testing.T) { }) } +func TestBlockCommitments(t *testing.T) { + chain := blockchain.New(pebble.NewMemTest(t), &utils.Mainnet) + client := feeder.NewTestClient(t, &utils.Mainnet) + gw := adaptfeeder.New(client) + + b, err := gw.BlockByNumber(context.Background(), 0) + require.NoError(t, err) + + su, err := gw.StateUpdate(context.Background(), 0) + require.NoError(t, err) + + expectedCommitments := &core.BlockCommitments{ + TransactionCommitment: new(felt.Felt).SetUint64(1), + EventCommitment: new(felt.Felt).SetUint64(2), + ReceiptCommitment: new(felt.Felt).SetUint64(3), + StateDiffCommitment: new(felt.Felt).SetUint64(4), + } + + require.NoError(t, chain.Store(b, expectedCommitments, su, nil)) + + commitments, err := chain.BlockCommitmentsByNumber(0) + require.NoError(t, err) + require.Equal(t, expectedCommitments, commitments) +} + func TestTransactionAndReceipt(t *testing.T) { chain := blockchain.New(pebble.NewMemTest(t), &utils.Mainnet) diff --git a/core/block.go b/core/block.go index 9eb620ded4..a59df0e721 100644 --- a/core/block.go +++ b/core/block.go @@ -69,6 +69,7 @@ type BlockCommitments struct { TransactionCommitment *felt.Felt EventCommitment *felt.Felt ReceiptCommitment *felt.Felt + StateDiffCommitment *felt.Felt } // VerifyBlockHash verifies the block hash. Due to bugs in Starknet alpha, not all blocks have @@ -247,6 +248,8 @@ func Post0132Hash(b *Block, stateDiff *StateDiff) (*felt.Felt, *BlockCommitments ), &BlockCommitments{ TransactionCommitment: txCommitment, EventCommitment: eCommitment, + ReceiptCommitment: rCommitment, + StateDiffCommitment: sdCommitment, }, nil } From 0138c3762e0fb08525c1e9175a629fbdbc74e703 Mon Sep 17 00:00:00 2001 From: IronGauntlets Date: Tue, 30 Jul 2024 17:11:10 +0100 Subject: [PATCH 24/28] Refactor trie, receipt, transaction and event commitment --- core/block.go | 12 ++--- core/block_test.go | 95 -------------------------------- core/receipt.go | 11 ++-- core/receipt_pkg_test.go | 114 --------------------------------------- core/transaction.go | 16 +++--- core/transaction_test.go | 19 +------ core/trie/trie.go | 4 +- core/trie/trie_test.go | 18 +++---- 8 files changed, 30 insertions(+), 259 deletions(-) delete mode 100644 core/receipt_pkg_test.go diff --git a/core/block.go b/core/block.go index a59df0e721..e6ffff640d 100644 --- a/core/block.go +++ b/core/block.go @@ -168,7 +168,7 @@ func blockHash(b *Block, network *utils.Network, overrideSeqAddr *felt.Felt) (*f // pre07Hash computes the block hash for blocks generated before Cairo 0.7.0 func pre07Hash(b *Block, chain *felt.Felt) (*felt.Felt, *BlockCommitments, error) { - txCommitment, err := transactionCommitment(b.Transactions, b.Header.ProtocolVersion) + txCommitment, err := transactionCommitmentPedersen(b.Transactions, b.Header.ProtocolVersion) if err != nil { return nil, nil, err } @@ -199,7 +199,7 @@ func Post0132Hash(b *Block, stateDiff *StateDiff) (*felt.Felt, *BlockCommitments var tErr, eErr, rErr error wg.Go(func() { - txCommitment, tErr = TransactionCommitmentPoseidon(b.Transactions) + txCommitment, tErr = transactionCommitmentPoseidon(b.Transactions) }) wg.Go(func() { eCommitment, eErr = eventCommitmentPoseidon(b.Receipts) @@ -225,7 +225,7 @@ func Post0132Hash(b *Block, stateDiff *StateDiff) (*felt.Felt, *BlockCommitments return nil, nil, rErr } - concatCounts := ConcatCounts(b.TransactionCount, b.EventCount, sdLength, b.L1DAMode) + concatCounts := concatCounts(b.TransactionCount, b.EventCount, sdLength, b.L1DAMode) return crypto.PoseidonArray( new(felt.Felt).SetBytes([]byte("STARKNET_BLOCK_HASH0")), @@ -265,10 +265,10 @@ func post07Hash(b *Block, overrideSeqAddr *felt.Felt) (*felt.Felt, *BlockCommitm var tErr, eErr error wg.Go(func() { - txCommitment, tErr = transactionCommitment(b.Transactions, b.Header.ProtocolVersion) + txCommitment, tErr = transactionCommitmentPedersen(b.Transactions, b.Header.ProtocolVersion) }) wg.Go(func() { - eCommitment, eErr = eventCommitment(b.Receipts) + eCommitment, eErr = eventCommitmentPedersen(b.Receipts) }) wg.Wait() @@ -309,7 +309,7 @@ func MarshalBlockNumber(blockNumber uint64) []byte { return numBytes } -func ConcatCounts(txCount, eventCount, stateDiffLen uint64, l1Mode L1DAMode) *felt.Felt { +func concatCounts(txCount, eventCount, stateDiffLen uint64, l1Mode L1DAMode) *felt.Felt { var l1DAByte byte if l1Mode == Blob { l1DAByte = 0b10000000 diff --git a/core/block_test.go b/core/block_test.go index f5e3cb6e57..e1531a4336 100644 --- a/core/block_test.go +++ b/core/block_test.go @@ -244,80 +244,6 @@ func TestBlockHash(t *testing.T) { }) } -// type txData struct { -// hash *felt.Felt -// version *core.TransactionVersion -// signatures []*felt.Felt -//} -// -// func (t txData) Hash() *felt.Felt { -// return t.hash -//} -// -// func (t txData) Signature() []*felt.Felt { -// return t.signatures -//} -// -// func (t txData) TxVersion() *core.TransactionVersion { -// return t.version -//} -// -// func TestPost0132Hash(t *testing.T) { -// txHash := new(felt.Felt).SetUint64(1) -// -// block := &core.Block{ -// Header: &core.Header{ -// Number: 1, -// GlobalStateRoot: new(felt.Felt).SetUint64(2), -// SequencerAddress: new(felt.Felt).SetUint64(3), -// Timestamp: 4, -// L1DAMode: core.Blob, -// ProtocolVersion: "10", -// GasPrice: new(felt.Felt).SetUint64(7), -// GasPriceSTRK: new(felt.Felt).SetUint64(6), -// L1DataGasPrice: &core.GasPrice{ -// PriceInFri: new(felt.Felt).SetUint64(10), -// PriceInWei: new(felt.Felt).SetUint64(9), -// }, -// ParentHash: new(felt.Felt).SetUint64(11), -// TransactionCount: 1, -// EventCount: 0, -// }, -// Transactions: []core.Transaction{ -// txData{ -// hash: txHash, -// signatures: []*felt.Felt{ -// new(felt.Felt).SetUint64(2), -// new(felt.Felt).SetUint64(3), -// }, -// }, -// }, -// Receipts: []*core.TransactionReceipt{ -// { -// Fee: new(felt.Felt).SetUint64(99804), -// L2ToL1Message: []*core.L2ToL1Message{ -// createL2ToL1Message(34), -// createL2ToL1Message(56), -// }, -// TransactionHash: txHash, -// Reverted: true, -// RevertReason: "aborted", -// ExecutionResources: -// TotalGasConsumed: &core.GasConsumed{ -// L1Gas: 16580, -// L1DataGas: 32, -// }, -// }, -// }, -// } -// -// h, err := core.Post0132Hash(block, 10, utils.HexToFelt(t, "0x281f5966e49ad7dad9323826d53d1d27c0c4e6ebe5525e2e2fbca549bfa0a67")) -// require.NoError(t, err) -// -// expected := utils.HexToFelt(t, "0x061e4998d51a248f1d0288d7e17f6287757b0e5e6c5e1e58ddf740616e312134") -// assert.Equal(t, expected, h) -//} - func TestBlockHashP2P(t *testing.T) { mainnetGW := adaptfeeder.New(feeder.NewTestClient(t, &utils.Mainnet)) @@ -331,24 +257,3 @@ func TestBlockHashP2P(t *testing.T) { assert.EqualError(t, err, "block.SequencerAddress is nil") }) } - -// func TestConcatCounts(t *testing.T) { -// result := core.ConcatCounts(4, 3, 2, core.Blob) -// expected := utils.HexToFelt(t, "0x0000000000000004000000000000000300000000000000028000000000000000") -// -// assert.Equal(t, expected, result) -//} -// -// func createL2ToL1Message(seed uint64) *core.L2ToL1Message { -// addrBytes := make([]byte, 8) -// binary.BigEndian.PutUint64(addrBytes, seed+1) -// -// return &core.L2ToL1Message{ -// From: new(felt.Felt).SetUint64(seed), -// To: common.BytesToAddress(addrBytes), -// Payload: []*felt.Felt{ -// new(felt.Felt).SetUint64(seed + 2), -// new(felt.Felt).SetUint64(seed + 3), -// }, -// } -//} diff --git a/core/receipt.go b/core/receipt.go index f137237b25..57ef1dcd2c 100644 --- a/core/receipt.go +++ b/core/receipt.go @@ -23,7 +23,7 @@ type TransactionReceipt struct { RevertReason string } -func (r *TransactionReceipt) Hash() (*felt.Felt, error) { +func (r *TransactionReceipt) hash() *felt.Felt { revertReasonHash := &felt.Zero if r.Reverted { revertReasonHash = crypto.StarknetKeccak([]byte(r.RevertReason)) @@ -43,7 +43,7 @@ func (r *TransactionReceipt) Hash() (*felt.Felt, error) { &felt.Zero, // L2 gas consumed new(felt.Felt).SetUint64(totalGasConsumed.L1Gas), new(felt.Felt).SetUint64(totalGasConsumed.L1DataGas), - ), nil + ) } func messagesSentHash(messages []*L2ToL1Message) *felt.Felt { @@ -65,13 +65,10 @@ func receiptCommitment(receipts []*TransactionReceipt) (*felt.Felt, error) { return commitment, trie.RunOnTempTriePoseidon(commitmentTrieHeight, func(trie *trie.Trie) error { for i, receipt := range receipts { - hash, err := receipt.Hash() - if err != nil { - return err - } + hash := receipt.hash() receiptTrieKey := new(felt.Felt).SetUint64(uint64(i)) - _, err = trie.Put(receiptTrieKey, hash) + _, err := trie.Put(receiptTrieKey, hash) if err != nil { return err } diff --git a/core/receipt_pkg_test.go b/core/receipt_pkg_test.go deleted file mode 100644 index c2f9da121e..0000000000 --- a/core/receipt_pkg_test.go +++ /dev/null @@ -1,114 +0,0 @@ -package core - -import ( - "encoding/binary" - "testing" - - "github.com/NethermindEth/juno/core/felt" - "github.com/NethermindEth/juno/utils" - "github.com/ethereum/go-ethereum/common" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" -) - -func TestReceiptHash(t *testing.T) { - t.Run("with gas_consumed", func(t *testing.T) { - receipt := &TransactionReceipt{ - Fee: new(felt.Felt).SetUint64(99804), - ExecutionResources: &ExecutionResources{ - TotalGasConsumed: &GasConsumed{ - L1Gas: 16580, - L1DataGas: 32, - }, - }, - L2ToL1Message: []*L2ToL1Message{ - createL2ToL1Message(34), - createL2ToL1Message(56), - }, - TransactionHash: new(felt.Felt).SetUint64(1234), - Reverted: true, - RevertReason: "aborted", - } - - hash, err := receipt.Hash() - require.NoError(t, err) - - expected := utils.HexToFelt(t, "0x6276abf21e7c68b2eecfdc8a845b11b44401901f5f040efe10c60d625049646") - assert.Equal(t, expected, hash) - }) - t.Run("gas_consumed is nil", func(t *testing.T) { - receipt := &TransactionReceipt{ - Fee: new(felt.Felt).SetUint64(99804), - ExecutionResources: nil, - L2ToL1Message: []*L2ToL1Message{ - createL2ToL1Message(34), - createL2ToL1Message(56), - }, - TransactionHash: new(felt.Felt).SetUint64(1234), - Reverted: true, - RevertReason: "aborted", - } - - hash, err := receipt.Hash() - require.NoError(t, err) - - expected := utils.HexToFelt(t, "0x37268b86bd55df0d9aa93dc3072c6785f06a272c35c30167662b0248f69dbce") - assert.Equal(t, expected, hash) - }) -} - -func TestReceiptCommitment(t *testing.T) { - receipt := &TransactionReceipt{ - Fee: new(felt.Felt).SetUint64(99804), - ExecutionResources: &ExecutionResources{ - TotalGasConsumed: &GasConsumed{ - L1Gas: 16580, - L1DataGas: 32, - }, - }, - L2ToL1Message: []*L2ToL1Message{ - createL2ToL1Message(34), - createL2ToL1Message(56), - }, - TransactionHash: new(felt.Felt).SetUint64(1234), - Reverted: true, - RevertReason: "aborted", - } - - hash, err := receipt.Hash() - require.NoError(t, err) - - expectedHash := utils.HexToFelt(t, "0x6276abf21e7c68b2eecfdc8a845b11b44401901f5f040efe10c60d625049646") - require.Equal(t, expectedHash, hash) - - root, err := receiptCommitment([]*TransactionReceipt{receipt}) - require.NoError(t, err) - - expectedRoot := utils.HexToFelt(t, "0x31963cb891ebb825e83514deb748c89b6967b5368cbc48a9b56193a1464ca87") - assert.Equal(t, expectedRoot, root) -} - -func TestMessagesSentHash(t *testing.T) { - messages := []*L2ToL1Message{ - createL2ToL1Message(0), - createL2ToL1Message(1), - } - - hash := messagesSentHash(messages) - expected := utils.HexToFelt(t, "0x00c89474a9007dc060aed76caf8b30b927cfea1ebce2d134b943b8d7121004e4") - assert.Equal(t, expected, hash) -} - -func createL2ToL1Message(seed uint64) *L2ToL1Message { - addrBytes := make([]byte, 8) - binary.BigEndian.PutUint64(addrBytes, seed+1) - - return &L2ToL1Message{ - From: new(felt.Felt).SetUint64(seed), - To: common.BytesToAddress(addrBytes), - Payload: []*felt.Felt{ - new(felt.Felt).SetUint64(seed + 2), - new(felt.Felt).SetUint64(seed + 3), - }, - } -} diff --git a/core/transaction.go b/core/transaction.go index bae9e5efbc..194a7b9ae7 100644 --- a/core/transaction.go +++ b/core/transaction.go @@ -630,12 +630,12 @@ func VerifyTransactions(txs []Transaction, n *utils.Network, protocolVersion str const commitmentTrieHeight = 64 -// transactionCommitment is the root of a height 64 binary Merkle Patricia tree of the +// transactionCommitmentPedersen is the root of a height 64 binary Merkle Patricia tree of the // transaction hashes and signatures in a block. -func transactionCommitment(transactions []Transaction, protocolVersion string) (*felt.Felt, error) { +func transactionCommitmentPedersen(transactions []Transaction, protocolVersion string) (*felt.Felt, error) { var commitment *felt.Felt v0_11_1 := semver.MustParse("0.11.1") - return commitment, trie.RunOnTempTrie(commitmentTrieHeight, func(trie *trie.Trie) error { + return commitment, trie.RunOnTempTriePedersen(commitmentTrieHeight, func(trie *trie.Trie) error { blockVersion, err := ParseBlockVersion(protocolVersion) if err != nil { return err @@ -665,7 +665,7 @@ func transactionCommitment(transactions []Transaction, protocolVersion string) ( }) } -func TransactionCommitmentPoseidon(transactions []Transaction) (*felt.Felt, error) { +func transactionCommitmentPoseidon(transactions []Transaction) (*felt.Felt, error) { var commitment *felt.Felt return commitment, trie.RunOnTempTriePoseidon(commitmentTrieHeight, func(trie *trie.Trie) error { for i, transaction := range transactions { @@ -706,7 +706,7 @@ func ParseBlockVersion(protocolVersion string) (*semver.Version, error) { return semver.NewVersion(strings.Join(digits[:3], sep)) } -// eventCommitment computes the event commitment for a block. +// eventCommitmentPoseidon computes the event commitment for a block. func eventCommitmentPoseidon(receipts []*TransactionReceipt) (*felt.Felt, error) { var commitment *felt.Felt return commitment, trie.RunOnTempTriePoseidon(commitmentTrieHeight, func(trie *trie.Trie) error { @@ -768,10 +768,10 @@ func eventCommitmentPoseidon(receipts []*TransactionReceipt) (*felt.Felt, error) }) } -// eventCommitment computes the event commitment for a block. -func eventCommitment(receipts []*TransactionReceipt) (*felt.Felt, error) { +// eventCommitmentPedersen computes the event commitment for a block. +func eventCommitmentPedersen(receipts []*TransactionReceipt) (*felt.Felt, error) { var commitment *felt.Felt - return commitment, trie.RunOnTempTrie(commitmentTrieHeight, func(trie *trie.Trie) error { + return commitment, trie.RunOnTempTriePedersen(commitmentTrieHeight, func(trie *trie.Trie) error { eventCount := uint64(0) numWorkers := runtime.GOMAXPROCS(0) receiptPerWorker := len(receipts) / numWorkers diff --git a/core/transaction_test.go b/core/transaction_test.go index f6c44218d9..9b23ded7bd 100644 --- a/core/transaction_test.go +++ b/core/transaction_test.go @@ -277,7 +277,7 @@ func TestTransactionV3Hash(t *testing.T) { } } -func TestTransactionVersi(t *testing.T) { +func TestTransactionVersion(t *testing.T) { f := utils.HexToFelt(t, "0x100000000000000000000000000000002") v := (*core.TransactionVersion)(f) @@ -350,20 +350,3 @@ func TestDeclareV0TransactionHash(t *testing.T) { require.NoError(t, err) assert.Equal(t, expectedHash, got) } - -// func TestTransactionCommitmentPoseidon(t *testing.T) { -// data := txData{ -// hash: new(felt.Felt).SetUint64(1), -// signatures: []*felt.Felt{ -// new(felt.Felt).SetUint64(2), -// new(felt.Felt).SetUint64(3), -// }, -// } -// transactions := []core.Transaction{data, data} -// -// h, err := core.TransactionCommitmentPoseidon(transactions) -// require.NoError(t, err) -// -// expected := utils.HexToFelt(t, "0x0282b635972328bd1cfa86496fe920d20bd9440cd78ee8dc90ae2b383d664dcf") -// assert.Equal(t, expected, h) -//} diff --git a/core/trie/trie.go b/core/trie/trie.go index 260c3428c3..c03357d3af 100644 --- a/core/trie/trie.go +++ b/core/trie/trie.go @@ -76,8 +76,8 @@ func newTrie(storage *Storage, height uint8, hash hashFunc) (*Trie, error) { }, nil } -// RunOnTempTrie creates an in-memory Trie of height `height` and runs `do` on that Trie -func RunOnTempTrie(height uint8, do func(*Trie) error) error { +// RunOnTempTriePedersen creates an in-memory Trie of height `height` and runs `do` on that Trie +func RunOnTempTriePedersen(height uint8, do func(*Trie) error) error { trie, err := NewTriePedersen(newMemStorage(), height) if err != nil { return err diff --git a/core/trie/trie_test.go b/core/trie/trie_test.go index 1fc03fbd09..fb5460739d 100644 --- a/core/trie/trie_test.go +++ b/core/trie/trie_test.go @@ -22,7 +22,7 @@ import ( // - [*] Add more complicated Put and Delete scenarios func TestTriePut(t *testing.T) { t.Run("put zero to empty trie", func(t *testing.T) { - require.NoError(t, trie.RunOnTempTrie(251, func(tempTrie *trie.Trie) error { + require.NoError(t, trie.RunOnTempTriePedersen(251, func(tempTrie *trie.Trie) error { key := new(felt.Felt).SetUint64(1) zeroVal := new(felt.Felt).SetUint64(0) @@ -36,7 +36,7 @@ func TestTriePut(t *testing.T) { }) t.Run("put zero value", func(t *testing.T) { - require.NoError(t, trie.RunOnTempTrie(251, func(tempTrie *trie.Trie) error { + require.NoError(t, trie.RunOnTempTriePedersen(251, func(tempTrie *trie.Trie) error { keyNum, err := strconv.ParseUint("1101", 2, 64) require.NoError(t, err) @@ -57,7 +57,7 @@ func TestTriePut(t *testing.T) { }) t.Run("put to replace an existed value", func(t *testing.T) { - require.NoError(t, trie.RunOnTempTrie(251, func(tempTrie *trie.Trie) error { + require.NoError(t, trie.RunOnTempTriePedersen(251, func(tempTrie *trie.Trie) error { keyNum, err := strconv.ParseUint("1101", 2, 64) require.NoError(t, err) @@ -124,7 +124,7 @@ func TestTrieDeleteBasic(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { - require.NoError(t, trie.RunOnTempTrie(251, func(tempTrie *trie.Trie) error { + require.NoError(t, trie.RunOnTempTriePedersen(251, func(tempTrie *trie.Trie) error { // Build a basic trie _, err := tempTrie.Put(leftKey, leftVal) require.NoError(t, err) @@ -157,7 +157,7 @@ func TestTrieDeleteBasic(t *testing.T) { } func TestPutZero(t *testing.T) { - require.NoError(t, trie.RunOnTempTrie(251, func(tempTrie *trie.Trie) error { + require.NoError(t, trie.RunOnTempTriePedersen(251, func(tempTrie *trie.Trie) error { emptyRoot, err := tempTrie.Root() require.NoError(t, err) var roots []*felt.Felt @@ -227,7 +227,7 @@ func TestPutZero(t *testing.T) { } func TestOldData(t *testing.T) { - require.NoError(t, trie.RunOnTempTrie(251, func(tempTrie *trie.Trie) error { + require.NoError(t, trie.RunOnTempTriePedersen(251, func(tempTrie *trie.Trie) error { key := new(felt.Felt).SetUint64(12) old := new(felt.Felt) @@ -282,13 +282,13 @@ func TestOldData(t *testing.T) { func TestMaxTrieHeight(t *testing.T) { t.Run("create trie with invalid height", func(t *testing.T) { - assert.Error(t, trie.RunOnTempTrie(felt.Bits+1, func(_ *trie.Trie) error { + assert.Error(t, trie.RunOnTempTriePedersen(felt.Bits+1, func(_ *trie.Trie) error { return nil })) }) t.Run("insert invalid key", func(t *testing.T) { - require.NoError(t, trie.RunOnTempTrie(uint8(felt.Bits), func(tt *trie.Trie) error { + require.NoError(t, trie.RunOnTempTriePedersen(uint8(felt.Bits), func(tt *trie.Trie) error { badKey := new(felt.Felt).Sub(&felt.Zero, new(felt.Felt).SetUint64(1)) _, err := tt.Put(badKey, new(felt.Felt)) assert.Error(t, err) @@ -364,7 +364,7 @@ func BenchmarkTriePut(b *testing.B) { } one := new(felt.Felt).SetUint64(1) - require.NoError(b, trie.RunOnTempTrie(251, func(t *trie.Trie) error { + require.NoError(b, trie.RunOnTempTriePedersen(251, func(t *trie.Trie) error { b.ResetTimer() for i := 0; i < b.N; i++ { _, err := t.Put(keys[i], one) From d6e8dbb0106b1a8a53592c8479d2152bc3cf0fa9 Mon Sep 17 00:00:00 2001 From: IronGauntlets Date: Tue, 30 Jul 2024 17:13:26 +0100 Subject: [PATCH 25/28] Small refactor --- core/receipt.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/core/receipt.go b/core/receipt.go index 57ef1dcd2c..0984118c28 100644 --- a/core/receipt.go +++ b/core/receipt.go @@ -65,10 +65,8 @@ func receiptCommitment(receipts []*TransactionReceipt) (*felt.Felt, error) { return commitment, trie.RunOnTempTriePoseidon(commitmentTrieHeight, func(trie *trie.Trie) error { for i, receipt := range receipts { - hash := receipt.hash() - receiptTrieKey := new(felt.Felt).SetUint64(uint64(i)) - _, err := trie.Put(receiptTrieKey, hash) + _, err := trie.Put(receiptTrieKey, receipt.hash()) if err != nil { return err } From 89df9327f25ca3f85e7311ad85320148171bfaaa Mon Sep 17 00:00:00 2001 From: IronGauntlets Date: Tue, 30 Jul 2024 17:37:00 +0100 Subject: [PATCH 26/28] Add 0.13.2 Block tests --- .../sepolia-integration/block/35749.json | 526 + .../sepolia-integration/block/37500.json | 418 + .../sepolia-integration/block/38748.json | 14284 ++++++++++++++++ .../sepolia-integration/signature/16350.json | 12 +- .../sepolia-integration/signature/35748.json | 7 + .../sepolia-integration/signature/35749.json | 7 + .../sepolia-integration/signature/37500.json | 7 + .../sepolia-integration/signature/38748.json | 7 + core/block_test.go | 25 + 9 files changed, 15285 insertions(+), 8 deletions(-) create mode 100644 clients/feeder/testdata/sepolia-integration/block/35749.json create mode 100644 clients/feeder/testdata/sepolia-integration/block/37500.json create mode 100644 clients/feeder/testdata/sepolia-integration/block/38748.json create mode 100644 clients/feeder/testdata/sepolia-integration/signature/35748.json create mode 100644 clients/feeder/testdata/sepolia-integration/signature/35749.json create mode 100644 clients/feeder/testdata/sepolia-integration/signature/37500.json create mode 100644 clients/feeder/testdata/sepolia-integration/signature/38748.json diff --git a/clients/feeder/testdata/sepolia-integration/block/35749.json b/clients/feeder/testdata/sepolia-integration/block/35749.json new file mode 100644 index 0000000000..1118bb2952 --- /dev/null +++ b/clients/feeder/testdata/sepolia-integration/block/35749.json @@ -0,0 +1,526 @@ +{ + "block_hash": "0x23b37df7360bc6c434d32a6a4f46f1705efb4fdf7142bfd66929f5b40035a6", + "parent_block_hash": "0x1ea2a9cfa3df5297d58c0a04d09d276bc68d40fe64701305bbe2ed8f417e869", + "block_number": 35749, + "state_root": "0x8638b46e7b92719ae718dc352c793d1df15c55956be999a539e9a27c260337", + "transaction_commitment": "0x6e4a0087d38efb943193326a3e50f5b50f6affd893cbf750e4c5a7f51d118cd", + "event_commitment": "0x70e08de500e11f8bce2949735ff6ea749520235c7dbcf1b058f1142ec0f9d61", + "receipt_commitment": "0x6977f725ce9c5d88611dc180e5b70c78c7b1dc82a4bbe4947534a41c3c2965b", + "state_diff_commitment": "0x323feeef51cadc14d4a025eb541227b177f69d1e6052854de262ca5e18055a1", + "state_diff_length": 17, + "status": "ACCEPTED_ON_L1", + "l1_da_mode": "BLOB", + "l1_gas_price": { + "price_in_wei": "0x9c3948c46", + "price_in_fri": "0xc62a5896c8ed" + }, + "l1_data_gas_price": { + "price_in_wei": "0x55a8378e", + "price_in_fri": "0x6ca75229e0a" + }, + "transactions": [ + { + "transaction_hash": "0x639b6e601676d9a70b639b34b38626aa26d3c51ae6fae8195dfe7729b4573d4", + "version": "0x0", + "contract_address": "0x4c5772d1914fe6ce891b64eb35bf3522aeae1315647314aac58b01137607f3f", + "entry_point_selector": "0x2d757788a8d8d6f21d1cd40bce38a8222d70654214e96ff95d8086e684fbee5", + "nonce": "0x4b", + "calldata": [ + "0x6bc7a9f029e5e0cfe84c5b8b1acc0ea952eaed3b", + "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "0x29a2241af62c0000", + "0x0" + ], + "type": "L1_HANDLER" + }, + { + "transaction_hash": "0x37ebf44a83f3337bb61f8c572d100fbfcbe94b5a8f8a190bb38c06c2e9b2d53", + "version": "0x0", + "contract_address": "0x594c1582459ea03f77deaf9eb7e3917d6994a03c13405ba42867f83d85f085d", + "entry_point_selector": "0x2d757788a8d8d6f21d1cd40bce38a8222d70654214e96ff95d8086e684fbee5", + "nonce": "0x4c", + "calldata": [ + "0x6fe45befc2c0e0f619d5ccfb6fa4d40590f6bc53", + "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "0x10f0cf064dd59200000", + "0x0" + ], + "type": "L1_HANDLER" + }, + { + "transaction_hash": "0xcdfc5bfdcd4de0f3aa61271e0123cce9d153d543b08f85eb55e63d04ae9c74", + "version": "0x3", + "signature": [ + "0x708bd207d80d802385109c08fc8dbf1bec7f5adfe063f2e95913996e81005d3", + "0x59f731369dab2219f4f5562e38088eaa389105988fb9eac1966bdfc4fa5c103" + ], + "nonce": "0x0", + "nonce_data_availability_mode": 0, + "fee_data_availability_mode": 0, + "resource_bounds": { + "L1_GAS": { + "max_amount": "0xc3500", + "max_price_per_unit": "0xe35fa931a000" + }, + "L2_GAS": { + "max_amount": "0x0", + "max_price_per_unit": "0x0" + } + }, + "tip": "0x0", + "paymaster_data": [], + "sender_address": "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "contract_address_salt": "0xbd8c4621bc47bf25dfdd21b4317e5cb93184814a9432f4b53c1ff338b00fd", + "class_hash": "0x2fd9e122406490dc0f299f3070eaaa8df854d97ff81b47e91da32b8cd9d757a", + "constructor_calldata": [ + "0x406a640b3b70dad390d661c088df1fbaeb5162a07d57cf29ba794e2b0e3c804" + ], + "type": "DEPLOY_ACCOUNT" + }, + { + "transaction_hash": "0x6963ec558745a5eb34927ff945631d0157e842df64baafc0acdc45c7530c436", + "version": "0x1", + "max_fee": "0x354a6ba7a18000", + "signature": [ + "0x11c610f8578c27feea285705a89ff2b0ad5ec5aa0910bdf3f313332bd55d406", + "0x961786f7a83874a4d2dfbba3b893dcce74a4164b422692aa35cd60e6da3242" + ], + "nonce": "0x1", + "sender_address": "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "calldata": [ + "0x1", + "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "0x2730079d734ee55315f4f141eaed376bddd8c2133523d223a344c5604e0f7f8", + "0x4", + "0x19de7881922dbc95846b1bb9464dba34046c46470cfb5e18b4cb2892fd4111f", + "0x2eac6e4530acbb64eeb07c7a1d81dbd359f14bc22edd20f149c0d63cdb356c7", + "0x0", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0xc1a48191dd00ee2f05cb6b0c8f9e3e7767cbf13e55f0907f45339e662898c1", + "version": "0x3", + "signature": [ + "0x2ad5aee3fa655da192ebed4913e0dd7f295ac37d4b92c5a7546ca8fb28fd63c", + "0x1ecd893d8fe7a30e575b2a3af4f3ca1695537eca5ebf47e94a05d5db780ab6b" + ], + "nonce": "0x2", + "nonce_data_availability_mode": 0, + "fee_data_availability_mode": 0, + "resource_bounds": { + "L1_GAS": { + "max_amount": "0xc3500", + "max_price_per_unit": "0xe35fa931a000" + }, + "L2_GAS": { + "max_amount": "0x0", + "max_price_per_unit": "0x0" + } + }, + "tip": "0x0", + "paymaster_data": [], + "sender_address": "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "calldata": [ + "0x1", + "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "0x2730079d734ee55315f4f141eaed376bddd8c2133523d223a344c5604e0f7f8", + "0x4", + "0x19de7881922dbc95846b1bb9464dba34046c46470cfb5e18b4cb2892fd4111f", + "0x2eac6e4530acbb64eeb07c7a1d81dbd359f14bc22edd20f149c0d63cdb356c8", + "0x0", + "0x0" + ], + "account_deployment_data": [], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x3b96f398134800efa13f9b6566ff7c23b2524e4d2f5d22d8fe9f684214473b2", + "version": "0x3", + "signature": [ + "0x1983a6378d753f2a3818470517cadb1e83299e1b2c060bd68a4b33062ad3d88", + "0x234dd02a8500a90fca140975c7fcdb4a356cf532d9d184d4fd7aa3eb44baf3b" + ], + "nonce": "0x3", + "nonce_data_availability_mode": 0, + "fee_data_availability_mode": 0, + "resource_bounds": { + "L1_GAS": { + "max_amount": "0xc3500", + "max_price_per_unit": "0xe35fa931a000" + }, + "L2_GAS": { + "max_amount": "0x0", + "max_price_per_unit": "0x0" + } + }, + "tip": "0x0", + "paymaster_data": [], + "sender_address": "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "calldata": [ + "0x1", + "0x65cdd7892656f7f89887c2c84bb3cea8f8c1b472a4f61838496c1fc7cc8733b", + "0x27a4a7332e590dd789019a6d125ff2aacd358e453090978cbf81f0d85e4c045", + "0x2", + "0x23bf06fbbf6634459b7cd052e704bcf80f07e85cbdede138ce8e1e3aace24ac", + "0x4617cc24c69548663a20ccd75a98355fab6a7c70b13cb427194943e34298ba6" + ], + "account_deployment_data": [], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x5d17a95dff10124142c65a247439ac7a33171b927f8e43b3d90360d6352bb83", + "version": "0x3", + "signature": [ + "0x34ee3d7ee07f00b8a91a9896a3505cc2a9660f62b95342c41ea45f91c4c9e11", + "0x19b88727c89ab7187569b1e3b639581d4f1dcd79a6b6242cf061f2931c5535" + ], + "nonce": "0x4", + "nonce_data_availability_mode": 0, + "fee_data_availability_mode": 0, + "resource_bounds": { + "L1_GAS": { + "max_amount": "0xc3500", + "max_price_per_unit": "0xe35fa931a000" + }, + "L2_GAS": { + "max_amount": "0x0", + "max_price_per_unit": "0x0" + } + }, + "tip": "0x0", + "paymaster_data": [], + "sender_address": "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "calldata": [ + "0x1", + "0x65cdd7892656f7f89887c2c84bb3cea8f8c1b472a4f61838496c1fc7cc8733b", + "0x2468d193cd15b621b24c2a602b8dbcfa5eaa14f88416c40c09d7fd12592cb4b", + "0x0" + ], + "account_deployment_data": [], + "type": "INVOKE_FUNCTION" + } + ], + "timestamp": 1720427256, + "sequencer_address": "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "transaction_receipts": [ + { + "execution_status": "SUCCEEDED", + "transaction_index": 0, + "transaction_hash": "0x639b6e601676d9a70b639b34b38626aa26d3c51ae6fae8195dfe7729b4573d4", + "l1_to_l2_consumed_message": { + "from_address": "0x6BC7a9f029E5E0CFe84c5b8b1acC0EA952EAed3b", + "to_address": "0x4c5772d1914fe6ce891b64eb35bf3522aeae1315647314aac58b01137607f3f", + "selector": "0x2d757788a8d8d6f21d1cd40bce38a8222d70654214e96ff95d8086e684fbee5", + "payload": [ + "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "0x29a2241af62c0000", + "0x0" + ], + "nonce": "0x4b" + }, + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x0", + "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "0x29a2241af62c0000", + "0x0" + ] + }, + { + "from_address": "0x4c5772d1914fe6ce891b64eb35bf3522aeae1315647314aac58b01137607f3f", + "keys": [ + "0x221e5a5008f7a28564f0eaa32cdeb0848d10657c449aed3e15d12150a7c2db3" + ], + "data": [ + "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "0x29a2241af62c0000", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 10106, + "builtin_instance_counter": { + "range_check_builtin": 245, + "pedersen_builtin": 18, + "poseidon_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 128 + }, + "total_gas_consumed": { + "l1_gas": 17430, + "l1_data_gas": 128 + } + }, + "actual_fee": "0x0" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 1, + "transaction_hash": "0x37ebf44a83f3337bb61f8c572d100fbfcbe94b5a8f8a190bb38c06c2e9b2d53", + "l1_to_l2_consumed_message": { + "from_address": "0x6FE45BEFC2C0E0F619D5ccFB6fA4D40590f6bC53", + "to_address": "0x594c1582459ea03f77deaf9eb7e3917d6994a03c13405ba42867f83d85f085d", + "selector": "0x2d757788a8d8d6f21d1cd40bce38a8222d70654214e96ff95d8086e684fbee5", + "payload": [ + "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "0x10f0cf064dd59200000", + "0x0" + ], + "nonce": "0x4c" + }, + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x4718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9", + "0x0", + "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a" + ], + "data": [ + "0x10f0cf064dd59200000", + "0x0" + ] + }, + { + "from_address": "0x594c1582459ea03f77deaf9eb7e3917d6994a03c13405ba42867f83d85f085d", + "keys": [ + "0x221e5a5008f7a28564f0eaa32cdeb0848d10657c449aed3e15d12150a7c2db3" + ], + "data": [ + "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "0x10f0cf064dd59200000", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 11999, + "builtin_instance_counter": { + "bitwise_builtin": 4, + "range_check_builtin": 410, + "pedersen_builtin": 20, + "poseidon_builtin": 9 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 320 + }, + "total_gas_consumed": { + "l1_gas": 17434, + "l1_data_gas": 320 + } + }, + "actual_fee": "0x0" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 2, + "transaction_hash": "0xcdfc5bfdcd4de0f3aa61271e0123cce9d153d543b08f85eb55e63d04ae9c74", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x4718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9", + "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8" + ], + "data": [ + "0x10c777568945b6", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 5472, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "range_check_builtin": 206, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 224 + }, + "total_gas_consumed": { + "l1_gas": 14, + "l1_data_gas": 224 + } + }, + "actual_fee": "0x10c777568945b6" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 3, + "transaction_hash": "0x6963ec558745a5eb34927ff945631d0157e842df64baafc0acdc45c7530c436", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0x1372c028dc4", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 8305, + "builtin_instance_counter": { + "pedersen_builtin": 29, + "poseidon_builtin": 5, + "range_check_builtin": 309, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 288 + }, + "total_gas_consumed": { + "l1_gas": 22, + "l1_data_gas": 288 + } + }, + "actual_fee": "0x1372c028dc4" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 4, + "transaction_hash": "0xc1a48191dd00ee2f05cb6b0c8f9e3e7767cbf13e55f0907f45339e662898c1", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x4718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9", + "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8" + ], + "data": [ + "0x18ab6763e70f9e", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 8305, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "poseidon_builtin": 5, + "range_check_builtin": 309, + "pedersen_builtin": 29 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 288 + }, + "total_gas_consumed": { + "l1_gas": 22, + "l1_data_gas": 288 + } + }, + "actual_fee": "0x18ab6763e70f9e" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 5, + "transaction_hash": "0x3b96f398134800efa13f9b6566ff7c23b2524e4d2f5d22d8fe9f684214473b2", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x4718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9", + "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8" + ], + "data": [ + "0x157f99b5cef397", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 6833, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "poseidon_builtin": 5, + "range_check_builtin": 267, + "pedersen_builtin": 20 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 256 + }, + "total_gas_consumed": { + "l1_gas": 19, + "l1_data_gas": 256 + } + }, + "actual_fee": "0x157f99b5cef397" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 6, + "transaction_hash": "0x5d17a95dff10124142c65a247439ac7a33171b927f8e43b3d90360d6352bb83", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x4718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9", + "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8" + ], + "data": [ + "0xfc7e01abb93d0", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 6234, + "builtin_instance_counter": { + "pedersen_builtin": 18, + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "range_check_builtin": 195 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 128 + }, + "total_gas_consumed": { + "l1_gas": 16, + "l1_data_gas": 128 + } + }, + "actual_fee": "0xfc7e01abb93d0" + } + ], + "starknet_version": "0.13.2" +} \ No newline at end of file diff --git a/clients/feeder/testdata/sepolia-integration/block/37500.json b/clients/feeder/testdata/sepolia-integration/block/37500.json new file mode 100644 index 0000000000..ff059d7d03 --- /dev/null +++ b/clients/feeder/testdata/sepolia-integration/block/37500.json @@ -0,0 +1,418 @@ +{ + "block_hash": "0xf7471e29d9f546fce49b82c15eb3f2d62d27526884e7787277c9002b9cac83", + "parent_block_hash": "0x133666b2b23b7dd617bf33b6e67255aaa1c0cbf9e3141cf4cc3c57b849fd6f8", + "block_number": 37500, + "state_root": "0x702f54f4fc777b52bfe061727dd0c5fd42e233a22c5f1f0015ebc5926ef6269", + "transaction_commitment": "0x4eaf412ea378ca8faa0fd2be8741d2a6aba9257c89f7a34621a6f434fdd6968", + "event_commitment": "0x7cd0fe9642e37e269a58acf8dd9574cb8642ac7198555fe0e1f00c53bbc7fd1", + "receipt_commitment": "0x4452609f7a3f015fbc85c52d49376dd575b5e0b2c52f57989e72888ef9ddca1", + "state_diff_commitment": "0x114e85f23a3dc3febd8dccb01d701220dbf314dd30b2db2c649edcd4bc35b2b", + "state_diff_length": 12, + "status": "ACCEPTED_ON_L1", + "l1_da_mode": "BLOB", + "l1_gas_price": { + "price_in_wei": "0x3eb371c7", + "price_in_fri": "0x58a6cc20b68" + }, + "l1_data_gas_price": { + "price_in_wei": "0x186a0", + "price_in_fri": "0x15080c" + }, + "transactions": [ + { + "transaction_hash": "0x44b6906258a90541e6e4aed4fc7dac92437ddaabad90d23632b614e86e2dcab", + "version": "0x3", + "signature": [ + "0x841bb360b5193c00e3a68018861194daf5bea36df909517e2fc58c468574e2", + "0x4272438e23b5ee407dc9b7f4273f2e05cd70856dea0de2ab21da663aaa63e08" + ], + "nonce": "0xc74a", + "nonce_data_availability_mode": 0, + "fee_data_availability_mode": 0, + "resource_bounds": { + "L1_GAS": { + "max_amount": "0xc3500", + "max_price_per_unit": "0x71afd498d0000" + }, + "L2_GAS": { + "max_amount": "0x0", + "max_price_per_unit": "0x0" + } + }, + "tip": "0x0", + "paymaster_data": [], + "sender_address": "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "calldata": [ + "0x5", + "0x4b4f08b68696ba6ca3fd389029d9bb995b4766137d3b677531bbf4daf4cdaaf", + "0x27a4a7332e590dd789019a6d125ff2aacd358e453090978cbf81f0d85e4c045", + "0x2", + "0x57bf0d97a5df93699924802cca2b94f116b8143b5461eed2a22f1678924db05", + "0x1a809bc02e2b01f90889c9f0f12fc328bfced04b5682c5ae560a83a8ea5f66d", + "0x13185b3ac5099a063cad6e464eb30ffa6a2852cb4a66de900cdd8617b7e3f9b", + "0xb17d8a2731ba7ca1816631e6be14f0fc1b8390422d649fa27f0fbb0c91eea8", + "0x0", + "0x13185b3ac5099a063cad6e464eb30ffa6a2852cb4a66de900cdd8617b7e3f9b", + "0x27a4a7332e590dd789019a6d125ff2aacd358e453090978cbf81f0d85e4c045", + "0x2", + "0x3d6933bfd424d3116f778553944913a49af3b8a33f3bc830d5b1a4e1e462998", + "0x44462f71dbc43b3d14b2c6a24535e5d68e50a5bd02bdc1601a5c0944a799bb5", + "0x4b4f08b68696ba6ca3fd389029d9bb995b4766137d3b677531bbf4daf4cdaaf", + "0x241f3ff573208515225eb136d2132bb89bd593e4c844225ead202a1657cfe64", + "0x0", + "0x4b4f08b68696ba6ca3fd389029d9bb995b4766137d3b677531bbf4daf4cdaaf", + "0x31aafc75f498fdfa7528880ad27246b4c15af4954f96228c9a132b328de1c92", + "0x6", + "0x2f78417b6726ecf2026e1af2be144746694cc95ee5a8e90f0ff48661bd6edd0", + "0x3", + "0x53fca29524498ed8f6ae7c3f89a448a945c1cf8191d3340a516f085131487c4", + "0x64eefe77c302f44b86564ab0a2d170bd67335b14286fc5a1c95db1dfd6224ea", + "0x25186844c66733b8933b0578e3d93957439f3919abe7c600c6bededa06a47f5", + "0x23ee8cb1edc358caaa2070cc26a33cf79f5cbc87ee65fefcc5b155af86a08c5" + ], + "account_deployment_data": [], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x4bb7f489b60c0bf2ca71b6450ac73c50086b83d524829081f6a77db1103a30a", + "version": "0x3", + "signature": [ + "0x7ba785f83928a040c9f5841f7cf41eac68bca516a664f507ef9519b1f18813b", + "0x2d45b9d3bcdbcbf76d9fe96c40dea02ea9f6030aacdb4db4853e3f63c6763ab" + ], + "nonce": "0xc74b", + "nonce_data_availability_mode": 0, + "fee_data_availability_mode": 0, + "resource_bounds": { + "L1_GAS": { + "max_amount": "0xc3500", + "max_price_per_unit": "0x71afd498d0000" + }, + "L2_GAS": { + "max_amount": "0x0", + "max_price_per_unit": "0x0" + } + }, + "tip": "0x0", + "paymaster_data": [], + "sender_address": "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "calldata": [ + "0x4", + "0x13185b3ac5099a063cad6e464eb30ffa6a2852cb4a66de900cdd8617b7e3f9b", + "0x31aafc75f498fdfa7528880ad27246b4c15af4954f96228c9a132b328de1c92", + "0x6", + "0x59f09cd5246b7e97df2628aa952b8b35ce8773bbbead9e9b296f2a7d47e47e9", + "0x3", + "0x3e0a7e8006ce6627d5045df3dafb13832af1601a01b893e3797755b58e0cba6", + "0x2632cd9a7f23c86320492ced6f9e8bae7b42df63d0c52e7cfcaf1f2fe1695e9", + "0x46faa07bfa1f4e6fccd5d55e9e076a614739b3eebf65bcd0c4aeceb24ac8fd3", + "0x9e8f7eee7186b67b5f3e8eaa6f1cc06385b40fb4cf6e8d7aea6ae3888e55f6", + "0x13185b3ac5099a063cad6e464eb30ffa6a2852cb4a66de900cdd8617b7e3f9b", + "0xb17d8a2731ba7ca1816631e6be14f0fc1b8390422d649fa27f0fbb0c91eea8", + "0x0", + "0x4b4f08b68696ba6ca3fd389029d9bb995b4766137d3b677531bbf4daf4cdaaf", + "0x27a4a7332e590dd789019a6d125ff2aacd358e453090978cbf81f0d85e4c045", + "0x2", + "0x64382489d9f51a6bbd49f2790a0d5d085bf9e4819ebfe9ada2129000ad8279f", + "0x77f4adf16a16df35338fbfa45678d3428331df7240c9a2be7e3c66b832f7181", + "0x13185b3ac5099a063cad6e464eb30ffa6a2852cb4a66de900cdd8617b7e3f9b", + "0x27a4a7332e590dd789019a6d125ff2aacd358e453090978cbf81f0d85e4c045", + "0x2", + "0x49667a6a1ed14647a07a7282dbf17a06cc133f4abcd3274b27a914e6fcbf89b", + "0x3d033db8de9c3d64a3396ee9c875bbc68556cc9f2951ce58d645c014ac79b22" + ], + "account_deployment_data": [], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x6475d4835b56f3bf05fc4430d00ee7d36fc8879e71ad3d93f264623d48b1f46", + "version": "0x3", + "signature": [ + "0xcd8d6e56826b24a3920e70f4f112546554c62c9ad6254a0224a14cd4f69759", + "0x209213220664cb4d86396972c7ba170183d9f756c97dd9cdd55ccc90a9cda06" + ], + "nonce": "0xc74c", + "nonce_data_availability_mode": 0, + "fee_data_availability_mode": 0, + "resource_bounds": { + "L1_GAS": { + "max_amount": "0xc3500", + "max_price_per_unit": "0x71afd498d0000" + }, + "L2_GAS": { + "max_amount": "0x0", + "max_price_per_unit": "0x0" + } + }, + "tip": "0x0", + "paymaster_data": [], + "sender_address": "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "calldata": [ + "0x5", + "0x13185b3ac5099a063cad6e464eb30ffa6a2852cb4a66de900cdd8617b7e3f9b", + "0x5df99ae77df976b4f0e5cf28c7dcfe09bd6e81aab787b19ac0c08e03d928cf", + "0x1", + "0x70bbe9682d50049c3297b4489b75cd818a935c783a8f4bf2955f58357ff0809", + "0x4b4f08b68696ba6ca3fd389029d9bb995b4766137d3b677531bbf4daf4cdaaf", + "0x1136789e1c76159d9b9eca06fcef05bdcf77f5d51bd4d9e09f2bc8d7520d8e6", + "0x2", + "0x61954db246f3ad51fdc03f45a7db0e35", + "0x18f525f1e58344fb4783dfdb14400b4f", + "0x13185b3ac5099a063cad6e464eb30ffa6a2852cb4a66de900cdd8617b7e3f9b", + "0x5df99ae77df976b4f0e5cf28c7dcfe09bd6e81aab787b19ac0c08e03d928cf", + "0x1", + "0x4e37e20ddf11c80fbf1bb53ca8d9bc11a7362b1c9209c749ccce9a909698a05", + "0x4b4f08b68696ba6ca3fd389029d9bb995b4766137d3b677531bbf4daf4cdaaf", + "0x27a4a7332e590dd789019a6d125ff2aacd358e453090978cbf81f0d85e4c045", + "0x2", + "0x77ceef1f69814554b166b6eb599e12e7c950b8635c78e7fdb3ca1470060e85d", + "0x5847d80389f672bf855d2c1e3a60ac472b67c7a92b00eee9e93ba7734a0e67b", + "0x4b4f08b68696ba6ca3fd389029d9bb995b4766137d3b677531bbf4daf4cdaaf", + "0x1136789e1c76159d9b9eca06fcef05bdcf77f5d51bd4d9e09f2bc8d7520d8e6", + "0x2", + "0xa45acf59021c58467b23962af751d6ca", + "0x489181d0de41fa8fb4dd612272ccadd2" + ], + "account_deployment_data": [], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x1e6bcdc4b2074abc0ea1e0fb8eec864317cc4b4c28e53abd5f776f6fbb15f60", + "version": "0x3", + "signature": [ + "0x12ed3767a5a50eda8cdc22e4532b8e0d42e445b3306657fc4e10b391f669e0", + "0xfc09dec214535dde57215ae373ad1fd7af17dacdb74744d828b017c57f340a" + ], + "nonce": "0xc74d", + "nonce_data_availability_mode": 0, + "fee_data_availability_mode": 0, + "resource_bounds": { + "L1_GAS": { + "max_amount": "0xc3500", + "max_price_per_unit": "0x71afd498d0000" + }, + "L2_GAS": { + "max_amount": "0x0", + "max_price_per_unit": "0x0" + } + }, + "tip": "0x0", + "paymaster_data": [], + "sender_address": "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "calldata": [ + "0x4", + "0x4b4f08b68696ba6ca3fd389029d9bb995b4766137d3b677531bbf4daf4cdaaf", + "0x27a4a7332e590dd789019a6d125ff2aacd358e453090978cbf81f0d85e4c045", + "0x2", + "0x27420377e357df917f46f7da15f75eef9a54209b04f0e7c1ced77ebf946ac22", + "0x6a50b14efece100bb11677ee2d60b64ce87bb2016272b2f4680cd430411ff0f", + "0x13185b3ac5099a063cad6e464eb30ffa6a2852cb4a66de900cdd8617b7e3f9b", + "0x3604cea1cdb094a73a31144f14a3e5861613c008e1e879939ebc4827d10cd50", + "0x4", + "0x1e91a14420438f40f08486792bd70f80c10d42da783f41c7e64e6d18fcd528e", + "0x5df99ae77df976b4f0e5cf28c7dcfe09bd6e81aab787b19ac0c08e03d928cf", + "0x1", + "0x49da9aa978742794623aeb8962eca0d4c7bcd3e51cd5821e4588a712db15176", + "0x13185b3ac5099a063cad6e464eb30ffa6a2852cb4a66de900cdd8617b7e3f9b", + "0x27a4a7332e590dd789019a6d125ff2aacd358e453090978cbf81f0d85e4c045", + "0x2", + "0x5824decd0a03f4a6158888c7b32ab20a3c7da4a2111224736d8a9601ccdb128", + "0x5a7a736db3204fe897ebe35170d303011ba6894dc669ae2895d7d252c8b7d73", + "0x4b4f08b68696ba6ca3fd389029d9bb995b4766137d3b677531bbf4daf4cdaaf", + "0x27a4a7332e590dd789019a6d125ff2aacd358e453090978cbf81f0d85e4c045", + "0x2", + "0x7431f86a4b86525ba04a618ee9341ba2700f9140f7d3a4cef2bed168853aca", + "0x73d68a78c82678e56e8b773c93be758a2d78357e3873183df2113757249497e" + ], + "account_deployment_data": [], + "type": "INVOKE_FUNCTION" + } + ], + "timestamp": 1721499599, + "sequencer_address": "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "transaction_receipts": [ + { + "execution_status": "SUCCEEDED", + "transaction_index": 0, + "transaction_hash": "0x44b6906258a90541e6e4aed4fc7dac92437ddaabad90d23632b614e86e2dcab", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x4b4f08b68696ba6ca3fd389029d9bb995b4766137d3b677531bbf4daf4cdaaf", + "keys": [ + "0x15bd0500dc9d7e69ab9577f73a8d753e8761bed10f25ba0f124254dc4edb8b4" + ], + "data": [ + "0x2f78417b6726ecf2026e1af2be144746694cc95ee5a8e90f0ff48661bd6edd0", + "0x3", + "0x53fca29524498ed8f6ae7c3f89a448a945c1cf8191d3340a516f085131487c4", + "0x64eefe77c302f44b86564ab0a2d170bd67335b14286fc5a1c95db1dfd6224ea", + "0x25186844c66733b8933b0578e3d93957439f3919abe7c600c6bededa06a47f5" + ] + }, + { + "from_address": "0x4718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0x1915b2820db5d8", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 266546, + "builtin_instance_counter": { + "poseidon_builtin": 7, + "pedersen_builtin": 40, + "range_check_builtin": 28894, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 384 + }, + "total_gas_consumed": { + "l1_gas": 1159, + "l1_data_gas": 384 + } + }, + "actual_fee": "0x1915b2820db5d8" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 1, + "transaction_hash": "0x4bb7f489b60c0bf2ca71b6450ac73c50086b83d524829081f6a77db1103a30a", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x13185b3ac5099a063cad6e464eb30ffa6a2852cb4a66de900cdd8617b7e3f9b", + "keys": [ + "0x15bd0500dc9d7e69ab9577f73a8d753e8761bed10f25ba0f124254dc4edb8b4" + ], + "data": [ + "0x59f09cd5246b7e97df2628aa952b8b35ce8773bbbead9e9b296f2a7d47e47e9", + "0x3", + "0x3e0a7e8006ce6627d5045df3dafb13832af1601a01b893e3797755b58e0cba6", + "0x2632cd9a7f23c86320492ced6f9e8bae7b42df63d0c52e7cfcaf1f2fe1695e9", + "0x46faa07bfa1f4e6fccd5d55e9e076a614739b3eebf65bcd0c4aeceb24ac8fd3" + ] + }, + { + "from_address": "0x4718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xb6d8248f8a68", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 11630, + "builtin_instance_counter": { + "range_check_builtin": 477, + "poseidon_builtin": 7, + "pedersen_builtin": 37, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 384 + }, + "total_gas_consumed": { + "l1_gas": 33, + "l1_data_gas": 384 + } + }, + "actual_fee": "0xb6d8248f8a68" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 2, + "transaction_hash": "0x6475d4835b56f3bf05fc4430d00ee7d36fc8879e71ad3d93f264623d48b1f46", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x4718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0x11a93bfb051b8", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 18903, + "builtin_instance_counter": { + "pedersen_builtin": 38, + "poseidon_builtin": 5, + "ec_op_builtin": 3, + "range_check_builtin": 1005 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 256 + }, + "total_gas_consumed": { + "l1_gas": 51, + "l1_data_gas": 256 + } + }, + "actual_fee": "0x11a93bfb051b8" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 3, + "transaction_hash": "0x1e6bcdc4b2074abc0ea1e0fb8eec864317cc4b4c28e53abd5f776f6fbb15f60", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x4718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4136ff8eb3070b7141dccfd95e248ec747a904433449f3ea9e80664719c0f8a", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xc1ed0355a438", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 12431, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "pedersen_builtin": 37, + "range_check_builtin": 517, + "poseidon_builtin": 8 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 448 + }, + "total_gas_consumed": { + "l1_gas": 35, + "l1_data_gas": 448 + } + }, + "actual_fee": "0xc1ed0355a438" + } + ], + "starknet_version": "0.13.2" +} \ No newline at end of file diff --git a/clients/feeder/testdata/sepolia-integration/block/38748.json b/clients/feeder/testdata/sepolia-integration/block/38748.json new file mode 100644 index 0000000000..2b69a38fd0 --- /dev/null +++ b/clients/feeder/testdata/sepolia-integration/block/38748.json @@ -0,0 +1,14284 @@ +{ + "block_hash": "0x40b9de4d20b6537151895df0fa2520be3639a2a2a65915b5d27855efd1d78fe", + "parent_block_hash": "0x710baa1c4af671a3016fc23f881161b1241cf7664cc3e8de19d4b3395699ca4", + "block_number": 38748, + "state_root": "0x4628191c1b4000fdd0f64686a38b4701e42dafaa3ea730a6d57c55f69c3b618", + "transaction_commitment": "0x6271d5efad2c3b54b78f97ef2c53810b924b28c0b25109e943970d24aad613f", + "event_commitment": "0x5d1b7c74d6fadbcd14281d28916a34a59fc0e2f14b4b65898b4793e31567ed4", + "receipt_commitment": "0x1a6ecd3a1eb1b3d74d3c2a375c8c77d1fb5b860d0bdb13cda633c1541f090f5", + "state_diff_commitment": "0x2bb5df3dccd80b8eb8ad3f759b0ba045d467a79f032605d35380c87f8e730be", + "state_diff_length": 500, + "status": "ACCEPTED_ON_L1", + "l1_da_mode": "BLOB", + "l1_gas_price": { + "price_in_wei": "0x6da1f4747", + "price_in_fri": "0xa1889540f45b" + }, + "l1_data_gas_price": { + "price_in_wei": "0x186a0", + "price_in_fri": "0x186a0" + }, + "transactions": [ + { + "transaction_hash": "0x656a5948f817e538a4ea7ab86dadc1d351db38cb84fc34f43de45959f3d99e8", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x657d900335916a90a7db4eb281c8a76e407251ddb016fbf52b5482749d6a5bd", + "0xbc34650982498581456ffe671a44778313e5d2cb7df704292b32d26bbe7d9f" + ], + "nonce": "0x37", + "sender_address": "0x3732d673d40f828b64bfc85236012ce2c280d3c936aacfb8104f7d4c8c74bb0", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x84bde295632e0884a4da2ac3e59d450a5d1c50628480316202aa9b9258464b", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x77bf77fdacf7c42c92f88ccdc0e47faabe4fd544f8418880c9aedc9c122cdc8", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x6caa463e5c025aee7d50f8a0b289a94a46786899c6504241b302df840d16d60", + "0x526d302dab114955afdd0d66eb5bce39082f0d584400395ba99bf7098cb0b3e" + ], + "nonce": "0x20", + "sender_address": "0x4a724a4229813f34e274837684c652260f7621f76e9457942f05cb59fe4469d", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x3fadcecafa9e47255cb635659c8998fc57e0ac8a780572a0b9936b4f1947a46", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x3b5daa647e491e8fdd09e38901cbf8af8b3f6c4b9bed6c9519b015a8f7e3861", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x654bde5a25c800da95f18748cd48d901ecb244e6dbef156e5303f77363e37d4", + "0x4dfabaa6078f94d037853a7fbafc3bd1abb4095bc2bdb7ed6678acde84c534a" + ], + "nonce": "0x31", + "sender_address": "0x594a6c429ca64604465758db99ef286d5c00d847c8072fec3ff5f0e6b65cf64", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x56d6364ef2185be391153e866bd87a6a98cda9987f33e37df583c4d2bb3ec00", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x210d258284362c34cb0dd115cd12d5481ee07f424ca2179616e01314ec8520d", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x24811534f36ebd93f10a41f4d2388300496d47b216e8c57aadb63e57dbf4ce6", + "0x159ff011e40bd1792f46ccc474bab31780763069d9051075b44a0fa6d717d5f" + ], + "nonce": "0x32", + "sender_address": "0x1e6da06bc1d877fb69dd4110f38f0e5a206174c57305df51653141381aaaf43", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x27cb50f80270672f1fd0351a7abc49289ad9b1f8b34f21c0856f5016d1fdca", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x24f0b8d99ff58e931658c8c9db4db308375bc2ab028f39f3183326da621062b", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x7a77134f1a10dc9b4bd3c2586142aff951e9a71504ed8317d7d60425ea2741e", + "0x6808a05dc7e9119e1c6702ab572f438477ace3021e2248d7943633fb8c9d9b0" + ], + "nonce": "0x16", + "sender_address": "0xe04c9e37787de848379c7898612cde59fbf95ec633deeea3e34e81f1d7df56", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x1aa17d35edc3ee0c5b365595db91c1f48b9ad8dfb6a6b2aaa357d2bb01b4dbf", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x74c851a56435473eeee26bd0f33cfba5bcc2d86676847fe093ee10955b3e41c", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x15ec5a6b55b7cf7a2d3f05c1b44136951f60ebd3ef356b9cc8f01e69f1ced96", + "0x7215ff6f4455e2c149174e9581e9477c62c2f8ca90f1cfed4d8c3c570671e19" + ], + "nonce": "0x31", + "sender_address": "0x273d24a6e32e7dc5531d7e1d17df2b2f91b7c50da2c9142a78c02de878cdd5f", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x73a6c571a923b0de62c56e0ff8d91fa03d1940f12a3044923db283fe7d52bb", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x683e8de59fbdda5bf2655a5b56ca713dd4708b653e3ea2d0eed5fec5c782f59", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x21a0f5d8e1da1c39e2f7230161c0eb9b287a362127ecf72c932e0d6cf3a9764", + "0x490276ea7325261b1fba4b2562cc12fa6abe5ea55470c8971e287208d757572" + ], + "nonce": "0x3e", + "sender_address": "0x275c01d887730e6551ff416d8ef128d2a79afcbc244c776c819aefbea1818bb", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x785cea5ab7fc2a8b2ec4de10f787da9afc826be52dba9883becf9351d59d6ff", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x3ef0b3561556607b1fd19468dfb5bbd66f493dc648d5a14dbda6943bec9481", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x69dc98b51c43a00864b8abeeb4aa9e0a3023f3b89b0fa59f60bd980f8c5a2cb", + "0x1b59d32cca82af0816915c2f99518a4debc18ecee7d41e09274237cb6414725" + ], + "nonce": "0x13", + "sender_address": "0x755a7995c1b920ef28e18c4978d73a1c935ce206722c4a8398a1735548abe2d", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x29595745aa0c07dcaedb213ff8adda5a32a10184a3f8b67fa81372be9f84176", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x3821214c3836ba0f4e58181ad0d0212acb5c448265f3f376f18c460531e2256", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x524d7fdb77b6a1ff37a83c1e5743b5f65992ed126a9cbbb9663c6d1db957967", + "0x7c37210ad72f743bfff2f1e558d6d6b9e327bae7dd13631946d9c0eb2879d25" + ], + "nonce": "0x2e", + "sender_address": "0x9529b7734deb881652cb0903f26875b01134cb0b091822f85edc697164e7d1", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x56c0469f6e05e124f8072a8e40dc278fc4788bc5ab2d9f083b2abae727d51f3", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0xa8d6fa6804a4738c82f9ecb50b61d6ed0c6f0b5d095aa244a83390ebaad6e", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x796bbddccf599fb0bcdedd9af1e241dbf9233019ae7c5f1b79381ac41b665a", + "0x547c0a0a7ebfd8d9e09b5c0b2f309ce32923d4b208da92889073d11e2bd14c" + ], + "nonce": "0x21", + "sender_address": "0x350e280198d66aaecfeeb902b02089e026bc792f5ddfb88b04ebc92218f8fcb", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x54c2a598d057bcd861c7d9faaa527f829b5b8055e83dd0d733e5c0a5bcf392b", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x2ed387a8556608d107de35e3314fbafe0bf2871af0b5d2034d92e56c899eaa4", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x70873881cb6567b50193aa73206e951fb2404faaee067c0d36bf3720e6437da", + "0x108a0e1c16ec51ce52b776fc1d98a467c52b101199ab32405c87378ecac6836" + ], + "nonce": "0x5f", + "sender_address": "0x2655cd6a02dcc25554bdddc055f304c84bb130828e1b162c82958bbc92dfee", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x1de3a6279c19fc65001bd37d37156e33b82a892a1620d14a82b8101b5fd2592", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x6ad74b9ea5705c5b36c899b004acdde0680b383efcd0f4a6e6323aa254dfba5", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x59103443bcb42bbe0d7016d0b0f85a98e202ac3ea0dab1eaad6b163b0e6d4e2", + "0x59697218dc2719176f2c9cda0872cf16af1dc0419a7651ddd64d017e791838" + ], + "nonce": "0x32", + "sender_address": "0x11f8473d749770009ec91b9e6f723403f9be76e2c93c62919d14989aa9f343d", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0xfa08ecebee06e3f4ab3024d55b2e1a5646a2e8f14054c21a22929c08444bf3", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x584739a828472d302c76113ca2380f66fad7e8db93a5b33bab83b26f57f6192", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x6b00b79d5d25b7de73a1168bf328edd2fd6001142f9790bcf26f570022c8331", + "0x480836a81e47b2f4332eee2bdbdb6138c840f53974586f4bda839b80143e019" + ], + "nonce": "0x7d", + "sender_address": "0x13372661462e9437e3be7442c0bb7f0a28642510ec3879927eebfdaa11c6b64", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x478a36fdc297561841694773015a2b756503f499b50d72415e6f92b731cb4e", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x2d2ff22e0a1f3d6e43acb5da75ab4a7c9bc6219350953a0c29025271ac64bfe", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0xb85e34a831d216cdabab4a5c3cc212a5ee2bd36eb46b6c33e4982d0dccd915", + "0x191ed3326f108777e9dfb895054561e5a905849fc67eed139fd1ba620c77e5d" + ], + "nonce": "0x58", + "sender_address": "0x6133eb7e32610962c067accae847789b414e52ef69407bcda0dbc4e0562235e", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0xebcee6a064eb96a9c7046d247d108b5d724749ef666df3a110fd6de085cdbf", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x79f9d3d4aee74c24d0bd7c6f7ee78bfe5a3553fd6d9b3622c744bfcc0eef189", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x981bc5cef86ad67c04ceca17641b765a03da5e427c17b1a2116d33a28c99c1", + "0x265158bfd8680f4b54c05d5f570df0843e027807278378006c6acd8b22e409c" + ], + "nonce": "0x39", + "sender_address": "0x77c28f25bc25bd5207ab10317a8ad029b560f22d77b3492cc910236a2ce1278", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x1aaf85715f7f99649113cc8ae476ef19d6aea4626efd7690aba563582eaf876", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x14a53a8cebb83a7bde0734b5ca9687b1345e9933286eb0c6835d0bc6d937d6f", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x4e3c7ac72d6f8fcecc038b17354a761f5e3319f7b185d66569f51abf44b9f2a", + "0xf39c6585b60cd0d5195d7a8cd59ae84517ae23f7e7cf0429cb68859614d14d" + ], + "nonce": "0x11", + "sender_address": "0x87b5c2536abec4170cd59c7ad72798d6dd22bf2a77cb5d36cb68876d59d258", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x5fdef3d45e4cb5d8c05adf2c05d24d13ceaed27254cd4571beb9f8652cf6a69", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x140e311a333d622148eb3ab8aaf0facd38b74b5cffd5b48ce795fbda701009f", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x22014862a64f2ca192df99311a95d21905feda98ff91fd478419252ae145b59", + "0x474ecb407e6e0751455909415dea44ecd910caae0ceb3bc31ad5ef8441e0b8a" + ], + "nonce": "0x3f", + "sender_address": "0x3341e828e15b839729b07957cabc597cb6556e61649a0f3bf98578f4b542c9e", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x78acb5290012e08fbf2aca15c32d6d3a70d86b02a77568df648068695555a43", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x2c51827298b7e36686f02c0bb9b43cfbe878d5a6332ffa430d63cbbe6993632", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x7d36ae5db2a7fae94dd83b0253727e200a40287519f15544295ca610147c8c4", + "0x66ca9766528fe59d828c033a0890b2d4fd9de8c1eb2476dfeae0f3310c13048" + ], + "nonce": "0x4d", + "sender_address": "0x2709f3ff0b285074ffbebef3078d2ccd7d26d0fd7bcd4422d8ceb5e9a6a40ff", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x660586392cd851387fa2a005d5e2f8045e4a56d423739c91b5586a3e5e3a271", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x13ee0bc0399bec6c2a8970ef0da8e655780a28be5909799db90057686c94c06", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x3f898ae50552c9435f9b9121af2738304f7f5e950f514e9ecf6731036cd2224", + "0x200967003b91404f533b9ab90e122155cf8a57e6abe63aa7c74d02978ecb5b2" + ], + "nonce": "0x1d", + "sender_address": "0x401930eb5465af9c93f63defae98fa9ededf374a901f24f1210a150923d10f7", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x4821573fb5df2b7a3ecb05bef19f7deff03c68c7f1eedcb2245ea5c04fe0dca", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x11d22470bc9f43107645caf334e36f403f0b352587ab9515742043b60bd8f41", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x1b8a98a1241137491818bbc7a340f2ae9e4ebff26f4a6b57583b058d605e356", + "0x77801989490a00c830976cfe8e8e9a22b71930b8361b45622fb2807934be448" + ], + "nonce": "0x64", + "sender_address": "0x59c0424db8476a9d158e52848aea567f806afcb99141b8ef0a543758db2ce60", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x395e2721f3625ef250ef44e1d2f746b331891f2431b3df17d65e0037459a5a3", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x2b5ed98f483bfbbf412eb2ef1b9075a16381f39a8296a951dd55085d6394e8a", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x3269d7fc94a01888aa6e7716074f07f8eb52c3371f34bb0c914e2ac4efa5b8a", + "0x1a8970dde3cff2962b6f522c11930f02159dff6195f3be712b40308bd2b712" + ], + "nonce": "0x46", + "sender_address": "0xcc4c8e4096a5dc1b161bde1c0207c34f82f4c0195cd428253f1baed6308d5a", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x33a0847247d19ba053893b0b31ffe11c0895e97806476fa383f70fe49f2585d", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x2dc6f4e98d1aa63ceb803559f287084a84db3665306dd2bc52a1237934a415e", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x342df7c7040708652ae47f8b9205d9a292d1e7bf22aa4364378c634b755655d", + "0x79f251f59c6906f825e10ab7b85d8fa978c072c9ca3d2c622e9b95e413c1939" + ], + "nonce": "0x30", + "sender_address": "0x9a747a346243aff99283048beabf09c2ef25bfbbc8a177945f3a0eab0d3882", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x21aeb9df0d8dce0b45960d1644a4d81a83f9a0f8fce69a812f4af05893f411", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x378d05a544d7df1fdbd3745204223b47aec76bd3f14f98147c572c206e461d5", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x12c82c96f40158df756363f3a557d2dc7cc4688aa31486d3de88a6cbc3ca934", + "0x572f8755409e2f945ca1c7c9a600227b881c86d320dc12cffb55afade3d7a1a" + ], + "nonce": "0x28", + "sender_address": "0x4c37d767a43169fce247342e46438d0bea2b0d7f4efcd4a4686615e20a7c417", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x3d958b59764c3d117f7513a53bf399d80f1d454b17db76317bb046b86cacb7f", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x2087bac692be145742133fc040cb270807006f0f95272eab6d847d47ee8665b", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x2692806d550b7d8b2bd70c907b0e6417ea137e6909ebe5f1ea67bc54a91956b", + "0x33158603f492cf5b9d355548544bcbc7fa0af75aef902993c4e0bee20169e18" + ], + "nonce": "0x2a", + "sender_address": "0x7b3f54f0755766215caa99b8ce31250020050ac00bdbdc25bbeb1cf5035388c", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x4c05cda4a1d91e09a4ed80dffb64c2c2bb74b62b87e2546185a30d2be76f3db", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x10119548275e625a700f0cbff8323d03e4cec856dc7b1377bc91fcf42eaddb6", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x12f3812ea0fbc8f46130e2e67293f02a4ae1d9513c497ab2bc52302fbbe88ea", + "0x742cd405f150ba142d8fd6b6271676d2133eb95ec17f5865fef8f7b76ef4841" + ], + "nonce": "0x3d", + "sender_address": "0x45588fdb74513b42789edc109403dc2c2ac13e1a7bbe19a99d9ec45297f7450", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x391bc0289a116b822c3c5439091eb16114ed7f83196a06a97f14e0a3c6faa9a", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x2f4750c62fdd789fb68179b9197946f0faf3501654619ec73b63451323cd6f1", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x48767c88617f086cb201556443ec93162a1018f787d67248afe8baae9e8e366", + "0x75d32e3ba10a5d92f4231bc44d33d45c8ad1b9af7b0cf87b2cf258aca1e3067" + ], + "nonce": "0x45", + "sender_address": "0x1bf2463473be14da2f0ba583dfe08a8465ba99771450d67599de126fb58da9d", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x7308fe8a4ff72e79142e2c32073bd55e493c4d10864879e2cb7c5a4257224c9", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x3effc0e555c49d5e11abef41d6d1182fa5aee5202cc5d89733dce5859330057", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x1b7fb90f3d883cc2eaf752b92d6c30b05dc87b4647a0736298c7160e444230c", + "0x4a357380c5ba246aebe4a4c95e308b2d091b6a23bb2ec865e317f108d1c2626" + ], + "nonce": "0x39", + "sender_address": "0x11e0a33ad5c43d5bd2f7f0ccc2b66f591c6c908910c1f2f377c6f586a458eb0", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x37ddc556900ab31026fc6882947787335152a0efe67633af40a7e064fc204ce", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x33af48b568e7471388d64ce6261f698c4452772dc0950703cd8970326454663", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x5a0b04cdce53a6bb7074c0180527cbea6dfc773fe5ce5c2b5845d5eba592019", + "0x5380bbed4ffbd0dea2635fb965bbe10ec2c674e55df8634875a5434a67313cb" + ], + "nonce": "0x35", + "sender_address": "0x768a45776c6e33860c802ea8b6f69170b275d576ff5ea0b6ed54c7b0da443e9", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x6eca19ab5a57bffb4a7aa89d27a4ff3a6314c8b4313565de209270ecad579dd", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x58f3d4f56d5d73445f9539f87c57604ba1a7558dd89395ad67246e5dbe54ed9", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x1d29d4c990193f8af358ec9e10e1c31faf62bbccc70a22f52840087bf628ace", + "0x176be6bd8ffdb2bf442c4b4728cfd46b3143059d8636f38da0308ffc4d40c6c" + ], + "nonce": "0x68", + "sender_address": "0x7b4ca69e72ffdbb43edb9266a3ce13b385e714e06f6aee2d7f2215b405f6a9a", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x452d5bce0e02200bcb5e8b1d306ea71dcf9d2c686c45eb037c69961757c606a", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x5efa3153e3cdafc7575fd30d6a32c777a5bdcdf5bc1af3b8e54f46bbb80085e", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x11b4b849fb7b7e7af4c198156236147f8318b2bb508675c8bc74192c884a754", + "0x6f04c75fc71750bf40675d0f29b19b819783c63a5b0bfc28c95f2a289afa746" + ], + "nonce": "0x45", + "sender_address": "0x2ec59285aa2e4cbfefaddc331f3d876f207aed3b028f5b62957b0a464f92918", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x4b44dcf7f50ff4eab2271a0826997ce11512d4a9cdd5de9e2cc60cb970c50fd", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x244e0157f6ba489d5470cda9d2bfe76f508267cc6784f059dcda8a997e467b2", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x5aa171da9f2513df68625db687e316a75286d9f58a0dc012f58834ccb87abbe", + "0x1f55eeb1323319c84948aed845e11fc62cbf20bb30ad019a827b2a387bc3c0b" + ], + "nonce": "0x23", + "sender_address": "0x451d8a5c0ea89978d07a24ac6c594e1f0b57ca0a141ba357d8e169fd73151a3", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x2dee60c143474cb2205f17ab17b0f8fea5f6a01c86cf8e44b419a456f8c7e1", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x34a973c5db6d82d636614d3ee29548769516670ff3b8497b0dceaad68ca48d8", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x1ac144c1c83d6e118510140924bac0f232a66de40a0c2631666bed98b8ff7b1", + "0x6d73527ad53b4190563adb1e8967ccc6b5fc7dbded3faaacdb64eca3228d4fc" + ], + "nonce": "0x49", + "sender_address": "0x253b4898f783590539e8ff61faee36bbe6f4022af6f5742fd80ed8a609d8cea", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x7a1e29a8753805b7e934bbf1cd9bcb597d2c7b44d2697fd8ac948fd70330263", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x7e0cab05b44a35458c1bc9fd8d968c8c56d131ba02e6a6243993f445ae7a392", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0xfc3f968fb260bfbd7074761e5999effafce3c57c45d033a183d8d0b984cc0", + "0x5bc48b3674e5d01c41c2bfeb435665aea65e02c428347b53bad0910d2de8fff" + ], + "nonce": "0x42", + "sender_address": "0x689549c1747f38f450a34084202987ae19adc553d7ce10c3d5136ed8f768334", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x5f1dfed748b556201babf0356c65525210ec3d0ad2e30acf3ad708bd63f136c", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x19e04c41b99e60d3a5a95cfbc0127bdf3d63f9547ea862df7303e24cc9f692f", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x3b53a1bd56eee1811946f77c07e48904fb66282b05a776c192a39bdadf8837c", + "0x17d7140a5eebd04a5b3bb759dda236a185d3d94cfa206e01ef57b68b68faebe" + ], + "nonce": "0x52", + "sender_address": "0x5aa0c4b6d10882180ed3bf70dc5bb99fad462fb926c251329f4c0f997cd5ae9", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x37cadeefb58ef26828cb8e74d5a1115388e279d00f5812f7c86ed76372778f0", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x38515fa92e8ea300fd8d9093f81d2164f73006cc51e105d7538ef303df32d3a", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x3aa5215cb7ac715a049276eebc16707e54d70de26717374a9cbd72b70816262", + "0x12258755c8097179732974166534428a1c6dd32fa5e31e674aad49b1645f4d" + ], + "nonce": "0x3a", + "sender_address": "0x2390a4d84cf00928adf4058ff1f15c8fe615ccaa3ccc1cd9b571d8be7ae806a", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x7012059a4cd41f6bf89e7ec7a82ca1d9cd083da0c282138b0b9e8239c386978", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x44c1cc2a46a949e72c37d323fa5627bbbf0e7f8bbe6f73296773add0bfda3f2", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0xbbf42a380c2254ef81692ababfe55e87efd0c9f77bf2f0029aa543f6811e6f", + "0x18256ee6395707f1947f5db68511afebcfbf65bbce0f48550677747f2a5206e" + ], + "nonce": "0x49", + "sender_address": "0x2e19f222ead0bc05ad25d190bf89a63ecabf82f53f7d6bf383d05553acaf123", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x365bd268b91dd5dff4d54b7037d0b4b411e3fe15953f83b8a61102ca19b8509", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x22af4343899d28a47c93d8c140b2570d0a910596594c51ef6e8dc0548c8f13b", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x7940a9d9a1231d748f7e7ffa39b59066a442d41f300b1fe6b9aff2c2450d7c1", + "0x2cf2eac4cce97379da63b6300f1e5ef40a17339867349ca5f5770dca10d78a8" + ], + "nonce": "0x38", + "sender_address": "0x63e18fe7f3cb5a5194204ba9107a7f425c503c6adef0b686127b14bdeb5d302", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x714bed568aa17143177d8c83afb9446a685aa64a5a506e732ce592adbb770e9", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x1e3af76a9fb580153dce7f03a0d2e74418c47e301c875fc7862c8201d1ba8bf", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0xbbaf243db49b943b94178e333f48045c23964599622a7799bba27730abe6ee", + "0xa595008e3917daae015d8f0757e71bd5c308c3626989005c107093783930eb" + ], + "nonce": "0x41", + "sender_address": "0x6804962ed2a44ddd07ad2931838b13ebc114b3e7f91b220fee99a5aca96e83b", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x74add3c8e5cd6da0b2255c94c86de236951e29660a46815afb91611c872413d", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x43fc4f993027fe63d1bd05764c997658e07106bed4e01b90eb715491f5481ae", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x70d1ef2019e1031e214b84b9761037081162a9d9215dba18f9d931ec4d6b338", + "0x260f1afc5713c1c55c78bc5a58179cd8e5ea99381449c7a1c90ca0935b3b3ae" + ], + "nonce": "0x31", + "sender_address": "0x2333f8254e3d2a9f527f4ed292f0f84b35af2dac6c0e664691ed48c7251ecd", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x6d6838f0ffc2d82f7e61221507a767634e9fbf282dc1016133a3b9f8e88943f", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x7775ba1c7d8779ea4e3d5fffc509f37c983af9eef79f1d392603a25d5b1eb59", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x37d655d4e2267d76f54838bc94a902bb05f8cbdcee1edfd34a0fc94f7004ba3", + "0xfc7029668824194bd2de31423fc172828b2c5c6e5310a000a490fdd2a21f22" + ], + "nonce": "0x51", + "sender_address": "0x200c519983a0104346afba82a2dc4eccd4a4373aa70a13316626e932cb6e58d", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x6b1c39ba34d99b5b73eeb4506bff45a05410fe07f14e461967ea8d930e93c8a", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x6ec2c34b64429db15b38e39ee43df93a80a0ef87a5393833cf65cc8a461ac1d", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x66b2796e1db4ea4d2633261561b21ffc0092bcef6fea08dcd8c2c3fb9c1b7eb", + "0x72dfbde6ce38ad2159449015c00d0a2480809ef3a5ee4d9d1f612ec2db28b6f" + ], + "nonce": "0x44", + "sender_address": "0x48cd92c018be0434daffcbcbcd6722aceda59a54ad1efe411fec777f41f8caf", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x582f41ed435a925057c9a1580823da6a37565e33ed96136cf70278bb29f38bc", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x78cd795423a239f87e569a05f713ab523ceba55bcc100b428aa145aa4d44d3a", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x73933cdd35e1a9632098dc6cf32b05556b433f1aacf74650116bad1aa08d76c", + "0x5f87c0ffc89d08ae9dbd2f3c1d50e1ad216170685f21bf431371b6593d59ec9" + ], + "nonce": "0x62", + "sender_address": "0x3acd1c7261d5bda1736a89318f1b662d1ff804ba44a0c510cd2832156bc4a6f", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x376f58b6945bf8c6f6964e7b514a958da8b3699bd39b3f3ae0484f349f95ce0", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x2e6f7749036b34360b234e974d63a51edca243f61d2493d1756aa12ede6dcbe", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x3693e74ed5369b508434e506d9a4f9e29c83ff4f16957703475389f1530d030", + "0x1ad1f4a0c85378b4b7d445a44a3e2b7a91aee8c7fb225d7d83b815076353af3" + ], + "nonce": "0x4c", + "sender_address": "0x2cbd65c97f07d4b0830802c819049523e1b8d30cc0bf8d4246df94854faa766", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x7e7661daecb8a0fca7dbd2ca85fb063680c311d0341940fc611cc5e4a6e60c7", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x95de0efc6d55c4c762100029aa94cb46dbdb0ee3307eee7bb83a5127fb5554", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x186fe97a0460660bf95a2ad9189483eb81feb5cc45e078dc9904a6fdcaaf43e", + "0x228e781648147ef30fb3c9d31661dc76d1296549dee9c8ab773fee0c3b7cd7d" + ], + "nonce": "0x48", + "sender_address": "0x5b574462c662b90b11ce7c5750ac6b71d21d5b84c62a6085220557f3e54c14", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x5636db2bce3ab1d1df307dee084d35d20eaf66970b2fb83cc12f7247ab1212e", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x6c2178115ae217acb8ea704cb08258c873ab13abc296ed16f2979ce25287417", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x2257aa2204257ae889b38be6b628fb2c375c4adabdb4f69c6e9b48f7804017d", + "0x2c4999699d6354896c8cc57c0a7e0dccd9c50bf81915b35cfbf60800f77d562" + ], + "nonce": "0x52", + "sender_address": "0xe2fce66497ffbc0b04f6d1c27eec2f8da3c4b7ac78a24cab67595644173eed", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x7ec48ff00c0e2c1fbacb1c8b6dfe3e0f43a9b196134d0b2132ca973bb1f1bf7", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x60dabf1d8850e62b5c6efc27e0c98fbc3d808fe21251bf5d19c55ff5d848754", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x449e6c256f96d2f1615e7d8a88a424906567d68a9ea7dbff513e159b2d57d6c", + "0x69e1e96abe440a54cd2f118feb7f834fde05da57a8d585dfde4ea45a2a26d14" + ], + "nonce": "0x66", + "sender_address": "0x38f5a14f93aa2041cbab6a0a2eb909f268a10be56addc697592c87c68eed875", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x2c10d6b259d6fed242b6136fc51c549f0937a44a493367fc86ccc529b462959", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x79dc84c42dac21d740ec7e54cad6d88ec6e26233eb932e1a511f7a1e21c53b7", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x34152323eb40532d263a290dc52536334c71ccb4050319e320f5744cfa14d12", + "0x572aecb2663f6a34d6c478a1e946445a3963cfdf64b3ca7e4427373ba29cd51" + ], + "nonce": "0x4e", + "sender_address": "0xc24b71d1cdb836ea2a8a5d364fb9131c44fd4e15d1129f2233e3dbcdfe855c", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x1d3462f4184e648b3848f1ebfaf75f4b23742924a725d56bf1cfc9492d0ace9", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x4082594ebf3656e1c4d1145e8ec5ba563e5d63a7868aecdec6a23800a2e259b", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x695a20facfe5aa1f2c297b3fb25beccacd8b2b44762e9becee7825ee6a2bb47", + "0x504e8404b097bc7beac715f9dac2b72a79f24d41792646e706df8e6ca6e8d99" + ], + "nonce": "0x46", + "sender_address": "0x6fe8b5ce08982b6ee4321997594e23a9637fe0d45bfd5b5d718695f08b38a72", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x7da1dbb3f1942891cc5a5f737ed2d6655b9f15582a05944a6d163dbec3c2aab", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0xa5f543803af4433ac765c778c1a93d288f3dc468b0babc789517fe9a2002ed", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x152c5f05df666c0af1181014005454640891c12a02d37bda283644f5bae7e44", + "0x1cb83b3a8537e4a68384b7624460bfb5a5fa5cbb51501ec41a85700991a41ce" + ], + "nonce": "0x40", + "sender_address": "0x13d16147f8cd04b852cfdab7107c6cb96de2bfa2a020b22694e8067c87eaacf", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x7809d1fdaf131c0eb339186cdf617d946c86668e50924d13159346e12381e07", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x143fb91a0731cba83f1482c1030b525ba4e2146c8fa97ecf2ad5b330c222a50", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x544b59b95f3c79da05e40428faa6fccd00c621e34c899398e20b06c177b6b98", + "0x2a63dc36d3dec59163c060efd90d1e921e81c50c83796ed7a0ecb3a55ed4e86" + ], + "nonce": "0x42", + "sender_address": "0x1b7e553d9d69a2a1fcf9ae3a72bd41bac0ae603acc77c783ae58bf1ba08b80c", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x5c18c54ef498819a83ea6596096922c38c1aa9319bb3b03415252db3128f8f8", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x12cf58ab83665591f01058566c199fbb0ad79be88165b347e3e5dd83fc5d791", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x600501ea763291dfde684ac1095695a9555639955859cf418beb6bf60acc933", + "0x6e1052d9177f22b259bc99398bccba665584813522c57595d16945c4f40dc3d" + ], + "nonce": "0x62", + "sender_address": "0x58643681bd6dbef6bcf4828660ddeec18f3d669b12ec626f14092306fe80e99", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x13241a67c8f9d5a88357d3833595cf1e77d517c5b25daed279a81be8f74c8b5", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x65f58aa22346b4d4529f3dfc29aac5de2002da9dc86124630edf5716fa3a7bb", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x3612a4ea88cea34a296fc6447e0e603c15bfc282c6672193e4b63d083e6bae6", + "0x5db693da1a5fd61375a8608c787616803e330efe298b082bfe9ed3d3797accc" + ], + "nonce": "0x74", + "sender_address": "0x247d1a8c411f2a456bc8a538fcf23efbd493c71b73f7421a8a4657147a59609", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x76245470ac3d77e859be12b55e3b16dc48dfe3e0cc85640d75e3e4894ec8182", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x21ed75413223b673aad90b18352e7e2287c4426f0c607818dfacc211ea242e", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x5d849ca35cae01e6eccd5314ff8371cd96690420896c43322f15fd36d3edafe", + "0x52e5e1f255cc12860c73997a313db1164eda6619e3125b14a6373c29e5fa2b1" + ], + "nonce": "0x52", + "sender_address": "0x1d751f8d431c913531632cdaee1f2598821304cdb401170a91c76f0d5919a9e", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x113616d16bee3d91ed9efe44c83cb47d9d9e4b5a0f2c8b5626a4464c645ea9e", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x20e5e2e9b41628cbf962f505b4333b37f4f78a87dcaead10c83b770404577ab", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x6ba05a47db9b68ab23560894989385ad7e2ca8f27cab22d87d0705f8e1be82e", + "0x57939399987c95b3bc9f8e71484579b9b566f4071599f16fd28c02f7c3ff3d" + ], + "nonce": "0x43", + "sender_address": "0x49872eb6a8d0b7336f6577bbefdd1667fc0ed6f6df6509a6b52d62048a38fc6", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x58b40fae2a6667866875dc98dfd9464fe80c588572dbeca17a0559cd0bfd84", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0xdea235030568597ee39a993d504ee2ae9c6a9da4a3fc2b794212d261066134", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x4063794fe3cc202dc47be8c73e1258eaa5ea57211836ef56e56168696d3976", + "0x1ea2b21ea55fd5aa01fddba0ac00c1c50e35e788393192ec2f4abf10bf39944" + ], + "nonce": "0x7a", + "sender_address": "0x78a19562b686d6cca5841bb192c83795cd8a1d9ffde0c0b4a53cb004575818b", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x74bdc4dc032e25adc01d136e1ce09aa07b7141e06c4205bcb4895bca4555222", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x51b0712881b4972ad7118d3bbbf7a91cf9d35a802171e83f5a13a3459b9434f", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x1fb9175073864095b791a68f29a44ec8727b3b96ea3bb44b442291e11360c7f", + "0xda84007c2757acf210a79546430ca310cd3fbc95fa797feae7ea3983bc046c" + ], + "nonce": "0x58", + "sender_address": "0x40a560ccc59fff23ec01af1087d97bab10001e48e0fb493bec9c4c7e6831cbd", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x646ac6558218dc6e64f03be3d4c4e93f2343c859f80a1a86af088452def27e", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x3f4b90fa23e982dca8352c6894247d0b8b83286cd8bcd6123b07768446e5d85", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x6ac115b73a23a007cca3f36e36fecc0f7c4e02092ce95e05355bb260f0bae8e", + "0x273466da9c626016c3c1d9826dbbcc3afb2129b17a5be2588b40d49ac49fb30" + ], + "nonce": "0x6d", + "sender_address": "0x309e46e00ee3cfb4d1bd1f42267126cfc9b7c501f439a9c60093330c7e0cfa9", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x9ff0f306bb54ef1e56f29c4170b8a5b3b4f0472ff0f5b95cc929cbeba0025d", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x1e543ed4ece9fb852bf7f1ce95aeed73348db7d0dac21b7beb95e7e05dc39c0", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x2d9e76287bad867bc0c542e7ce535fc3d27c882f080b6c32e4a0e18536ecff", + "0x35148ed776d225038ec8e3ca4b9d3fcdf06226f8dfca817886d00679b8572c" + ], + "nonce": "0x48", + "sender_address": "0x5826e2098829177a40c6b697dedb6b2c24d0378abb5a0dd870a19aef97cb78c", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x663795ae8908c52238228322554f5b9faf14b1a5bb28a7a2bd09d4d416afa03", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x10331f033fbbf1f03f5ec1bf58a2a659d852ce69bcdf9d1feaa6c5815695e18", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x34cc434e7934b970738f797e8e8d4a862e475f2114824aaf42b545bd5351707", + "0x6e6c62a70d9d9b9ecf69ea5f1bf5da58884e2d9038d7deb466d6cc75b5e0a44" + ], + "nonce": "0x32", + "sender_address": "0x273d24a6e32e7dc5531d7e1d17df2b2f91b7c50da2c9142a78c02de878cdd5f", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x7b00a28fb03b564bc74669f017620eea809d6bba3dfa58ca0f67142aa34ea56", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x288d178762aa361a1c08b55ae567bf4c18a55c4e3595624d087d938c1968e46", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x5eb6697eeda9eaebb1ff24779fbea52093671105fc7144feb4f434f6bb1bc5d", + "0x2d6849a6e92df3253f1048ad8cadda5d734af99737b42263acab30abb250750" + ], + "nonce": "0x2f", + "sender_address": "0x9529b7734deb881652cb0903f26875b01134cb0b091822f85edc697164e7d1", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x28d2582d04f3f466057b8d051c42f6702e1dc8f7cd6460e8b2b01a96ac05bdc", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x6b080b77b69390d6b4f4dd16d8a90b75dccd5373b6cd501fc6043100bdc7573", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x1f1fddf1cf116b0ca6d9415185868fd1a6c26ed0f9a21b8447f6a1d9e5d3012", + "0xc980661e7b39e55cc76dbed3e69974abf3d34ca7e5994f938f3c4efde3bd6d" + ], + "nonce": "0x22", + "sender_address": "0x350e280198d66aaecfeeb902b02089e026bc792f5ddfb88b04ebc92218f8fcb", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x1a8a56658ea7529d7d8bbe74bb4d1ec0d70acc6f87a36252aa6e2921f7d901b", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x2f068f077a841ffef9a5cfc42f31b7c6683cbeb683048c789aac35d3fc1cdcb", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x61a6c24b1cd94eef27b6efac7c137790b1d8bc43c92037b1e013618cbc2dd64", + "0x34cccc9aa7be339ca96d30aa4e9355c9c136f984318faccecd2dd5f711e997c" + ], + "nonce": "0x12", + "sender_address": "0x87b5c2536abec4170cd59c7ad72798d6dd22bf2a77cb5d36cb68876d59d258", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x3df3f563b04bb3c63c1848e73367135e3d4a9f2ed579aca6e40ffa970fb22ab", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x6ccbfae2657efa74c7759996c5799744ef3d14a05cbd1c6f82e59cb8d786a8f", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x1c24377567c2576def40e7144e77b70ecf046d6ef54a4535db6d3fc88b7fd6f", + "0x18eca3bfccbf31d8e553692cff87ce53daeb547d84465801bf5ecc095ee1fc1" + ], + "nonce": "0x1e", + "sender_address": "0x401930eb5465af9c93f63defae98fa9ededf374a901f24f1210a150923d10f7", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x8ff02d921c310dedbcb26822102d1a5d85f5225073ef65427843dc208d86b9", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x310a30391bd886a88914e488fd5991c05431fcf60027a64e60541ded7ee085", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x20ae64dc14130d4973492bf39a01020178a33229724daaeade5273a5856ac52", + "0x2b538798dcde647fd7508d129869e14016a985695254f6af76201f1672aaad6" + ], + "nonce": "0x7c", + "sender_address": "0x56ffd7a92298ef76ddbd31936c19c23d29edc2f34207f1b0b5b270aa511d8d5", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x1843d0466921d394ce28999ab4b20c7573aa2d6e48303c9e42fa9bc753910b9", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x4c13766734f3b71821a4c8805174008572b7d7c2d5885e88a4c7e0b9a1b200", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x560565bc0575bb2b0487aca9cfb9c178f325d419f3318b7607ecacbd0bf0d71", + "0x3272e33b2a5005aed770c9bf7e3c2edf4fd0801e413960fbe856356dc834693" + ], + "nonce": "0x28", + "sender_address": "0x6075da58eeaeb2c380b51f5115dfcafbafc70ea16a200175ad50937d50cbc3d", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x2b8512868598e247c9a1413424980001d50bd00a5a263b484c3b53284f086f0", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x3537235a308efee36346feb8f3bd1bd754f6bcf3961069c796b995f6c087aa7", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x76577129fd58561a52f4c52594a77a99535b4d2190d001b8cca03f434664e86", + "0x7b8f206cbe26d7f317fb2bd05061f1259a8074c08a0b65efe3eaf3574eec041" + ], + "nonce": "0x21", + "sender_address": "0x4a724a4229813f34e274837684c652260f7621f76e9457942f05cb59fe4469d", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x7b1f9cb425a54d10107cf8ea80b7ad02901a30525f1d960d093d5450b3cbbf8", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x5121f255931b3faa334a629d7f4fd4faf1aa0454fbea144450a9a6cb3f7fe99", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x43067bddd3a594c5f100ba7dde26cbce4952227cf4c020c5d6d687d910fb354", + "0x4987f98db77371921e83f7716e581071788b50b6be8b04b025f78a5f0a8023e" + ], + "nonce": "0x14", + "sender_address": "0x755a7995c1b920ef28e18c4978d73a1c935ce206722c4a8398a1735548abe2d", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x3d799d2ebf90ad00171bc66ff2faaa38157b08b5e34ae825b44aef6e3b0119e", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x395c2a4f9df24ef4ea8743e643996aebaa1ffb9c9605d837adfcdfdc00eb0df", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x830d83f6ba351b8619c3327534997751a2c7fa8b862e626e642340f4a7b9cc", + "0x1e21619e10ad839f1ebcd2edc6f7367d6d7c35629ef60502bff948b98909bca" + ], + "nonce": "0x33", + "sender_address": "0x1e6da06bc1d877fb69dd4110f38f0e5a206174c57305df51653141381aaaf43", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x679273e0e8dae325714657992fc3296ac0ddf637852c46888f6f0ff18f2bddb", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x2672313365f1686250e360ef40af7d8bd7bd96012f602553162af5b2b4ed74f", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x7657ffa05589ebb372bd6c3ace1ae8a9adb57a766106efe276845b113679562", + "0x6f2053e6220ccc29eb98d63fad3aab2bd63c4c5f5ef28a2c12384f551b77e15" + ], + "nonce": "0x17", + "sender_address": "0xe04c9e37787de848379c7898612cde59fbf95ec633deeea3e34e81f1d7df56", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x53b2277673108514c99d88fe4cc555fcc03a661af45d1a4b7388b6824b7253d", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x77c50c779bdb835ab85ae739c4924abac8b7419889592efccd46ad36df6b5b8", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x317d0b3605e38d1d706e66087019d80e6cd6ca44b05f99e573dbba27b405090", + "0x4c13a4f6a4e87fc87c3ef80f41080faa0701f1dd2e4fa58793d120eed71a367" + ], + "nonce": "0x32", + "sender_address": "0x594a6c429ca64604465758db99ef286d5c00d847c8072fec3ff5f0e6b65cf64", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x72c65ce2d24e7c3fb48960296fd401ffde34589508ac9ffe1e1386552a2e005", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x491e39f5de84b88472a9b7bdaf9bfcd1d094b05f6358165c15e7cbe5db52f7d", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x52e6afd67a15f489774a5972e39ce34eb8350b15f5ad501e631a85462389d33", + "0x4ae16fe23b312bb3b78ba0bfd9b8db814f858f74631bf9dd9e6147b1e886980" + ], + "nonce": "0x22", + "sender_address": "0x1050347b94b0cbce9abe2ceab62f47257071169a4ab22b4fb67f3a731e0b486", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x745fc497aa89c73e48b5bd2f54d20dd0eadb7381a3670168a99d43aea8c6bff", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x591b1d14fd90869133097b265eb22e95d0415a7643f3c8235eb58191619d5d2", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x6be53feda73a4ab6e2ddf0e25b97922f1907a1911ef6dda2a7a67bb6a40bedf", + "0x4708e8b873c5539185da6b75b10d9e4b269da9c626673739cf7bd6d5a62f29" + ], + "nonce": "0x33", + "sender_address": "0x11f8473d749770009ec91b9e6f723403f9be76e2c93c62919d14989aa9f343d", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x675fca6eb609c22ba375db97fc717f5284b370be42743195c965bdc2046c666", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x22b7235fdce25cf5495a6ca670254684561d45f536208ca9b6fbc275946c316", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x39e12ea6916e2bbbf01d207ecbb0f84c9a1d344894fb21590c86ed18b2cc791", + "0x552d3e63afb84d52c4215a3485bd1c7fd32c08cf6442d966f17ba138bcef16a" + ], + "nonce": "0x38", + "sender_address": "0x3732d673d40f828b64bfc85236012ce2c280d3c936aacfb8104f7d4c8c74bb0", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x386777696ab90e403e83ab4bb5d1986c8a0c66b8c7ffe34e37fef0d2e4113fc", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x448d7bedca0c5b233f8ab9de5c373b708b6ad3a53c5f81397c36f887fa7cf4c", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x7d868ffa8d926d4b12962dab01829ffa1a14c614d2dadae5a55bc7d84d17d93", + "0x43a41af010e9d22593d92331ebad1ec9a45047a30a5e552ad04b249a34c89f3" + ], + "nonce": "0x51", + "sender_address": "0x691301df126b5190e5227b9fd62788723db7b5ea790c4e1da8f85aa6235d46d", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0xfbbbca39f675f1d5e3e9e5616b83fde2a586881ab158d1dd35d83e4361ba3c", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x7ad9b0ef75176a11dc46824b18df70ef14a4f32c2426e682043d92f22a1b061", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x3cdd9a0db903ccd82372211e2b820320d71b51746079db0bbdf05d480646b1d", + "0x21dbba9cd1a851eb0f012da0d71969fd42941b7b55c28113f9e5cad369142de" + ], + "nonce": "0x47", + "sender_address": "0x143e4f7f4f62e00b9a027fc1d1e3e91fb655bb0c68d152a3bd81bee1ea38471", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x371a30b6c11017e1ad45a5182279dc6354c295c62fb2b62a64a88cf98172075", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x6f14a667249063ca52f3b4b5708fa021ce678edfd8b4a63dc955d5c017d044d", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x760c6123b847da94f49cf70251407e1ec24fd55433691c0adac97c71b3d330d", + "0x11189e87aeb5224f95f104b436d369a3a85052290615d2b9228763e1e82e1f1" + ], + "nonce": "0x3f", + "sender_address": "0x67e4d23e57541aa5d087eb95ec42bff6a9feadb0ca6dece4b60cb6e9b8c1970", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x5aaf885f007d12012021700e9ff303343c63d216f5b1e75725380adbbe78ab1", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x28ac04c7d21a8ae32bafd02384b20c1c13bab56b3d4aec7183934c897b158b7", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x50a7fa6b8a22c699cb81a9beaf1c92b8698395017ce43be77e60a3a5c8aca67", + "0x2aa30156ac136bcce2ce057c7d06ab875ad181769864efb94f2685698046697" + ], + "nonce": "0x5e", + "sender_address": "0x19994bf4904edd8efa817a79fecb999e7c622f2643aea5d54647c0031d724c6", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x5510c25011742b06815be6d020576cee83b6f659d11c19a8c9c905400c6b2c0", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x5aaafbf7d18bad664c093f6204015da223e0a0bd2d2bce648b702ac54a02419", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x474348f888b9a71fa3d2eefc7bd90364993042b2de09498a0530f96803cb428", + "0x624183b9389d6d7d4b2fb412d85b5002ced442c0209dbc512dfbb733008c533" + ], + "nonce": "0x53", + "sender_address": "0x104745966fa5cd518bab10b5f1a741f4a3435d7d9b060b8a11778cb36fcb574", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x71b52f0a7589b5972d7c37baa0b2056f085f6f6817a287cbdcac978b7dad26c", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x561b16d059f7e4c3a04650e118b4d995d917ef4cbe1125d4783ce66c81a828f", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x211daaa3fa5603c92b639aa0837e107290424ec58a708254582a6130921d13", + "0x397c7cbed3fddbf2273bc7778d969e8486f611a62880042eae8128cfa05b1ac" + ], + "nonce": "0x41", + "sender_address": "0x75eacc62294b96b3a09da916ec3e77bc37fa6ab5176e5bbd28aaf588d74baa2", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0xfd6ffd67c2e30772fa28728803ee853b16492ed1e5f72e91847115caf45bd3", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x370cb459e3b42e03867e6d9c957c5b61c9b34f3771a267c34102135441baec0", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x765aff9ada85633dd880c469f420fad70bbb4a1b444a2946ce0a2f28b024b4c", + "0xf145f013f9cd6adc15008a507ff448d8498837644e451f2d84ac0b17d165b0" + ], + "nonce": "0x6c", + "sender_address": "0x3a70b8ddcec9d026ff4a3fb2024f7815fd47dcf62716107d34a6ae5ee861e0f", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x2011b0569bdc4c525bf03e7b55a9365de1cf194249966c88c24707f4d850406", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x46df785050a9aea2cbcb90f6ce1cebf789ec5c3d9498656c38a06c29b5ee85b", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x32e64f466da902f8321bd1c1292514def0ce94ce3ae74155c106cbd7c30a98a", + "0x6ccd6535043d98007336de9697c1aa3cff6d0e0b2ea7dea8d152380786db148" + ], + "nonce": "0x58", + "sender_address": "0x4540dc7107f1d6a135b575115091ee56ab13c5cb22a6188a2e7fccda0e009a", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x4434a91a0b85b4efaad7d9b70ee2ff598a071c9dee4a10b06b3697b671e005a", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x59a7de5f6180b1a0bca493ede1fefa263b081efccf50bc2347b94b1877d9dcf", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x68056b15616713bfe99e08655662462c89cb1f1574ae7546ccefd38e6280f0a", + "0x732529b230ec62970dddf5de85798ae1febf5145bc614fe8c317bdaee127317" + ], + "nonce": "0x6a", + "sender_address": "0x500eb16558214463a5c37ac189e1b12443e97a3bdf89ec0c0c4986376bfb00f", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x9d05e196b5d20018731b9172e9041f6098014243a3d18d4678f046a28898ea", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x2224c30ae25741fea63e9474b2f0f057fff88de73e4b248175a1e927b8848", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x19a6c3d374daa879af80b4016d0be484492b71417a02aea20e9fadd90efe3b3", + "0x7547be8e02902012ad1ae505de9039021a37838831df211e91264325e34aa57" + ], + "nonce": "0x42", + "sender_address": "0x72a90329f10cca92a43cb8014ea168049ee3e1b9013638afa026a4671863ca1", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x513c58ca8af13ecb6006f00151ecd119cc527dc13ff9e3c56b1c5dd05b84f13", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x23f51e1b32d65027a8319c74dfb6dd9c738364405e626783ed6ffb1fb3659fb", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x34e5357e804ca4f5d7db9956a173656bbe5400d8ab2fb13b1e1d769f87842e2", + "0x6a2a186ed1b56ba9d1e728d688d54e7c07f9aa0be5d5a9be26971faaff31a7" + ], + "nonce": "0x51", + "sender_address": "0x1862d76a292338a2634814f9f2ecb90684c52e1c3f600388865df686cf4e54a", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x5dc35a6caa3c8b98a96bbe3a21bad65a803c445bfce698aed1e090881d1996a", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x2a4e4999fb73d8f3642c3ba7156049cf13cf61252cfe452ffbc8ca602090108", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x485910a4645549200085108907914ea62c248cd4b828d44c2d45c8e4509bdbd", + "0x5ed58b17f858f9788b409267e1aa248589b57b4055a122c1617199774bec0fb" + ], + "nonce": "0x5f", + "sender_address": "0x41157baa0cd2f7bc1029be65db77a81f97784d3f5aa16f77775d9edbb4cb615", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x323d32c8dadf08a0a06268910505e377d4775633e178c6b7d279b931ba0ee35", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x1b04a7e6d3428539d6898984bee2c018ac39a8f1d2863e8ce1ddd31a1abd353", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x432fcc9314b33f7eab0d7aef6fa9b5e10d8d7727be023cd4df822f12ec45bd3", + "0x55ff7af36ec8b737191caff39c5a8315734a70db198b4dfdd45d4e324639ae3" + ], + "nonce": "0x6a", + "sender_address": "0x7707b0c961121ae62f4ef63605121041f2754bb095e682a4544b021aee7e2b3", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x3fbcfa51836a171596f2c6bff0edb9e1f0825e9062aed979683b9ba73369117", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x1524dddf3c3bd1767cac929b8a4058e48526719d7cb0ab1515ba2842a70c107", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x2b1d28fc487f7a78aaf243b74e861023f7f242071c8918595ff74c5d272ec27", + "0x2901679d4b0561018ec7b52f63bf9575e46c7f09555ad37a0c21eacec4dbac6" + ], + "nonce": "0x5f", + "sender_address": "0x7b3796a71a75e9d55aad1d46057f6facb3040eaea69d255c6cca52c9124e94c", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x4683d52b5c5da50d154b9eee85be9b335acfb2edac7f0a46b0d15df18d9034e", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x28ed4b6a40b7d06a56267d52c73453a2072d27774b33e9b6557eca0dd680fd", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x4ba438ec49957bc5f6e14c4416e4882026350814fa6809648c96f63552e4a8", + "0x562fbcdaf66ca00025229461359e6face47328c87958abd63519019e638853a" + ], + "nonce": "0x44", + "sender_address": "0x14169d652eaae2abcfa6fda7c924f8da98566eb1f5f9f33fbf09629ae2b2327", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x550ebab892aaa6e219c862574b8457989b937ae35453d7508e9977635447920", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x384c56e94c958e8861f371247a7eaf75909687116adcca565ba717a7e7f3b85", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0xc2d41dd93683502cb372d0f71335adfe025ce26123f30eab4250b1e2f6e2e6", + "0x3ba0159255dd5dd356e3cd5054a56f3cfca42152586fb24df115dada26d1815" + ], + "nonce": "0x42", + "sender_address": "0x17fb33a9db88d0e4e3b382dad1733522ec8024647716f463066bedbb490978d", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x6d73c6075cb31839dc618587821690839376b005faf20e554c81cf22f638c16", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x5b3183a07e55ce39930fd7552f0e083fcca6d15d5632b51974565eca9b85032", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x39754c2bcdd9a530b55ccd4732f582feb138dc255e55ce5380ea0d44441d1e4", + "0x77a1fe017ca3f41382154435b54439dbfff9aff07f41baa1961da3ba2bf8b24" + ], + "nonce": "0x59", + "sender_address": "0xa0e0c780524827e8f094bf8c199269f06f86309d30c65af0f7dac6968de3c3", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x3dec2ebe2f47ae0947ee9693ab01dcdb74a2ac279fc32a35c8b84b722199ccd", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x3bb049cc0666a6ceb2be10a9dcd99ad9bb880f63e8bda0b91c99d94fa2a8fb7", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x698c682c25013099438b8c3a5711e9def8aa19596c0180646ccdc49344e730f", + "0x713ad7c5e44328e998c753a937dfadb9f2bdcd034a52ffa1cf521de6c5f2dbd" + ], + "nonce": "0x68", + "sender_address": "0x6f4bd4995a3282be1860aca91fe2a498942add440516467aca9da8a1bcf4a41", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x1e8bf0e6b000c281bb959a8f22d2f6967c363c699bbe6e924e13e480ada39a2", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x2bc854f3c7bb9cf902c79b21858c6cf64f2d963c108c7769a25bc312a45ae4f", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x4cd89a7f640838b691d452b417d52e6e8354b04905897d110a711a6c4193e75", + "0x45b4b1fb63caf033dfd6fc76153590f691ee7c5d5f7c9af0a860171a13fef15" + ], + "nonce": "0x46", + "sender_address": "0x524987ff394990a95fa0015a8eb66e61ff9f8626291dedd4f7d50a5f020f797", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x51fc3b4494e6dd9bcfc73c0540669a20632f42c4ff5e769294b05804e320770", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x23806ad7f5ff539aff9bc0fb9f4774c42acaddbd4239fcc90349c62a2230d2f", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x59ba4d92820ecb9edd063c10b53607c4901e937d4e76efee04f16ce48a10fc8", + "0x2ae7ec77161d584662546bf87868c39a79843c20a0b62f85dfa2b8f7f8c980b" + ], + "nonce": "0x58", + "sender_address": "0x77845f6d3bebb7c5e30619c191333c3cae03565c2d367fe68bf73dfe1197bb9", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x5d3a3de6a7d1237648882bc55b7b7c01ddd528414d015aec205a1bd5631e768", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x713489f9ee9e4774505a908308dccc31b5d710c12236fec91cb999ed230fb0c", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x55cdb4736c1777f46839ce6128a715f8f5d8e8fa0ff3e73f4a0148d6c763fdd", + "0x12be7586404508ce6bd9d0909476bbfd1a9e9a9323086562f7674b0a974f8c2" + ], + "nonce": "0x4e", + "sender_address": "0x5032f6bd44ec915ff81e2a450cf2dcd1e28534d804ea9cd38d186dc64c1ce80", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x29ee199399a32a98bface17c60ef40c159a7f2ff97157504a83e5474b51399c", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x26d796ef85fafcbc2020caf8f2f15a47ba57d687974f9100c4a3632c0a4d9bb", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x36a03bbeaf4018f341dba1d9676b8d3aee1600060b44469355fae7ec0d0ba1e", + "0x767b70ee1e33705ab2f274b4d2fcc23c2de56d5c2d751f3c07a26e1fb5dd13a" + ], + "nonce": "0x45", + "sender_address": "0x5f34cd49c033df5b7d3da352020e839e88ca2c28025e25f70a6a485d68fc0ea", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x129c9dbc05f4bd012b6c8863cd002192ebdd5bb3b6a5d5de450c4291fa27ddb", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x1d6bf7bd16cfad947146e6cc3abc9243d80bfda51a13d089c843420c9dbb63a", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x6c6afee6fe7843feac599f0e37385317481cdcbde7c76a45f6a47ce8e28a71a", + "0x4f0f198ccea5aa51f618ca94d0eb06f4ebe1780ef14d9f9a579bd7bec82dd9" + ], + "nonce": "0x34", + "sender_address": "0x3f9e6e9b92cb5febf0b6b79209a9080a53bc94642b01bfb5fe2b61289f18b2c", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x59d6e886bfda7f1764012f766f355478f4b8e3b9d257c9e6b690756f7ec1bc", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x388163a57668c9d23bc3ce6cd727deb48551023c407b446cb970d2ba7d7c100", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x7592a00b78211997eaef32e31a3fc804fb0b7e4bc98b4b5086562a3a2440c19", + "0x6d649a08cfe12a540e6b872f097526da3f9eb54ca315c9caa376ab42bad87c" + ], + "nonce": "0x43", + "sender_address": "0x46388b18ad7cd2514d20b64c07904b351d313f9b185eb864e9cef8a129a9db0", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x4221d59d8749ab42e821d5e81292afc59e324f9d85a9ed23cca1d9be222b465", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x1474614b42c0c2a7f735648cfe9e69c6ba27c13fbba7de971332c6107f87a3e", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x128f28e3aa40c000422ed71910a2c957ef28a0b8d7768f0c28972812fd28418", + "0x47ed8e96d9f83773cc53ad1a63e127886b39795e235c6dd90bc77f4f90aed7f" + ], + "nonce": "0x6b", + "sender_address": "0x385f7376f9614f368023e004031b50167fcd10b85b9cd45ea52b56c7dc2431f", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x5f56be4577874ca03db43b658ce1293cb7ff3bed0b469a2b754990f1c162aab", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x22419dd35389da8db0763c8807385986fe6aabc0334b627cf3f71724e7c13e", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x34c51e64eab29426f4de96934f2f671bd25eb04a2fcad871e456e044dbadf8", + "0x68979141dc4c43fb5f946d5d5cd6336cee4c5ddf88733bee6836f0f3212f4ae" + ], + "nonce": "0x68", + "sender_address": "0x3591c61d75a1d75ee576d70a366138be4c288034605022086e8abd6cc6a282a", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x6495a9290f42e2e7134d42fcaad2c01d7770a1e03ac8b235530ddd6a1fa126d", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x1b44b717869617eb64b00d65507005ea9617107340c1e90db801eef4e684651", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x47565317a66205f4a3626f13156e7559647102a4f4be5931db9b8114bee729d", + "0x5a4e1b0ab1bdf279d2f253b831fe052eb573e7810a038ad323bfc8c93327141" + ], + "nonce": "0x44", + "sender_address": "0x6028344c83f128591c5a1905e734c37f6449505087573a54b99891e864ef8f7", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x2d60a254144a4a4dd7d7f7c9c657e3d5867207fc1600925e6e9fd6111354b9a", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x6b2b4c33d9a7b0a8f16d04fa27f3039576c11105cd0cd7b3d42e9008faf2a5d", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x5492f1947165a80af765ed4854e51b98bd8669ec15b5917ff56f300e4edf190", + "0x2cbfcde544d30a8e61c77d4b1f099cabf143981e4129b98702753e80d6f5ed3" + ], + "nonce": "0x59", + "sender_address": "0x34535ded79eb990827817ffa6c14988cd29970cd3cb4d5943684335f8360720", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x114f3f20c5050e8f45084e50db4835ab12a8c40a1d827b0ea6789cb1915542c", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x5999e0a6edffdcdd21f41ff9e7bdb7d2d573c474d07bc890654e9c7dfe7b694", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x3da17db01a2edfabe74a231d8c82430cdd6424deeaa857467769dfdf5cb3ab9", + "0x5aeff415d0e1471f0981db59868070db7ee4e26df02f06aa9b8363bb92577b2" + ], + "nonce": "0x4a", + "sender_address": "0x5ea1cbe943d1a798d02899e2b74b7626b315d2b81febf7b8adf33d8e57dc91", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x735c98e557704fffcd219c694dc8b9efad6a56d0d5c1c7ccf9f2cc70e1846", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x21f1dcefe9a6cf9dabcae1a5e5e5da5d1415d5f7004a10729d4c13f859af8b0", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x2c8d3171e6cc941d96fa186851dbe5eb3e31f6b1c84f7f1ebefb44d35d02ed8", + "0xb695ddb2ce590e04cae6de7899e23198870f5bc0e79ce3ade7c27710a5e066" + ], + "nonce": "0x7b", + "sender_address": "0x1a06329b78575c630b343cf559544f84241bc44f3c63bfb013678aa8145215d", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0xd6fc49fcb2516cd6a882f3aab1c0e239d3619bf91f817373e3ecd462ff862f", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x62ae74ef5c8daab02aff07a12a7c7a8a9479eb7eab545449f78ef0e33b89547", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x46c052cf0fe9cb2a8c8a132d61daaf297036439a57496b2e4987a2e7c6a3c0e", + "0x543aa3f29e2f1a9cfdde06a6310b31fdf7967a92cf4b69f0f98814d5ce3b46c" + ], + "nonce": "0x46", + "sender_address": "0x12b01545b7bbd20fcdffb03575a25cad0b30698ad7ad4781be1221f554f4741", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x6b0d9e9e62d6bcadf1eb70e5a3e69f8748763ec128d65fffa4bad2fca590857", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x5b3cdd91022ca02e6c0cc0f1cd1470e1299f6015725d514fb700450548869cd", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x7394c9e0cf9a5eaa4b349b46800c1c4ec0f490ff9390d5fc63bf9ba468f97aa", + "0x14a4242e76b904e7714e1b2f29549877a513ef59ebd704b73b241c8d75b6799" + ], + "nonce": "0x63", + "sender_address": "0x12e4dfa71ee52225ff301eb69e2fc08fbc001b0821578be07648a7ea493021f", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x3c74d8d103a37010c3628756b056e1795098b1248692e890d4b973c5c572193", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x1a2ef6245f64b5d87d3227ec399c0ada923753931b2f2c6003eb6b060848383", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x42f28cbcef02f429c0c339845fea7eefddefac9d0eaceaba0826d004aedbce9", + "0x34ece019f4d6a4d37a7ac8f1319c13fbd8fa31295b37879d6eb70282d15bfbd" + ], + "nonce": "0x4d", + "sender_address": "0x3dda73cf3d5558a6e785f54cc6e7207b0173f0cc3cce20f64992566ee734d7a", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x73827b38945fcb8a1852327a0db3c1341f498e66ddf45e917b43263beb65ea5", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x178861bfced753d5c29ff84b42c34098a4a617aa9ebe3d8515ab0e456f153bf", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x16dbdf9f236e2bc2a833864f745b804bb88faaaaaa001ad3bcbecc52db1b9a5", + "0x4733a75efcac8f376a575af41c9d016f1e1eb692f71b64bec4acd53be491554" + ], + "nonce": "0x5a", + "sender_address": "0x6ae831431e8fa2128b079844633e084604422d63b7f1ad1a79fb81e37447463", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x259d0346def6321e772dcc7960478b28b60686f87fdf357b158d338c32d0d9", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x143f059f6772efeaa0eee19434ae43600d48b94112cf2125e075853d794b4ad", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x151ad5ace906f67ca851605dc848366a6b90e99f982ac023383c34a36e04664", + "0x3941e0f06cc5be2b85551c23a346b03a431597d9cfa93407c0dd729c4b3b58e" + ], + "nonce": "0x65", + "sender_address": "0x4bad3730634830da8c2cea36bc8c0103c47a074f259edd5aba3852e1245a9bc", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x5b45d83ead5c4b5061ffeb3b3169ef51c2c9635cfa471633b91e3577e6ddab", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x4379a6a0466e0102b5db78269b03bbcd84df24a35212995944d19ff921f80a0", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x3da22c062ad0c430be728e98cae194c58dce83f84e063ead7f81764151c1db4", + "0x4d5637cae4a9a34b943c956757ad34edded5aec1be242a38314b66f1e325856" + ], + "nonce": "0x52", + "sender_address": "0x7e83c177ff630265eda312465978a679b25f8eb253c000a925fa5f42bb233fe", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x3e5259b886cba48b86d25215a305f4fd0f3892cfd3e4480287748c691571d30", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0xeeb3e52134cfa9b421260478bc2af4b896c2c7deeffc7c20ae9462ddef86f2", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x1902373a70437df409bc54a867368df1c59b4bbe0c3f52079aaa5cd309ad8d", + "0x6a945672eb9821cee10ec8c4a8b140c56d959a356a92707f8c80539e578b5b5" + ], + "nonce": "0x5c", + "sender_address": "0x1835c7d07311634fe0abc0e12897de6de8420f56fc0e9e1cf0550a71c31f7da", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0xfa6ef9fbacebf91627a6d6e9298caae7354b63378b7c59f36de9cefd32c708", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x1508bea8d25546169759b20e5e576daf060ddfde0ba4699cfad13bf46ae47d6", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x724202bd2b168bfcf19641bccb560102d956af02e5de63519d190bd4d4012b7", + "0x5337fb992c2da61a465e49d71da6e4b19c638006207cc3ba1af594197f37fd6" + ], + "nonce": "0x45", + "sender_address": "0x1d00cc561c943b49f5f2bac27591530a55970c3d0716317ad42b78cd6fb469f", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x7522d5283ed7b9aced7261bfb91f73fb0bcc5afc05e0ad3e25e0efae03f4bc", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x3cc7a2bc717ddb4c64358ddd4b0338ef71338a29e486b4df466bd1acaa6d87a", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x70ea45e763e23701844c52e586ae15c1d911c98726c643da604b999b4991d4b", + "0x61d5fbddc24ba70adb5ba8f924a99a5d8c18de23b532f55c2359352ae79e1a2" + ], + "nonce": "0x49", + "sender_address": "0x5826e2098829177a40c6b697dedb6b2c24d0378abb5a0dd870a19aef97cb78c", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x150387eafe5fb0a8725f2fa1b3d450c886b3f93698fb2ea579f55c829b37621", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x4f22683162858d005fcad495620d4194b634c2ee9be1f11f9e91348ebfb7d8d", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x7234644fe83f728590b85e21ee0afa70759721e15a8cc1750c979737b62e7a2", + "0x67c0fbfcf7954487390efbff17a7a3baa16d1ee352325cae5b1d44a1e971f2c" + ], + "nonce": "0x6e", + "sender_address": "0x309e46e00ee3cfb4d1bd1f42267126cfc9b7c501f439a9c60093330c7e0cfa9", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x1cb41f8efb81bfde450ffece8927952542bffcc4956c917dcd099a5c2f334f7", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x103381a88f800582d200e7cb4239c558992f8e2107eac50570f48b29784ae4d", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x3b51f0ce87e39cdcb65c3be6a49d6f862306d6b7d821ffc699cb192b6499f48", + "0x44333f3bb93f6716cd6d1849baf2923472f0b3d7799fdf112d23c30b76e1f62" + ], + "nonce": "0x7b", + "sender_address": "0x78a19562b686d6cca5841bb192c83795cd8a1d9ffde0c0b4a53cb004575818b", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x838b9210d52ff4e227d6519041237881b96e3779057801451ee13266ef0a10", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x2e0d84b614c67b7d788a546f04e9314735d19e8af7648bd980f4cc4d5ecf1f", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x2cf80cb400cddc6a6a72313d85c655e6db1f9788cdb6debc0ee5623faaff197", + "0x1ab63c82e82934d056812c2f67435d3e3f2ee3a319b56302609775877eae6d4" + ], + "nonce": "0x75", + "sender_address": "0x247d1a8c411f2a456bc8a538fcf23efbd493c71b73f7421a8a4657147a59609", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x3ef4f36ea03fa22b3ace1944e9c30d2d3db1ba1b829803ccdbc8fb10f91876a", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x4cc74e3a3b93e8869d01b42c7b0ba4377163705e2927d390bc8825902a0cee6", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x7cabf91dcf0d22b4cacab39da49c13b77292627ab020aeca60e7e880b30cf00", + "0x21a0b8967b193c1a133bce5375f9a43ea1cfc27e82ba677587561e6ef5bee1d" + ], + "nonce": "0x53", + "sender_address": "0x1d751f8d431c913531632cdaee1f2598821304cdb401170a91c76f0d5919a9e", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x44dce543187f9da87ac682c03fe29e16b8ca948c724d6bd270aca20346cf91c", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x631a91925e1e7a9a0985738ae29f3afd3b0816171df5ad247f7559ddcdc4f8", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x7c27845490dbad9c08f4c129883d776fa9089597bcbc594dd86382c450f0a4", + "0x3eabe9413a3dc447217a5f007e43887609183bc27d9c5d96ccf720bd498c06" + ], + "nonce": "0x63", + "sender_address": "0x58643681bd6dbef6bcf4828660ddeec18f3d669b12ec626f14092306fe80e99", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x239b57eb82dbca89f0a16cda7a9d9a825804f7b8316bf130bcffc2af7525f42", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x37f798b39deb534b7a9888d76afeebe76685035e628c696a0bf96e27b8ed72f", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x51dbf4522c5d54971874dabb636cc312318166a2967962cb88b2f9a957141c7", + "0x35feac694155e6b81f0e0846fae649961a4cb38dd55b8f28b908fe2d2c5c579" + ], + "nonce": "0x44", + "sender_address": "0x49872eb6a8d0b7336f6577bbefdd1667fc0ed6f6df6509a6b52d62048a38fc6", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x358369a82c0c27912027bd581fefa76774fd3085af46dfc66c40fb8c1ee773d", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x4ab4bb1f5fc4df7264f57a0ebe46ac3ac66e1b1524bbe6b401dbc27484be99", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x37a1d91f78a8648c0100974b3570a65ac1df8755f8a4180b8f82a23370667e8", + "0x7c0ed5cf63d8a3ed18d2e14f29d7591bf8748e67a5b79b1ac2ad051fc82d" + ], + "nonce": "0x59", + "sender_address": "0x40a560ccc59fff23ec01af1087d97bab10001e48e0fb493bec9c4c7e6831cbd", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x45c790388f6d017a4821c1f51a92e9e3146fc2d421346457728abc6b545668d", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x5b277f8d91aeb7da62ae9545abdb44c154ceb0a09659a84f5ae2e3a0acd7ca", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x346971f185b6f3013283a4c195f26a40918d3aecbf3cd586897916da9512545", + "0x7446b363315c68d197bd381cb00888678d14ea9c7c0eecdb241761c0810b812" + ], + "nonce": "0x4b", + "sender_address": "0x3c875403ce3066337b984c541ecb4f47557e421e859816e65bc85a402abeda9", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x15cd63dfe84340f7816ffafd37fd253d97598749fe60dd6fd002b2f2cfe8cfe", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x2132548ebbde369d32a37a82f8fc2d74278f0b73b166818bbf03927d4dabf14", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x5d88ec34e1f927aa5254535f216847233ee0660df7ea728e4692f28db34f791", + "0x6456ac97a829c90e8b199be9638edd22bda92bc9a848fd560e85e9834658a35" + ], + "nonce": "0x3d", + "sender_address": "0x6bf239cfd8ddfb4edacc070a23929b9b2522585548656ed1de1033d1765b25c", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x47899478e2418f2e085ff45c6880a2a9549ff19bb2d7ea5ee46388b2f439562", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x2ee469b6fcca6cbcec46c7c11c2a701a1f0926be880b71471d07d3d6aa430fe", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x4bd2f01e67ba008cac3e51e525070b27464ebe59fe208ea62116d8d55c5bee1", + "0x6656317585cf6f2de1ea68706273135044deb35986dd93487fb3de3f001ff9b" + ], + "nonce": "0x39", + "sender_address": "0x20f2f2964d6cb9859f1d264e759fe089eec481f131defb7137878c36478bc9", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x4c3479ccb311fdaf337dadd954d9ce03548472bf8b4bc32c6475043a99dea58", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x496b37055585ed59bd991a954f7f3c950a6c4a0117d45e8831fcd544d9b278a", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x53e37eac0722920b43bb3c8a9707340234894c0e85036ade3423d80b84b075a", + "0x4642a3f5512acc0be5b7dd53dc187832bd58c2770d438c1bbe48b4a95c8d8f" + ], + "nonce": "0x3b", + "sender_address": "0x5c4f4e4ae30a422a1b735b38c52bdf5739ad64b2f95492ab6ccd93b4f6be2df", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x7a4f52d39ab901cbf7d2ead756cb3a8516110eeb8f4f958ec01f72674df76ab", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x1a19f0db9a0d4fa69a0df59a0982b64dd9c53c0034d8b4f16d6912e564d87de", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x53dfe530728f6222523c6d0f660db6c12ab712008ab4173b9b26aad0706b4a9", + "0x80a72eb44b702bdd183ff1aff094014689505a165de9119de4d9fd19fa94c7" + ], + "nonce": "0x2b", + "sender_address": "0x33128bd86065b89665dccf20b8224238a3f169cc2aa63ea3de1d4e1b4431db0", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x3baf4487184344596cb078af8730466937df2d938ff56688442c9a146e682da", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x3aba052a7ac31196b103efea508299044c4987be17ed9db4a142ad205a3be2b", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x2f8da23dced8de0e716e07beb0aea8d35975c11612c31cfdb4edfe9f955bdc1", + "0x2da1450dcfc9991b7e80fcb798b8e32001a53a2e01b076cf6d5a8acffaf904a" + ], + "nonce": "0x63", + "sender_address": "0x1c23816c01bfbd90fd57873025b4d5b86ee2cccfbad90d3a7fa25dc569638cf", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x11e5e35e8075473dfab70566e0f9e071c7d1f5debcc8fc79c0bd374ea610681", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x1cdbbd431edd81c19c08d52b2ca047b39bb9773a8c9332ad91e3508ae8ebb7d", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x32ed0b0fe8e7868c651348e791ee9e0ce0e98b2a1a716a40e7f0ca078aaefe6", + "0x4977ee2c42d280fa244dd561f613a2c750c0a4f927927d84a9284eadbcd7f8a" + ], + "nonce": "0x50", + "sender_address": "0x40de1d323a5870a9b1011b1476bfd58f92a35ba59b1f9f3c69cb083fcba122a", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x786a7b8e6c19a882ee918202201abffbd1369d30ed694406da52c3e615b0d32", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x7c0661b8022ccd16b2ea405f20b4fb72e2d458e7807952c462e266fb0d79325", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x422c2bb6780e1c6304e3bbff3d32581081f721de226acfc340d7a837c64739e", + "0x49b8c73c95c90f5b601d152974c8a86fc04a86ad0c5ae030c0b9b1e6862b55d" + ], + "nonce": "0x4d", + "sender_address": "0x51d568676ce46d5f9a0d7c23c7c72cdb8536f38d74b3138f3cb9acae98b074d", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x5bca2c958cea7ac17e1d4dae90155d11a911a917f91a486ed5013c9dad2088f", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x3cdf111085aa25cf5bb06aaa4506bd17aea4648d790264a88b205fe7d4f2bad", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x2f44c93390b5678e488ce0b158020df832141b40dda2b267b7ca48dad523146", + "0xbfaf85838425013bab2f8eda583d0fc45d555ec659e10f54d386856d1b86df" + ], + "nonce": "0x50", + "sender_address": "0x2ec71fc858681fa0cca225185a86060926a9bfd338d749f256910d415770d1d", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x2bd2704ade8daf80d330f575446499b44783a6cc21e3ff95de2aad82648e491", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x5d426134165dfbc7943021571e8b9f1014c1cc368c2ca2456b9c0f26fd547a3", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x77d1e3025c2465f3568f721ee12d0b23a4c53a81f94d106c2ed7491f0a9150e", + "0x2f1a6cca14bb70268b2a86e0a8d59f9d909ec542bd85fef30523b23db78be71" + ], + "nonce": "0x41", + "sender_address": "0x5726d58c2c6bc370074cb67581d03cab05e1304365ca0ee9f4ebf3faade40c4", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x397bb315d341edb330605784790faf476d4162ca5ce07d269ef8f39aa5f8401", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x5280f3167d771ca99febce9e6dd60705a0db2f5ad65f8aa839add5ce23221f", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x3ec31978fcffbd308dd85f46f325a446665ac52c55c3e3b1b3a9e2da8fced57", + "0x37126d40153525ecab0d3e419e48e10b8f68749f648d033d85783dc91e565b" + ], + "nonce": "0x59", + "sender_address": "0x73f94dad20c07abaa57a278d02d169b48882bce673c421251686075a986db83", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x20be5a51198a030c08ef3886a5b47661a773b186f4407f3f2d3c2252828e80b", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x173ae09604a69ccf8c0b4699f38a3e20cd03f3eec2c817ca537d17a9084b266", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x1947107d7dd631e9aa7dd30ecad4e266286986ef3ef25d01ab6db385009c0c0", + "0x174807ef91d9682a00f5595a764ca683a1e0d60eb5be819ea89b699360e118d" + ], + "nonce": "0x23", + "sender_address": "0x350e280198d66aaecfeeb902b02089e026bc792f5ddfb88b04ebc92218f8fcb", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0xff9247899738818e2b47acde31012975dfa023f5c860a19110dcd8d17af54f", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x5b718ec976fbe5a287430bac79254dff399b4d06cf7b40952d02dd37107575", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x1d7c2fc083db276f6152d379bf9305e0474c10b6fcf3ae57fafad9d1d1c97de", + "0x1994db422ac6d962ed2c06733f7b38606651b62f81ed5556d6e231f41626286" + ], + "nonce": "0x33", + "sender_address": "0x273d24a6e32e7dc5531d7e1d17df2b2f91b7c50da2c9142a78c02de878cdd5f", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x31293244a17ef815b86baaf64c80c6885f900c74c51fcf57512d7d0a16beeb6", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x25014de16daf7e0b7616c884fc0f7f347bd4fbc0581ceb8f8fafb62201cf08b", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x559d83e423e200fc7b3582618905b75c31f42cf527bfda3fda981e67833e931", + "0x53bfd508bbdcfe624d0bb967a028eeaeaae776345282f6180e93e7ac9b8bbc9" + ], + "nonce": "0x13", + "sender_address": "0x87b5c2536abec4170cd59c7ad72798d6dd22bf2a77cb5d36cb68876d59d258", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x177bb3f2d216e4b5fbd795644ed4f764e4d44e88c6baec669dd7c961a0d5459", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x7173b79f089b5c3a04387f24fc50e335cbf17519153cb96b1d76ddb2b963b62", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x503f18124c4f19a7f26e6dff8fe9a3e623a11ddb4d71343481f798c97c88aad", + "0x4cd688fc6a56d053ff52f48d8e0f595191b6d656a6dfc4c33b6d267e294e8ed" + ], + "nonce": "0x23", + "sender_address": "0x1050347b94b0cbce9abe2ceab62f47257071169a4ab22b4fb67f3a731e0b486", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x78c79109fb270aedd672f34ee762cbb13182eac88902e83dba9ff8067ccaff5", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x4c2af11345d1c14e61e42cd6f9aaf30e3198742ca02fe80ff8779b6f4c3529a", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x73b53a20908f1408150e077fc7a1a5dca36be49e21ae379978401818b9188e1", + "0x5eed6cb7228dd6a1803511a46d7de5923cd8186fd5045a26c1f56c7fb31fa82" + ], + "nonce": "0x1f", + "sender_address": "0x401930eb5465af9c93f63defae98fa9ededf374a901f24f1210a150923d10f7", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x553865b8c00b13964c2ca979ab644e5a78698d1a432dd79a139212edc2a3bb1", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x73cb474823be71fa131985a878728582720db457b0b93a88510bd5117473314", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x618e45ee94447e60f3484349aa6e02c4752e1da91b25b0b505bc872e8994623", + "0x5470c6ad6cf15e6ce72ece561a46ad220f462f87d4c1947b4fd34cf4fdfc332" + ], + "nonce": "0x23", + "sender_address": "0xd9def9409244513635be50767308e1c80a10bb5d116efdf78b9de36620bcbb", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x23a84f6c04e12e95156f3a95bba5fb937962497684343aa8b383e0eb9544b4b", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x3e449ca641cd0bd1ff73c932f69202871c2ad2543b8bc11cdad527b74f8d0cf", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x24936f9cc98fbc60ac3720b24841b2af04f0958b38b3134af3c4be36c4b90bd", + "0x52309319fdcfd3d2f3b4999bc3c0c4b8a1cbc47778ce7becb0b2595e96c8088" + ], + "nonce": "0x34", + "sender_address": "0x11f8473d749770009ec91b9e6f723403f9be76e2c93c62919d14989aa9f343d", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x5b356f0bdc58baca5e3b09d7924a9c149c04018ac44c4b9ac8ea8e909f273e2", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x6502bcfbdc0ff581dd427b3352cd5612647f4423496dea5a86d5bc58c549f40", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x1e962f7dae07cf748e4246e710d2c8578157dccaaf3a9eacaab998c57e30431", + "0x22b3af21c7f92fb509be8a158cc9b5ac16bec3ef11d0b66b75684b0ed51f7b" + ], + "nonce": "0x15", + "sender_address": "0x755a7995c1b920ef28e18c4978d73a1c935ce206722c4a8398a1735548abe2d", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x448352a22b7d13d447579abd96b903bd4775e3706adb4c849b27ad8c35920b3", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x12201b7537453148e286b8db7ae963c8caa2c97546dde9e4b3bfdd68479bdb8", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0xd7447e1058acd01fffc4e63914d650b37da08a2c72f1c24662e92582b58db4", + "0x5a732257f7c5adc75f426ac19e19bd4be01a0a4ed35eda94a908e0acdb9f46a" + ], + "nonce": "0x33", + "sender_address": "0x594a6c429ca64604465758db99ef286d5c00d847c8072fec3ff5f0e6b65cf64", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x4ff825824c14191fb3ab092af3398dc43fac2f39b6bedc38e9a59eb1830353b", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x71b3cb789db36c1eb5c123ffa8022b7636e0ff532a66817ba4aa40becb87600", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x28f2a2a5066c01fb93a87b828080f786dffe542ecd0d5f756110e94402e7003", + "0x3534d145049982b7a54ad9016283a6d3f9a96f6347a7545c2761da94edd4a77" + ], + "nonce": "0x30", + "sender_address": "0x9529b7734deb881652cb0903f26875b01134cb0b091822f85edc697164e7d1", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x98a0c24e9409c975c4d00b538786fcef3e6917c87c2bc4f6fa6f0030d2c0ed", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x53beaccdfa5cb43c14a8906db9bd6617ab60afea57dba13c655d5c98df3a4ce", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x1f882ac460634ee181a6b75c13d4f00c6cfa370a0f1d4361bbc429e8abd8e05", + "0x1c9626ffe083884a3f67fcd45bc32f33556178ec2f8c55e3b4cc77c53ff970e" + ], + "nonce": "0x34", + "sender_address": "0x1e6da06bc1d877fb69dd4110f38f0e5a206174c57305df51653141381aaaf43", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0xe5fb2d5857d353e096b22ef0f8e9f99ff95b806e02a100de157a10b9f0dbe0", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x67102dba80499dbb2d003d8a9788624e66850545e06f8161e0c1ee67865e8fd", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x560cbd1393c4297ddb75aef100b41b0cc0526203023f544940cd6fcc8053ef", + "0x70e7663bd63f7442b5413ee502076728574815aca7f58555462a196d526693c" + ], + "nonce": "0x18", + "sender_address": "0xe04c9e37787de848379c7898612cde59fbf95ec633deeea3e34e81f1d7df56", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x4dc90cb95f997f48e57659a8b967e8e274efc50efaa44e151d3f06d5c09888d", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x839e5b87c654d05241a6b948abfc731d9769330040b8c51152b0333bfa7a62", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x737a5ba108f092925b531754d229dfc5e24c261e8301c576435c29459ef2184", + "0xe125d49fa1360aa6ce37e6114d3eac06def1aefc5c246808e8a95a747aa56a" + ], + "nonce": "0x22", + "sender_address": "0x4a724a4229813f34e274837684c652260f7621f76e9457942f05cb59fe4469d", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x2b23e674ac1780db2739b1120bfa338a1f5f70a1e2f504c420e3b36e67d2e7e", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x6044face7ce6c8aa9f8a9dff0ad8404e0b7e94b51b2f0ab18f4839ba48ae63b", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x10e5677f653e8f75b03dafcb63888947cb90c421ea593e62e23d2a658d95bb2", + "0xf5f6310000df27dd578f31a511dc9633fa955cc4cec17a345ddf28a6ee3746" + ], + "nonce": "0x39", + "sender_address": "0x3732d673d40f828b64bfc85236012ce2c280d3c936aacfb8104f7d4c8c74bb0", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x5084d51029195f1ad25cdc2f9dc1ca7a6b852a0403d64cedcbea6823ad60406", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x2b4211bb8fe9826cd759f600ace0d683928c5d01828673cb636c5960fccd33c", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x46234c6b3d1780f5c29b02a9db338e9ef5efc2b2b86077af22d7e3f13cd75f8", + "0x327c8f0a10b84d71c5e5ea15313484846791cbb51e804bfdddca08b08e6e271" + ], + "nonce": "0x17", + "sender_address": "0x10bd0687cdf260d35210af52a93a9712d51a403868a103e91e491eaf17973cd", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x7f4b923ceb59db39ea45e8bc509ee21a794f6bf519195843196383a7f41c733", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x76df89475d06c33ecdf3388123641a370c1966530b3368fcba532f5c0968065", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x6e712408916b6b533d69c154e2d6fb51b28dbba44715fbdc1e5b0b334c8151a", + "0x6d84a28ef0bc11670c63aa30f178e072f425a8bef41ed3eb0e351e509ff68f5" + ], + "nonce": "0x36", + "sender_address": "0x6c55ba1f4efe13d3eb06441582c3aef616542be06363571d970ecbceb893de2", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0xe84b189ad866d825e7acba6c35b1896bbe63af2c978c252b560095dd624475", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x3602546a1a075eeee06156aaf95e563c67fa62f9a49aac2462192b76a714bcf", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x10351c6f771686a2642e1fcb2b224ef61e0bebef0c0972024e797ad9e3d1014", + "0x338390313aa4b367c359d62ee2b22a2d204425cdcf195822964a9cb693b92ff" + ], + "nonce": "0x29", + "sender_address": "0x6075da58eeaeb2c380b51f5115dfcafbafc70ea16a200175ad50937d50cbc3d", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x2469bb3a01d85d5c494b4ec4b395892aa1471d39f9b8ee02e867c22d9fbc9e0", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x3dd182a9cfeab84580ea77bc8302af732566c692d5f2bf3a744e0831834985", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x20c24f1611d31f9884f15dc27bbfc961844dcff3350dd36a7185374b74386b5", + "0x4507535d4d8a21f1c8371f1aa300bb2441ff4827060b65705d8380de98282d7" + ], + "nonce": "0x2b", + "sender_address": "0x79b0d5fe892237bcdc0979892a9b2790f23781d41aaa8adf351c7980c8b65", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x4d28aeb4a73825e8e220be72fdc88a1c7f3e3a07f7b11b5266e4ce09c5d4e45", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x3e06fbeb0a6fb7993e15ded8434b8c93c040ef49a47ab53c027d4bd61f6ebb6", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x3403eea477251b59391ebcecb52092eec8c25f4c3bcc5566e06284f3a661bba", + "0x439c70268ff5b7cc2dbf56dc0a24e2dcf6abc636a5b6d305af665cc7eb24f36" + ], + "nonce": "0x31", + "sender_address": "0x6be5a0624172c2f0a3d116d03a861375e023f340caaa6363854c9ae4a460f5", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0xb83de952bc6d08a2717450a62dc63d8b7388be348c34d35e02a4e721fffebe", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x57b506804275c73627fc751672a4f05f6cd1dc4aa7d63b80d7ad0e693fa421f", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x7dcc4819b47acd5f65928b70291e55c7640c1d1236f7790b8636e2e554345de", + "0x6aace486b85fb89e9f214555789b19344b89ae7999959e5c3a32a12bd4f1c14" + ], + "nonce": "0x21", + "sender_address": "0x6a4213ccb648d4cc272690144073efdb184bc5c0253f798973666761b231827", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x15bdbe09c4994bcbf777fa5e7a96f75ca7f48ae9adc8bb4729b9eebb8421dd4", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x7404ba50c6ab74de5a464496aebb760bfe9d057f67b0f10ffd238266a1929c5", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x42666896980fc2d9970714e70997b2211fea807f3f1a77aaa61b31050ee6023", + "0x472cc6789bac9ce24e442268109441848ba42621e33b911a37b80bca4b50e03" + ], + "nonce": "0x41", + "sender_address": "0x2f50b3c524482dfd39d8236ea2c114df8d8fd907711584de81eddbeca7b7921", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x1ce326645bad9e0e6a403e59fd425b44228ebd91fbd4bc859ef3931db28350e", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x6336498d27b2d2c2498092d18e81fe90a6f910265fd73032691404ba01c97c2", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x6981e2452987b045e1327e8d799d4cf912cfd4cf794b234e93b359622513ddd", + "0x160096d3a41972c3963053ff127418ae48446474f3ac1a46e5c47983d0c7669" + ], + "nonce": "0x2f", + "sender_address": "0x6d7caa4818f9d3d4fcc09f69e5c776ad60978fa701d99a6c5a0c70b7b25e1d5", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x52a42025cf1191517e1d6320decbcbd29a0e9b4d6d541642d236c94a1129b28", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x25a369e7d198733982640d84abb9231e0370233df715cb883e0ca96fbf3c8b", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x5f2c19e03ffd6153f8a48a23ca01fd8a557bdea633f2c90a64e3b0517af58a", + "0x54344d9d5f89ad85e015fa33a08012d2ae421c3de054e1ff75f35f489b20c14" + ], + "nonce": "0x36", + "sender_address": "0x46e53968a2b5fe68b9b0d6ba6d8a475211b845759822e9161e3cea1afbb1c5f", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x243276cffa081d5820d2cd5957559e7c9079b04ac9ccdf89a98ae76cd9e336", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x7d975576bd417092e8a4240a9dd394936c0403ed924492543257a71161efe", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x3b27b7beb64f4ff0b643c611820d1ac886a4ee2c5b100a9015d62fe0ee59bec", + "0x3c119930418190f9286e93ec2d9f63d88c8f43971755344624a8a9b2e73c90a" + ], + "nonce": "0x33", + "sender_address": "0x47666c862e5e3db0e5a43aafd2d1ba5b1e8eb498ea5b42ebc6cd01ee3a16609", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x53ce509fa10a89f8e84c1a757c6ebb9f619c88fcf6cf4cf7f3a0dffdc98fc38", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x4bce71a291a23339f70b0364cc38ad842f590f915cfee77388a781d2b7463e0", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x203bd4dabb5942c6a7296c707d4f839767ab79a6426e1ad00565c61b0d5c30a", + "0x73f1285b5b5a2956e962c2c101c1daaa38bc4e0814853ebd81697cbc77e993a" + ], + "nonce": "0x2d", + "sender_address": "0x2b24cb0ac3991cb6362f305bb241e0e874784d44e89d08859536270a29a3799", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x33c72c1fc6bdde04aa50b65cfd0942f84e09105f402e4007212e62076abf042", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x247e7f82d7c0dc9c7d932adf83b1043c6065d704af574587481c2423733d3ad", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x6a10409eae967590074f40cb1350fee3b323e1136981c645886da6d2014999c", + "0x56a920144b079204f37ce02212f910658f2961df0c0df0316ed173ca1251e39" + ], + "nonce": "0x40", + "sender_address": "0x43438d30a486df0100bfb40f7dddbdcf9b9c21f2079ae785a22b2816d09d842", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x77649160825a0fa1efcc286ccad2f293f8188372b5c1417e6cab143f15ce0a2", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x1c08dce6167fb92654cdd8859b7a497ba1bb8822bc9c65b0d06af4e2e6236e1", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x5d058fdf1a6c41b73bfe40a376b61d299cf078c4e09cc15debcf05fd19b256c", + "0x6f72721bed9fdf79fe5c144508202529d43761a4e7b0fc494eca85f9993760" + ], + "nonce": "0x45", + "sender_address": "0x708610e23e4fff8c6434eefadcc284215b0ca10c5b2530d784a547ab7ba6c1e", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x66ffeea403d80b5ce56f240cc1dc71f29de7ddcc678ffb2243b83781fe203c0", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x384448c90680c595d337a129ea224d736e633086d0658f834487de73e081146", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x27de295b78f631ba298235c75237cc3429abcfc2572a78074ba5b4b1aad62a2", + "0x6f5a38983c8dc56c24e3d16f7cb4987df2f87e61d360633ea413a99f2b925a8" + ], + "nonce": "0x35", + "sender_address": "0x73ea2bf4f84c4ef4f95f6a5a03af3317277deb63039330d881ea20e33d0738c", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x651234373645c402aa2545fa765084ad73e170f52563a3412e7e629a6aa955", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x39a051c998a67dba681a4d4b62ce5566b01c50d591c8d8fbde29e7cb9cade5d", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x43503096872a3349c363375f5693e10d95a6f14e4f34685dcecc6c70cb3a014", + "0x4cf889f25deddb67fdb34ed8c0d4c1a2756fd1b568ee7b35584e2edd65c7013" + ], + "nonce": "0x20", + "sender_address": "0x4c7fbf3010747ded03b3cbd0a8bfb888cdeb9080a06f5d0d1e32e36473ac5ac", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x3e1e01b344a4bfa097e226570fbc97e94a202e1bff7621f5ffd2b614ce97d13", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x125beb29b36da82b913ca9c974555a5cbbd504257b65be41118fa2f9b1ebbcc", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x50b55f61113c4d50d207e5a769d322581109d59da1dab64e69fb8520d73cad1", + "0x5f0b7a0425f78ee3562fea515672787082cbb7897d54a46ea12f64c5ad5136c" + ], + "nonce": "0x34", + "sender_address": "0x688e05ac8427736a7bc419f86ad7a90ea6157d2d82ed30f09149b18c97a2391", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x44d6b751b21d24bb3b3e4acc9940f62f41450f3bd30339394931aba3d00c6e9", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x4d066bd10fef687175b64486069240b99e9efc085d29f66b8430e8d352d9151", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x28e8fc4deee9e2d0f35a96193c470ac4eb02c94bc00843788e36223a9f1e303", + "0x328a44ba31703999df6c5f3cb65d23adeed25fb1535ea48d94da9dfafb5da2f" + ], + "nonce": "0x40", + "sender_address": "0x57dfd6da6e2abc9b831a908fe8d4ef45fe2830c3ea287ec2341c4bd88046574", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x2b8806c5526bf682c03a69f6cfa4a9c95414e5e315fb1f91fa3440a5d78264e", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0xe6dd45f7f047eb5b9a0b48d75e53328166b15a65966a192583fb9597907f04", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x1e29cd10c49aa853e9f86350795e72561cde719dc9f5744114933d4a93756c3", + "0x3e0adbdaa87a7a82575682fd37667409d6258365b27b330b094da7a2331cd4a" + ], + "nonce": "0x3c", + "sender_address": "0x66a981c57e4253cf8d24eaaed89f7719c9a697be3b41a0371b24c8fc00a1cad", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x3d1b043f11316ab21133bd66d438d2bc801304d810be7f0a7f9bf7635fd7d12", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x310ce6a7234f51d7a7b3e5c43d230ce21389730a9d5287ba357e31279cd1303", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x2e0072fb814e225a228f2702fbc4069a94bc4e6b69eba820e215fe2b9caa5a3", + "0x45777afa12bfdc038d8951838038597edaec0c85fe240de5bd2a83c2bf0dcf7" + ], + "nonce": "0x36", + "sender_address": "0x36b39a015dc8b78a90ebc74d8f98a7b5a6cdc718118014291966650d6df65", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x425b622d8284bddba9a4ab7266daacda17a1877430ed52a3f69892853648d4", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x1b7d100fc1a90371e9e64e943d5369eb7bd12b54aa034a983fa81213a2bbea7", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x6503ebe26ffbecf60765bae2b80c59e25db4bbda943bf0489cb39dc1a4ae192", + "0x4d207df40b9b11c0a2486093af60d45357fd9fe6a5aed769ef9045fdf785fb5" + ], + "nonce": "0x3e", + "sender_address": "0x3fd8c55203651e0b3c6cac235b8b489b0a302731691e1c4b860b7dc41a6d6be", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0xe4072b51b39c9eed5d3f6a4df783d4824e7655b471e878e1a03fad678bccf2", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x23591380c2f899686689d0ea209b3586aa27f7f644ac06d3efb376b9379a8fb", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x7182ca9091f3d8af3718eb4dfbd07bc8c4007fa6c97fd6158f9b0094ea5d3f8", + "0x7fa7c6e3198a67081362ec45d5a20b90b7e40e45333a6d6db3a930886525c42" + ], + "nonce": "0x1c", + "sender_address": "0x22ccb773bb8c536d70c99ad4be229b6425be5e8014a1330c72495760d2f4b60", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x3a120f0603f880eb3ebcf2f51ad8b510ff45c52e2b19397487eb59f7d215384", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x6aa9bf81f896ab255495901ede9c7de8423457c79b9852ad000d92b7a054be1", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x50042072bd8570e5e3dca47cb7a0c52c7f4aab9e256e3032d1bcc635956107b", + "0x67f43a38ceca81d7d60e3510a8cad672d229ada35b0c5b7ba8cd988414f9bd8" + ], + "nonce": "0x2c", + "sender_address": "0x33128bd86065b89665dccf20b8224238a3f169cc2aa63ea3de1d4e1b4431db0", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x2b8d25ad36db79ee9f1ef1900aa3831745dae07e1d5ee7a161a2b1cddf0dcdb", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x3d8144276a490ca957d3b050f193c30f8d2e98c49e09946af09877b2d14f6a1", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x4bd5a931ff0b2389dc8535394f79ed401c9c1eb4c39e052bcea832fb9a77260", + "0x4b719776a22112c446bacf76345aa216886fa4459856e302ff2565e0e4e95ab" + ], + "nonce": "0x30", + "sender_address": "0x1624d229b7b2733f0e4f72f205ab058c0b247045ff371aa5a7aa95a7a037906", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x44edc98aa09d3c48b4da189467ea3e582fe32859d0df8ca47b768156b85a260", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x3ea0ff3cd693c15c2a125fb6c8b233954db1abefbc1d5236acbafcce2b9603b", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x946c6e463ae3620c0b7425093d39003e7e2d159f3941c9a87965195b6477df", + "0x1e0921eb138283932822b4cc6913d50aa46f678ca91f53374f1a75d1e5df04e" + ], + "nonce": "0x40", + "sender_address": "0x4dde2846e7cce0c39e57113809340c87421454d8d7c48167a7a2db9d0ef7067", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x6399dcfb7c3ac836f32632f0395b1c7ff6c72ea353ec122b86f0a49e045a96f", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0xb1de3fa66983a9dcfc33e4c44eb691a4e4746c7f4709d97fdda0df5dbe31f7", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x3848ac1e3db337f7c880a88eea36e308bf552eb7977aa1360067684eade4ce3", + "0x8ba3b0cf9352e202117b72266661c3b34dcd05e0d26c0790d34dea2a6bede9" + ], + "nonce": "0x12", + "sender_address": "0x384152c373546b914f69e6c011747c08c519c3f43a4dc4b4b51849ca0e99ded", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x6e7616c3ad7f00e59f65e276653601a535125a577127235122ddd92d9a2792d", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x7a14ae239b5ef52cac2e795354a2507fbc721a441b1b0c27899747aa5b0d56a", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x31b8c51c2c24c561b1c64d4f232ca2a03dd4f20ae95e250bc4085e39c317e0d", + "0x813d384c420a04a7a2555a3955825bfacc2ea3f7c722fd285314ca1ec8b588" + ], + "nonce": "0x11", + "sender_address": "0x115f012bd02db4cad77f3fb19bea28087d03a4d03f965781711cd9a9379d100", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x613caab7214bad95f132347d5afe5bbb421fdb6b127b1f525fd64651f88415", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x4ffb0b6085a2ef31164f2268de6d215636a5a7d8fbcce5a8ec52d2da0018b74", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x2131941fa98a072bdc74691807b5b6a83b06d23dfa794ae833fcd6849b91474", + "0x1219e6da19d4059d82985c10bb1f7c03942275cb28f861057884e9c8af6a84e" + ], + "nonce": "0x37", + "sender_address": "0x4102dafaf51f5e6c854259a48f6ccde4fac083d2dec07e784c5c38e7c6e9a8d", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x1df4af2d02656e93c276ddf4cf618d79e21a04e271b73e0358eaeecd2798e9", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x7f72aa25d42ae1dee8aba34b61f43b1641dcb42b02112084bd59e385bda1bbb", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x6584568da1b03c2ec69ba6fd989abe2126c550f76385ab11ccb2be6a1eef8d1", + "0xaedad057d293e9edd8dccbd269c03a44f067a987c1971249bfe8af34868bcf" + ], + "nonce": "0x12", + "sender_address": "0x7d3644f1c8cc3d0fde11a7c69ccdd59e392199be927e2e283d21b5445357ab1", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x6c39bfb03ce74f827587993c35fee75b194aca03d6933e55b39506810b924bc", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x130d45032978cd3896f347f0607471a7a700ad0726007fdb8457eaf37ff0eca", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x4fd6b747023361b7fdcb9e1e841be05ef3b0faf3a7d5382fcd8e2a80dfcb579", + "0x5d22583c57ff7bb588bfd7e9a773e7c5b892b8bd5148a1bf12c4c946274b4c2" + ], + "nonce": "0x3b", + "sender_address": "0x176c25d47570070342b173716432127caf510d2b00189a3d8c9c0266297ec30", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x45b3e73736ffa7d2b57dccd9b2a08bb53f5db9c4a87e1495b6550a13f5be47c", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x70c571657e610e7a8fd0f9974ed9a6b086ff05d00129b0025698d5dee3ff3f3", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x70aa49c623dbdddbb0bfd0ceb5092f10f912c973d11c51ae41ae553afde6bfd", + "0x718b0142f6360d60e605669ea9dc05ae9120ae12d9615eb7b91c3ae83f8cab2" + ], + "nonce": "0x2e", + "sender_address": "0x15bab3e51c95b9d58b038c49fcbd26d6e163cafd66d2f2cccfce75cee26b762", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x14e8744f0fb2432cf027fa55a36bf65488f59ef104988c702cc91adc51509f1", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x35928dbd8c4e8bde8f375b19550eec284538b00c09e97d3b85a45893eb965e0", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x309f05253232c753bcca61e749cf14a285d909bc0485b117b7ef2de71e7762", + "0x204625c91a27d55fbf2cd5267568d9cbdcd993f4fd4b3b4a81024639c2a54e" + ], + "nonce": "0x2e", + "sender_address": "0x481d6bc11e059a6f76ef7f3967cf22b9a0ad02236c59bfd641076cbf371628", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x1ff782ab0e8c2ce9758509f291895642a960db30e4e375aa7ac72bc3c939038", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x6e4548e3c81b0f6226307a787dd1a8a95290721f0b92faaa54eed362c30dfa7", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x17c1005df98c741da7f8e2bae6efff9d2e84df4b0de477d5495831e9fec516b", + "0x1470251540dfa27a5878a828ec409c88e39ad49481adf333f737ddc36cb953a" + ], + "nonce": "0x25", + "sender_address": "0x541b4a8bb25092e7a52dbe8f07810e5c9efcb2774d52b567845fe8d3dc3c92a", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x15a7bc9dfe4fae868070df836f78e7a6256a00e8b2e1355886a2adc28917969", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x2b331ae0f7d03c9fd6088604f704980c919dfcd030ce4cf2d2e5194dde6cf24", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x1a4e75f779779eacb3e90c69e290fdcfdb3ebced454735a9167e19d6e67d4d4", + "0x7b333b7cca5082a8eca5ef1d0703f16cf13416159b0c75909699fe597a4598e" + ], + "nonce": "0x2b", + "sender_address": "0x21bf47cfe73804095e3e1b25e656ca2ca9787651de3e69c9950943f501e30ce", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x43f3e848709d1347ef8fec1564050ef48b2c4b4b8848686228ca7d48d6b8952", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x2a07b11c3d126f88fb09ff5be4b14e9616a0bf43d7548ea8439537934ff15cd", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0xcc672a2555b5c13ff31385e7ab924ba0777ed2528880f3c6563dcb1fcb8c9e", + "0x474ef4cd918a3749a774223918cccd916083f3622269c58a892a49ad545d44d" + ], + "nonce": "0x22", + "sender_address": "0xa91641858e346eee18cdb5985b97a73eedc7fdc92de8fd3cef0b42bdbc00d3", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x12d803efb6b14fe4cbf885e67618f79c9cecc522ecf9549703d3d0f3bb22b19", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x2c1aa19b694ce946c474d6fe12552c53e208699384c3824d0300971fdd2288", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x8b47ce73d6bbb0558e8b25787bf63d189144ac35f009309e8a382cdaff5dce", + "0x46b65e2e7a4ddf1f0931b5aa156dacbbb14cbe9404422b20268dfdadf16c8de" + ], + "nonce": "0x2d", + "sender_address": "0x4e17f08446389b5cd0df8953acf3a0f2f6a6b2a80abd762b0101e7c6c103157", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x1f2f2027b73f9ded8c6beab8934566d563a0a0d8b4e0aa80ca0d9e11c24cd90", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x476ed4d8f3194c6441a8b6a3a6611f4df286a30a11d621d61706e5cd597854e", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x30d332ad0e57018f1a7cb53fb4dbc1fdae16061a2e48056f40834904beb3bdc", + "0x5129bbc9c8d3e19ab1fac09c93e0d82ae9a6e2d81453e19e4844af69d1ca839" + ], + "nonce": "0x2c", + "sender_address": "0x71a161b38b1229d32ae61b14a2f44bdc73e6664ff8b3a4184f66abca2735fdf", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x16933ea9c914684bfaacbeefe89927f6ea29267fb0fa4661d0c1f3752530cc9", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0xc3b7c3b42d74864f7989003a61626c08849fd91b4f6464b932745555224dd", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x1e91301fef1aa0111f5a37a113eec92f1c310fe63f28dae24d63828f6a54b28", + "0x3f451ef46b8c407915bc02747094ca718e16a556673cda20873fcc10d678562" + ], + "nonce": "0x3f", + "sender_address": "0x9b0e317d0bc8a7d797d9a4575dad53eccf44b671c0591c7ba82f5804d12985", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x9fcbb62b9953a3b658b5c63e3610a168a6951943aeb253788558094d935166", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x310ab042ae9a8904f63c4010f53f89a213bb91539403324d5c176905df2386a", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x4e4b1ad42a87a70d6d590cb4c4fdfe993f1f9a18404476344a796aa115f3db0", + "0x61d3fe35cebee270f4170af7ac703ec663fc354378ecee313bef9ae8cb73fcb" + ], + "nonce": "0x2c", + "sender_address": "0x64db11e31dea49ac0945a548fed4b38657452f98f0f29f413062b12873f4afa", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x120f5f0ae30ffad55612dde70c1a0a07af8d89abce94b8b9ea111e52d1e3b0b", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x776f598d4c2650c49f1fa9a1c4121e652b6feba8d701753a39bd44bcb85719e", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x1bbc56bfc6f5380fa22f665c549617628f200af2493189c0848e4b89032a91a", + "0x2af11bee1f3626be3c1df5c0567558384c40f8b447b727862daecaa03f513a2" + ], + "nonce": "0x30", + "sender_address": "0x5112b78113307795cf45051a65e9d2b535a236cb8ff8a93b9f4f460357b705b", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x1cc1f97e9284232d34653d58fa8e30a8563801c1730176700f72339367a953d", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x362a854ae7efbc4d08b9c6b4e34105e46cca68c929829262d117f990f32e50b", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x4692fd63311d82575d63aa33bb49a0abd51e3145fd37316d020c99ac0e0871c", + "0x688bd2c1a39e0f647b870f68514d53c2cfa41022afde96aa0cd0d9d4ac29dad" + ], + "nonce": "0x1f", + "sender_address": "0x3b02187b88b06e6993158e652acc2836e15b6f0a95d4abf74891334b462f741", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x319f651f63b9d8c006771fe19839a340c1148d0bfaec7f54b9b7a4d74d95aa2", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x20d0bab6be590f5197ffc051803472e695eb6ffae36adb6a1974a72ecc7289c", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x56c656f395c671b97e8761427e982a312c0dea10237e40b4989f9e68f93a5ba", + "0xbed14490773781583125c9b0af4b85634fcc2b66ece4f7e2b0e5b0e576ac61" + ], + "nonce": "0x29", + "sender_address": "0xba1224bab4ce060da0b89da3294a672ffd0b4c313430b67aa6397510739502", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x3a0c01b4483148f2ed4933cd567c57082963db6fcbd7d2e742428b7485afc43", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x2781b1d51a8e2e2b3bddd5ca550d9c02f635ccda46dbc5cbabaaf99df615df", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x611d8f9d248881f5cf23a8a69ce1764c7d7d00ed207fe8b3afcc1bc882b47cb", + "0x644fcbbaef815f66a7adfd1d3e9f49d2ca4e86b2c88ff7ac066691090042128" + ], + "nonce": "0x6b", + "sender_address": "0x500eb16558214463a5c37ac189e1b12443e97a3bdf89ec0c0c4986376bfb00f", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x533ad6924cb390e6745bbe6194f5bad2f5327939799d4090e7d042d7f1f28d3", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x4df7753f4f657d63c10941494ebac856c9648c736f396706fe4d5fe673f2912", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x30016d25b06aa6a58d080f1dcf528cef8092e989780ad68a56f134f363605ba", + "0x52dccbcb0f8a2b4657481b8d1a8118fcd91bb453c0d2a0ff7d2ba7bd1fc666d" + ], + "nonce": "0x40", + "sender_address": "0x67e4d23e57541aa5d087eb95ec42bff6a9feadb0ca6dece4b60cb6e9b8c1970", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x6111ee156a2965b9bfe980c405c3cc7e86ec0b536c611cd2d164f9cd50269d2", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x5847a37545b923764f761184420769c30c8ec648807bdbdc2007f7ff599aebc", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x1584d79ec993c80d870c214fc3297e2219197b1831e8de6b74e0c3ea23e519d", + "0x564f17ba56bad717191b9ecd5bbf1ef48bdbe9a5a9076efa83ecd9ce5a49f87" + ], + "nonce": "0x48", + "sender_address": "0x143e4f7f4f62e00b9a027fc1d1e3e91fb655bb0c68d152a3bd81bee1ea38471", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x15400564c0d933f03eba288c0fffe3c76b06a5ed792dbe86c53b2a4f48661bc", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x66ae9cb40a20a47596bc290aaaf99e07c827be610499644aa6d6fcb725c398f", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x618afae6800b62559747dfabe2010f14a539b5fe8a79b3ae24beaf57239e840", + "0x62b732bdec7f87322666dadea7cc0f83e90ec2896f83d9a830f61bcdf262d22" + ], + "nonce": "0x5f", + "sender_address": "0x19994bf4904edd8efa817a79fecb999e7c622f2643aea5d54647c0031d724c6", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x6138951e7cea2a9949fa4197aeb29b079cfd99f658cc73c500765da96f2f857", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x37e2884609b45d1ec06b2043dffe99fb58f85243baaecce3ae0fe1fe6f2697a", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x4875fe5528fc63a914c18fabd6e1c4bb70efa245c84fa7d02fe4b490a45367", + "0x1939a2ed7e048c37cc88f6cd69abd8d677db14c514458948481aa076d076bd3" + ], + "nonce": "0x7d", + "sender_address": "0x56ffd7a92298ef76ddbd31936c19c23d29edc2f34207f1b0b5b270aa511d8d5", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x4a2fcc8551fb5e58a54f67c6b1a100cc101bca7b8bc76a506ddbf23caf7495c", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x53e768cf8ccf4c4b125ae529f0050823f067e078f8529f95a932b1e5b2a1a02", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x6a7a49657e7af683812e4e57901b97cf7d4766a27c6bffa7d21138b47d692c5", + "0x252600fc6dd21734b0927298336f724f96df279618aeae8909034b6dfb56506" + ], + "nonce": "0x52", + "sender_address": "0x691301df126b5190e5227b9fd62788723db7b5ea790c4e1da8f85aa6235d46d", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x42fc16f540975c3129cdbbe88275cbc6b926a4b183f08ea4802734963f246d1", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x120d051ffd11af42cb251813729cbd5feadad5685b9816de68455e96bff0e75", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x6f356dccfcd0bd9707e1920d3a1cedc147bd52e1a7dacf398f8db8c366753f6", + "0x6bbfabf8175909c8720013245eba39f1906c511ada95d0b24d39b46a859c42c" + ], + "nonce": "0x54", + "sender_address": "0x104745966fa5cd518bab10b5f1a741f4a3435d7d9b060b8a11778cb36fcb574", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x10121ed85e757b09180a9f23c1e0d0dde516b990550639b3e4b8db6f1519db8", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x167445965643cf3511fd7ec067085acf68fe2080c420659597324ce700f2f8e", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x5d81b379e6da6586255b79c3c9d5c5bf853dd4ab9d869c1fceab8e439dff4f6", + "0x66ec2322beb4a7bfeabce011d8d54e717d9a610364339d5086dccf65afc43e3" + ], + "nonce": "0x42", + "sender_address": "0x75eacc62294b96b3a09da916ec3e77bc37fa6ab5176e5bbd28aaf588d74baa2", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x53f5e8f152398f2918082611d71ed7d38f1a895e38a9b627086bbd553152cbe", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x4156cbecc1048d42a74297277e70cdfa2e3e87566a554567712236b1674f908", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0xf9f023c336aa775c547e1d03f5f6140043f70708492b6c2735c07b7341741", + "0x6b2069bdebefae4a5bb234f2940cad3ec024802ff8b3a08e474160cdb4b63bc" + ], + "nonce": "0x59", + "sender_address": "0x4540dc7107f1d6a135b575115091ee56ab13c5cb22a6188a2e7fccda0e009a", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x5033cb6a734b81a5033a6ed3367ee6998f70b01e563071d73f27e0dfb59f9a1", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x42e6f653c1f61632af8605be03e119b5808ff0b35153011e28431a574b40603", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x3700543988a46372eac6e324e1a938ba75f46486b0286ac8647d4be3fed8765", + "0x6e40b904af17cf64fa890946b46791e9b8b7ee8eea9246f7d7c7662accf6102" + ], + "nonce": "0x18", + "sender_address": "0x10bd0687cdf260d35210af52a93a9712d51a403868a103e91e491eaf17973cd", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x5b707625bd4195d215fa54e99f1a132db60ac14bc882585a8f51a3e7ddf8367", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x309ecaad1fced9d3c639dbc5fa49e82b5eca514f476d56b8c92355d6797d43c", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x2674699c320692fe79e3de815ba8f2ec911cc62d3c3c68a2518f2498c2b0307", + "0x55cd6507fec9b3b2b50f2132bb9017beeb392544c0ecf15150d016659d92ffa" + ], + "nonce": "0x31", + "sender_address": "0x5112b78113307795cf45051a65e9d2b535a236cb8ff8a93b9f4f460357b705b", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x634dbcc6decf882804e254340b0ccfe9a931e27685121e873979f9256fbd977", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x1dde6a5db2fd1f795cb3c21f4e40eec2547e1aaee8cfb96e0e565554bf8ec97", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x124d28844fe82464e2e62cdd6e7c84ed9ff9cf5634828bd77cb8a2b6c3f3aee", + "0x680a03f672897054a75360a1b1b0fe0315a753eec0db228ed1f1416fef3c8b7" + ], + "nonce": "0x35", + "sender_address": "0x11f8473d749770009ec91b9e6f723403f9be76e2c93c62919d14989aa9f343d", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x72ad5c3a194d4dc87ed27b317f00d5762c0362bcb93d7295887e1be8080a555", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + }, + { + "transaction_hash": "0x4469d51fe173183fa4b330b9151b756d50be2140709ae3b7540cc0ec481d20a", + "version": "0x1", + "max_fee": "0x71afd498d0000", + "signature": [ + "0x3c62c4d5b9a862e9386a18aeff6211e2200c65193a1b3e515cf36878c40223", + "0x1404fab307dca3398dd1d94240c416659af76f712876d95707eb35b6e8619c9" + ], + "nonce": "0x34", + "sender_address": "0x594a6c429ca64604465758db99ef286d5c00d847c8072fec3ff5f0e6b65cf64", + "calldata": [ + "0x1", + "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", + "0x3", + "0x6a592b56049cd8d77e5466efdf21e5efe15fb0c9bf78d0f3928ffd83ba4cfbc", + "0x1", + "0x0" + ], + "type": "INVOKE_FUNCTION" + } + ], + "timestamp": 1721925122, + "sequencer_address": "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "transaction_receipts": [ + { + "execution_status": "SUCCEEDED", + "transaction_index": 0, + "transaction_hash": "0x656a5948f817e538a4ea7ab86dadc1d351db38cb84fc34f43de45959f3d99e8", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3732d673d40f828b64bfc85236012ce2c280d3c936aacfb8104f7d4c8c74bb0", + "0x84bde295632e0884a4da2ac3e59d450a5d1c50628480316202aa9b9258464b", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3732d673d40f828b64bfc85236012ce2c280d3c936aacfb8104f7d4c8c74bb0", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "range_check_builtin": 268, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 1, + "transaction_hash": "0x77bf77fdacf7c42c92f88ccdc0e47faabe4fd544f8418880c9aedc9c122cdc8", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4a724a4229813f34e274837684c652260f7621f76e9457942f05cb59fe4469d", + "0x3fadcecafa9e47255cb635659c8998fc57e0ac8a780572a0b9936b4f1947a46", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4a724a4229813f34e274837684c652260f7621f76e9457942f05cb59fe4469d", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "range_check_builtin": 268, + "poseidon_builtin": 4, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 2, + "transaction_hash": "0x3b5daa647e491e8fdd09e38901cbf8af8b3f6c4b9bed6c9519b015a8f7e3861", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x594a6c429ca64604465758db99ef286d5c00d847c8072fec3ff5f0e6b65cf64", + "0x56d6364ef2185be391153e866bd87a6a98cda9987f33e37df583c4d2bb3ec00", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x594a6c429ca64604465758db99ef286d5c00d847c8072fec3ff5f0e6b65cf64", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 3, + "transaction_hash": "0x210d258284362c34cb0dd115cd12d5481ee07f424ca2179616e01314ec8520d", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1e6da06bc1d877fb69dd4110f38f0e5a206174c57305df51653141381aaaf43", + "0x27cb50f80270672f1fd0351a7abc49289ad9b1f8b34f21c0856f5016d1fdca", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1e6da06bc1d877fb69dd4110f38f0e5a206174c57305df51653141381aaaf43", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "range_check_builtin": 268, + "poseidon_builtin": 4, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 4, + "transaction_hash": "0x24f0b8d99ff58e931658c8c9db4db308375bc2ab028f39f3183326da621062b", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0xe04c9e37787de848379c7898612cde59fbf95ec633deeea3e34e81f1d7df56", + "0x1aa17d35edc3ee0c5b365595db91c1f48b9ad8dfb6a6b2aaa357d2bb01b4dbf", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0xe04c9e37787de848379c7898612cde59fbf95ec633deeea3e34e81f1d7df56", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 5, + "transaction_hash": "0x74c851a56435473eeee26bd0f33cfba5bcc2d86676847fe093ee10955b3e41c", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x273d24a6e32e7dc5531d7e1d17df2b2f91b7c50da2c9142a78c02de878cdd5f", + "0x73a6c571a923b0de62c56e0ff8d91fa03d1940f12a3044923db283fe7d52bb", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x273d24a6e32e7dc5531d7e1d17df2b2f91b7c50da2c9142a78c02de878cdd5f", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 6, + "transaction_hash": "0x683e8de59fbdda5bf2655a5b56ca713dd4708b653e3ea2d0eed5fec5c782f59", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x275c01d887730e6551ff416d8ef128d2a79afcbc244c776c819aefbea1818bb", + "0x785cea5ab7fc2a8b2ec4de10f787da9afc826be52dba9883becf9351d59d6ff", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x275c01d887730e6551ff416d8ef128d2a79afcbc244c776c819aefbea1818bb", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "range_check_builtin": 268, + "poseidon_builtin": 4, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 7, + "transaction_hash": "0x3ef0b3561556607b1fd19468dfb5bbd66f493dc648d5a14dbda6943bec9481", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x755a7995c1b920ef28e18c4978d73a1c935ce206722c4a8398a1735548abe2d", + "0x29595745aa0c07dcaedb213ff8adda5a32a10184a3f8b67fa81372be9f84176", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x755a7995c1b920ef28e18c4978d73a1c935ce206722c4a8398a1735548abe2d", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 8, + "transaction_hash": "0x3821214c3836ba0f4e58181ad0d0212acb5c448265f3f376f18c460531e2256", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x9529b7734deb881652cb0903f26875b01134cb0b091822f85edc697164e7d1", + "0x56c0469f6e05e124f8072a8e40dc278fc4788bc5ab2d9f083b2abae727d51f3", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x9529b7734deb881652cb0903f26875b01134cb0b091822f85edc697164e7d1", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 9, + "transaction_hash": "0xa8d6fa6804a4738c82f9ecb50b61d6ed0c6f0b5d095aa244a83390ebaad6e", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x350e280198d66aaecfeeb902b02089e026bc792f5ddfb88b04ebc92218f8fcb", + "0x54c2a598d057bcd861c7d9faaa527f829b5b8055e83dd0d733e5c0a5bcf392b", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x350e280198d66aaecfeeb902b02089e026bc792f5ddfb88b04ebc92218f8fcb", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "range_check_builtin": 268, + "ec_op_builtin": 3, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 10, + "transaction_hash": "0x2ed387a8556608d107de35e3314fbafe0bf2871af0b5d2034d92e56c899eaa4", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x2655cd6a02dcc25554bdddc055f304c84bb130828e1b162c82958bbc92dfee", + "0x1de3a6279c19fc65001bd37d37156e33b82a892a1620d14a82b8101b5fd2592", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x2655cd6a02dcc25554bdddc055f304c84bb130828e1b162c82958bbc92dfee", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 11, + "transaction_hash": "0x6ad74b9ea5705c5b36c899b004acdde0680b383efcd0f4a6e6323aa254dfba5", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x11f8473d749770009ec91b9e6f723403f9be76e2c93c62919d14989aa9f343d", + "0xfa08ecebee06e3f4ab3024d55b2e1a5646a2e8f14054c21a22929c08444bf3", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x11f8473d749770009ec91b9e6f723403f9be76e2c93c62919d14989aa9f343d", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 12, + "transaction_hash": "0x584739a828472d302c76113ca2380f66fad7e8db93a5b33bab83b26f57f6192", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x13372661462e9437e3be7442c0bb7f0a28642510ec3879927eebfdaa11c6b64", + "0x478a36fdc297561841694773015a2b756503f499b50d72415e6f92b731cb4e", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x13372661462e9437e3be7442c0bb7f0a28642510ec3879927eebfdaa11c6b64", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "range_check_builtin": 268, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 13, + "transaction_hash": "0x2d2ff22e0a1f3d6e43acb5da75ab4a7c9bc6219350953a0c29025271ac64bfe", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6133eb7e32610962c067accae847789b414e52ef69407bcda0dbc4e0562235e", + "0xebcee6a064eb96a9c7046d247d108b5d724749ef666df3a110fd6de085cdbf", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6133eb7e32610962c067accae847789b414e52ef69407bcda0dbc4e0562235e", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 14, + "transaction_hash": "0x79f9d3d4aee74c24d0bd7c6f7ee78bfe5a3553fd6d9b3622c744bfcc0eef189", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x77c28f25bc25bd5207ab10317a8ad029b560f22d77b3492cc910236a2ce1278", + "0x1aaf85715f7f99649113cc8ae476ef19d6aea4626efd7690aba563582eaf876", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x77c28f25bc25bd5207ab10317a8ad029b560f22d77b3492cc910236a2ce1278", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "range_check_builtin": 268, + "poseidon_builtin": 4, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 15, + "transaction_hash": "0x14a53a8cebb83a7bde0734b5ca9687b1345e9933286eb0c6835d0bc6d937d6f", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x87b5c2536abec4170cd59c7ad72798d6dd22bf2a77cb5d36cb68876d59d258", + "0x5fdef3d45e4cb5d8c05adf2c05d24d13ceaed27254cd4571beb9f8652cf6a69", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x87b5c2536abec4170cd59c7ad72798d6dd22bf2a77cb5d36cb68876d59d258", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 16, + "transaction_hash": "0x140e311a333d622148eb3ab8aaf0facd38b74b5cffd5b48ce795fbda701009f", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3341e828e15b839729b07957cabc597cb6556e61649a0f3bf98578f4b542c9e", + "0x78acb5290012e08fbf2aca15c32d6d3a70d86b02a77568df648068695555a43", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3341e828e15b839729b07957cabc597cb6556e61649a0f3bf98578f4b542c9e", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 17, + "transaction_hash": "0x2c51827298b7e36686f02c0bb9b43cfbe878d5a6332ffa430d63cbbe6993632", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x2709f3ff0b285074ffbebef3078d2ccd7d26d0fd7bcd4422d8ceb5e9a6a40ff", + "0x660586392cd851387fa2a005d5e2f8045e4a56d423739c91b5586a3e5e3a271", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x2709f3ff0b285074ffbebef3078d2ccd7d26d0fd7bcd4422d8ceb5e9a6a40ff", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "range_check_builtin": 268, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 18, + "transaction_hash": "0x13ee0bc0399bec6c2a8970ef0da8e655780a28be5909799db90057686c94c06", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x401930eb5465af9c93f63defae98fa9ededf374a901f24f1210a150923d10f7", + "0x4821573fb5df2b7a3ecb05bef19f7deff03c68c7f1eedcb2245ea5c04fe0dca", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x401930eb5465af9c93f63defae98fa9ededf374a901f24f1210a150923d10f7", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 19, + "transaction_hash": "0x11d22470bc9f43107645caf334e36f403f0b352587ab9515742043b60bd8f41", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x59c0424db8476a9d158e52848aea567f806afcb99141b8ef0a543758db2ce60", + "0x395e2721f3625ef250ef44e1d2f746b331891f2431b3df17d65e0037459a5a3", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x59c0424db8476a9d158e52848aea567f806afcb99141b8ef0a543758db2ce60", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 20, + "transaction_hash": "0x2b5ed98f483bfbbf412eb2ef1b9075a16381f39a8296a951dd55085d6394e8a", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0xcc4c8e4096a5dc1b161bde1c0207c34f82f4c0195cd428253f1baed6308d5a", + "0x33a0847247d19ba053893b0b31ffe11c0895e97806476fa383f70fe49f2585d", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0xcc4c8e4096a5dc1b161bde1c0207c34f82f4c0195cd428253f1baed6308d5a", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 21, + "transaction_hash": "0x2dc6f4e98d1aa63ceb803559f287084a84db3665306dd2bc52a1237934a415e", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x9a747a346243aff99283048beabf09c2ef25bfbbc8a177945f3a0eab0d3882", + "0x21aeb9df0d8dce0b45960d1644a4d81a83f9a0f8fce69a812f4af05893f411", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x9a747a346243aff99283048beabf09c2ef25bfbbc8a177945f3a0eab0d3882", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 22, + "transaction_hash": "0x378d05a544d7df1fdbd3745204223b47aec76bd3f14f98147c572c206e461d5", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4c37d767a43169fce247342e46438d0bea2b0d7f4efcd4a4686615e20a7c417", + "0x3d958b59764c3d117f7513a53bf399d80f1d454b17db76317bb046b86cacb7f", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4c37d767a43169fce247342e46438d0bea2b0d7f4efcd4a4686615e20a7c417", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "range_check_builtin": 268, + "ec_op_builtin": 3, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 23, + "transaction_hash": "0x2087bac692be145742133fc040cb270807006f0f95272eab6d847d47ee8665b", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x7b3f54f0755766215caa99b8ce31250020050ac00bdbdc25bbeb1cf5035388c", + "0x4c05cda4a1d91e09a4ed80dffb64c2c2bb74b62b87e2546185a30d2be76f3db", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x7b3f54f0755766215caa99b8ce31250020050ac00bdbdc25bbeb1cf5035388c", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 24, + "transaction_hash": "0x10119548275e625a700f0cbff8323d03e4cec856dc7b1377bc91fcf42eaddb6", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x45588fdb74513b42789edc109403dc2c2ac13e1a7bbe19a99d9ec45297f7450", + "0x391bc0289a116b822c3c5439091eb16114ed7f83196a06a97f14e0a3c6faa9a", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x45588fdb74513b42789edc109403dc2c2ac13e1a7bbe19a99d9ec45297f7450", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 25, + "transaction_hash": "0x2f4750c62fdd789fb68179b9197946f0faf3501654619ec73b63451323cd6f1", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1bf2463473be14da2f0ba583dfe08a8465ba99771450d67599de126fb58da9d", + "0x7308fe8a4ff72e79142e2c32073bd55e493c4d10864879e2cb7c5a4257224c9", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1bf2463473be14da2f0ba583dfe08a8465ba99771450d67599de126fb58da9d", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 26, + "transaction_hash": "0x3effc0e555c49d5e11abef41d6d1182fa5aee5202cc5d89733dce5859330057", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x11e0a33ad5c43d5bd2f7f0ccc2b66f591c6c908910c1f2f377c6f586a458eb0", + "0x37ddc556900ab31026fc6882947787335152a0efe67633af40a7e064fc204ce", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x11e0a33ad5c43d5bd2f7f0ccc2b66f591c6c908910c1f2f377c6f586a458eb0", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 27, + "transaction_hash": "0x33af48b568e7471388d64ce6261f698c4452772dc0950703cd8970326454663", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x768a45776c6e33860c802ea8b6f69170b275d576ff5ea0b6ed54c7b0da443e9", + "0x6eca19ab5a57bffb4a7aa89d27a4ff3a6314c8b4313565de209270ecad579dd", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x768a45776c6e33860c802ea8b6f69170b275d576ff5ea0b6ed54c7b0da443e9", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "range_check_builtin": 268, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 28, + "transaction_hash": "0x58f3d4f56d5d73445f9539f87c57604ba1a7558dd89395ad67246e5dbe54ed9", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x7b4ca69e72ffdbb43edb9266a3ce13b385e714e06f6aee2d7f2215b405f6a9a", + "0x452d5bce0e02200bcb5e8b1d306ea71dcf9d2c686c45eb037c69961757c606a", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x7b4ca69e72ffdbb43edb9266a3ce13b385e714e06f6aee2d7f2215b405f6a9a", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "range_check_builtin": 268, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 29, + "transaction_hash": "0x5efa3153e3cdafc7575fd30d6a32c777a5bdcdf5bc1af3b8e54f46bbb80085e", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x2ec59285aa2e4cbfefaddc331f3d876f207aed3b028f5b62957b0a464f92918", + "0x4b44dcf7f50ff4eab2271a0826997ce11512d4a9cdd5de9e2cc60cb970c50fd", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x2ec59285aa2e4cbfefaddc331f3d876f207aed3b028f5b62957b0a464f92918", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 30, + "transaction_hash": "0x244e0157f6ba489d5470cda9d2bfe76f508267cc6784f059dcda8a997e467b2", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x451d8a5c0ea89978d07a24ac6c594e1f0b57ca0a141ba357d8e169fd73151a3", + "0x2dee60c143474cb2205f17ab17b0f8fea5f6a01c86cf8e44b419a456f8c7e1", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x451d8a5c0ea89978d07a24ac6c594e1f0b57ca0a141ba357d8e169fd73151a3", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 31, + "transaction_hash": "0x34a973c5db6d82d636614d3ee29548769516670ff3b8497b0dceaad68ca48d8", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x253b4898f783590539e8ff61faee36bbe6f4022af6f5742fd80ed8a609d8cea", + "0x7a1e29a8753805b7e934bbf1cd9bcb597d2c7b44d2697fd8ac948fd70330263", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x253b4898f783590539e8ff61faee36bbe6f4022af6f5742fd80ed8a609d8cea", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 32, + "transaction_hash": "0x7e0cab05b44a35458c1bc9fd8d968c8c56d131ba02e6a6243993f445ae7a392", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x689549c1747f38f450a34084202987ae19adc553d7ce10c3d5136ed8f768334", + "0x5f1dfed748b556201babf0356c65525210ec3d0ad2e30acf3ad708bd63f136c", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x689549c1747f38f450a34084202987ae19adc553d7ce10c3d5136ed8f768334", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 33, + "transaction_hash": "0x19e04c41b99e60d3a5a95cfbc0127bdf3d63f9547ea862df7303e24cc9f692f", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x5aa0c4b6d10882180ed3bf70dc5bb99fad462fb926c251329f4c0f997cd5ae9", + "0x37cadeefb58ef26828cb8e74d5a1115388e279d00f5812f7c86ed76372778f0", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x5aa0c4b6d10882180ed3bf70dc5bb99fad462fb926c251329f4c0f997cd5ae9", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "range_check_builtin": 268, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 34, + "transaction_hash": "0x38515fa92e8ea300fd8d9093f81d2164f73006cc51e105d7538ef303df32d3a", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x2390a4d84cf00928adf4058ff1f15c8fe615ccaa3ccc1cd9b571d8be7ae806a", + "0x7012059a4cd41f6bf89e7ec7a82ca1d9cd083da0c282138b0b9e8239c386978", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x2390a4d84cf00928adf4058ff1f15c8fe615ccaa3ccc1cd9b571d8be7ae806a", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 35, + "transaction_hash": "0x44c1cc2a46a949e72c37d323fa5627bbbf0e7f8bbe6f73296773add0bfda3f2", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x2e19f222ead0bc05ad25d190bf89a63ecabf82f53f7d6bf383d05553acaf123", + "0x365bd268b91dd5dff4d54b7037d0b4b411e3fe15953f83b8a61102ca19b8509", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x2e19f222ead0bc05ad25d190bf89a63ecabf82f53f7d6bf383d05553acaf123", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "range_check_builtin": 268, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 36, + "transaction_hash": "0x22af4343899d28a47c93d8c140b2570d0a910596594c51ef6e8dc0548c8f13b", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x63e18fe7f3cb5a5194204ba9107a7f425c503c6adef0b686127b14bdeb5d302", + "0x714bed568aa17143177d8c83afb9446a685aa64a5a506e732ce592adbb770e9", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x63e18fe7f3cb5a5194204ba9107a7f425c503c6adef0b686127b14bdeb5d302", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "range_check_builtin": 268, + "poseidon_builtin": 4, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 37, + "transaction_hash": "0x1e3af76a9fb580153dce7f03a0d2e74418c47e301c875fc7862c8201d1ba8bf", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6804962ed2a44ddd07ad2931838b13ebc114b3e7f91b220fee99a5aca96e83b", + "0x74add3c8e5cd6da0b2255c94c86de236951e29660a46815afb91611c872413d", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6804962ed2a44ddd07ad2931838b13ebc114b3e7f91b220fee99a5aca96e83b", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 38, + "transaction_hash": "0x43fc4f993027fe63d1bd05764c997658e07106bed4e01b90eb715491f5481ae", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x2333f8254e3d2a9f527f4ed292f0f84b35af2dac6c0e664691ed48c7251ecd", + "0x6d6838f0ffc2d82f7e61221507a767634e9fbf282dc1016133a3b9f8e88943f", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x2333f8254e3d2a9f527f4ed292f0f84b35af2dac6c0e664691ed48c7251ecd", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 39, + "transaction_hash": "0x7775ba1c7d8779ea4e3d5fffc509f37c983af9eef79f1d392603a25d5b1eb59", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x200c519983a0104346afba82a2dc4eccd4a4373aa70a13316626e932cb6e58d", + "0x6b1c39ba34d99b5b73eeb4506bff45a05410fe07f14e461967ea8d930e93c8a", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x200c519983a0104346afba82a2dc4eccd4a4373aa70a13316626e932cb6e58d", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "range_check_builtin": 268, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 40, + "transaction_hash": "0x6ec2c34b64429db15b38e39ee43df93a80a0ef87a5393833cf65cc8a461ac1d", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x48cd92c018be0434daffcbcbcd6722aceda59a54ad1efe411fec777f41f8caf", + "0x582f41ed435a925057c9a1580823da6a37565e33ed96136cf70278bb29f38bc", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x48cd92c018be0434daffcbcbcd6722aceda59a54ad1efe411fec777f41f8caf", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 41, + "transaction_hash": "0x78cd795423a239f87e569a05f713ab523ceba55bcc100b428aa145aa4d44d3a", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3acd1c7261d5bda1736a89318f1b662d1ff804ba44a0c510cd2832156bc4a6f", + "0x376f58b6945bf8c6f6964e7b514a958da8b3699bd39b3f3ae0484f349f95ce0", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3acd1c7261d5bda1736a89318f1b662d1ff804ba44a0c510cd2832156bc4a6f", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "range_check_builtin": 268, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 42, + "transaction_hash": "0x2e6f7749036b34360b234e974d63a51edca243f61d2493d1756aa12ede6dcbe", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x2cbd65c97f07d4b0830802c819049523e1b8d30cc0bf8d4246df94854faa766", + "0x7e7661daecb8a0fca7dbd2ca85fb063680c311d0341940fc611cc5e4a6e60c7", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x2cbd65c97f07d4b0830802c819049523e1b8d30cc0bf8d4246df94854faa766", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "range_check_builtin": 268, + "poseidon_builtin": 4, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 43, + "transaction_hash": "0x95de0efc6d55c4c762100029aa94cb46dbdb0ee3307eee7bb83a5127fb5554", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x5b574462c662b90b11ce7c5750ac6b71d21d5b84c62a6085220557f3e54c14", + "0x5636db2bce3ab1d1df307dee084d35d20eaf66970b2fb83cc12f7247ab1212e", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x5b574462c662b90b11ce7c5750ac6b71d21d5b84c62a6085220557f3e54c14", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 44, + "transaction_hash": "0x6c2178115ae217acb8ea704cb08258c873ab13abc296ed16f2979ce25287417", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0xe2fce66497ffbc0b04f6d1c27eec2f8da3c4b7ac78a24cab67595644173eed", + "0x7ec48ff00c0e2c1fbacb1c8b6dfe3e0f43a9b196134d0b2132ca973bb1f1bf7", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0xe2fce66497ffbc0b04f6d1c27eec2f8da3c4b7ac78a24cab67595644173eed", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "range_check_builtin": 268, + "ec_op_builtin": 3, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 45, + "transaction_hash": "0x60dabf1d8850e62b5c6efc27e0c98fbc3d808fe21251bf5d19c55ff5d848754", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x38f5a14f93aa2041cbab6a0a2eb909f268a10be56addc697592c87c68eed875", + "0x2c10d6b259d6fed242b6136fc51c549f0937a44a493367fc86ccc529b462959", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x38f5a14f93aa2041cbab6a0a2eb909f268a10be56addc697592c87c68eed875", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 46, + "transaction_hash": "0x79dc84c42dac21d740ec7e54cad6d88ec6e26233eb932e1a511f7a1e21c53b7", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0xc24b71d1cdb836ea2a8a5d364fb9131c44fd4e15d1129f2233e3dbcdfe855c", + "0x1d3462f4184e648b3848f1ebfaf75f4b23742924a725d56bf1cfc9492d0ace9", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0xc24b71d1cdb836ea2a8a5d364fb9131c44fd4e15d1129f2233e3dbcdfe855c", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 47, + "transaction_hash": "0x4082594ebf3656e1c4d1145e8ec5ba563e5d63a7868aecdec6a23800a2e259b", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6fe8b5ce08982b6ee4321997594e23a9637fe0d45bfd5b5d718695f08b38a72", + "0x7da1dbb3f1942891cc5a5f737ed2d6655b9f15582a05944a6d163dbec3c2aab", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6fe8b5ce08982b6ee4321997594e23a9637fe0d45bfd5b5d718695f08b38a72", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 48, + "transaction_hash": "0xa5f543803af4433ac765c778c1a93d288f3dc468b0babc789517fe9a2002ed", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x13d16147f8cd04b852cfdab7107c6cb96de2bfa2a020b22694e8067c87eaacf", + "0x7809d1fdaf131c0eb339186cdf617d946c86668e50924d13159346e12381e07", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x13d16147f8cd04b852cfdab7107c6cb96de2bfa2a020b22694e8067c87eaacf", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "range_check_builtin": 268, + "ec_op_builtin": 3, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 49, + "transaction_hash": "0x143fb91a0731cba83f1482c1030b525ba4e2146c8fa97ecf2ad5b330c222a50", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1b7e553d9d69a2a1fcf9ae3a72bd41bac0ae603acc77c783ae58bf1ba08b80c", + "0x5c18c54ef498819a83ea6596096922c38c1aa9319bb3b03415252db3128f8f8", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1b7e553d9d69a2a1fcf9ae3a72bd41bac0ae603acc77c783ae58bf1ba08b80c", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 50, + "transaction_hash": "0x12cf58ab83665591f01058566c199fbb0ad79be88165b347e3e5dd83fc5d791", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x58643681bd6dbef6bcf4828660ddeec18f3d669b12ec626f14092306fe80e99", + "0x13241a67c8f9d5a88357d3833595cf1e77d517c5b25daed279a81be8f74c8b5", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x58643681bd6dbef6bcf4828660ddeec18f3d669b12ec626f14092306fe80e99", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 51, + "transaction_hash": "0x65f58aa22346b4d4529f3dfc29aac5de2002da9dc86124630edf5716fa3a7bb", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x247d1a8c411f2a456bc8a538fcf23efbd493c71b73f7421a8a4657147a59609", + "0x76245470ac3d77e859be12b55e3b16dc48dfe3e0cc85640d75e3e4894ec8182", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x247d1a8c411f2a456bc8a538fcf23efbd493c71b73f7421a8a4657147a59609", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 52, + "transaction_hash": "0x21ed75413223b673aad90b18352e7e2287c4426f0c607818dfacc211ea242e", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1d751f8d431c913531632cdaee1f2598821304cdb401170a91c76f0d5919a9e", + "0x113616d16bee3d91ed9efe44c83cb47d9d9e4b5a0f2c8b5626a4464c645ea9e", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1d751f8d431c913531632cdaee1f2598821304cdb401170a91c76f0d5919a9e", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "range_check_builtin": 268, + "poseidon_builtin": 4, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 53, + "transaction_hash": "0x20e5e2e9b41628cbf962f505b4333b37f4f78a87dcaead10c83b770404577ab", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x49872eb6a8d0b7336f6577bbefdd1667fc0ed6f6df6509a6b52d62048a38fc6", + "0x58b40fae2a6667866875dc98dfd9464fe80c588572dbeca17a0559cd0bfd84", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x49872eb6a8d0b7336f6577bbefdd1667fc0ed6f6df6509a6b52d62048a38fc6", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 54, + "transaction_hash": "0xdea235030568597ee39a993d504ee2ae9c6a9da4a3fc2b794212d261066134", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x78a19562b686d6cca5841bb192c83795cd8a1d9ffde0c0b4a53cb004575818b", + "0x74bdc4dc032e25adc01d136e1ce09aa07b7141e06c4205bcb4895bca4555222", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x78a19562b686d6cca5841bb192c83795cd8a1d9ffde0c0b4a53cb004575818b", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "range_check_builtin": 268, + "poseidon_builtin": 4, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 55, + "transaction_hash": "0x51b0712881b4972ad7118d3bbbf7a91cf9d35a802171e83f5a13a3459b9434f", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x40a560ccc59fff23ec01af1087d97bab10001e48e0fb493bec9c4c7e6831cbd", + "0x646ac6558218dc6e64f03be3d4c4e93f2343c859f80a1a86af088452def27e", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x40a560ccc59fff23ec01af1087d97bab10001e48e0fb493bec9c4c7e6831cbd", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 56, + "transaction_hash": "0x3f4b90fa23e982dca8352c6894247d0b8b83286cd8bcd6123b07768446e5d85", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x309e46e00ee3cfb4d1bd1f42267126cfc9b7c501f439a9c60093330c7e0cfa9", + "0x9ff0f306bb54ef1e56f29c4170b8a5b3b4f0472ff0f5b95cc929cbeba0025d", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x309e46e00ee3cfb4d1bd1f42267126cfc9b7c501f439a9c60093330c7e0cfa9", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "range_check_builtin": 268, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 57, + "transaction_hash": "0x1e543ed4ece9fb852bf7f1ce95aeed73348db7d0dac21b7beb95e7e05dc39c0", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x5826e2098829177a40c6b697dedb6b2c24d0378abb5a0dd870a19aef97cb78c", + "0x663795ae8908c52238228322554f5b9faf14b1a5bb28a7a2bd09d4d416afa03", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x5826e2098829177a40c6b697dedb6b2c24d0378abb5a0dd870a19aef97cb78c", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 58, + "transaction_hash": "0x10331f033fbbf1f03f5ec1bf58a2a659d852ce69bcdf9d1feaa6c5815695e18", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x273d24a6e32e7dc5531d7e1d17df2b2f91b7c50da2c9142a78c02de878cdd5f", + "0x7b00a28fb03b564bc74669f017620eea809d6bba3dfa58ca0f67142aa34ea56", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x273d24a6e32e7dc5531d7e1d17df2b2f91b7c50da2c9142a78c02de878cdd5f", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 59, + "transaction_hash": "0x288d178762aa361a1c08b55ae567bf4c18a55c4e3595624d087d938c1968e46", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x9529b7734deb881652cb0903f26875b01134cb0b091822f85edc697164e7d1", + "0x28d2582d04f3f466057b8d051c42f6702e1dc8f7cd6460e8b2b01a96ac05bdc", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x9529b7734deb881652cb0903f26875b01134cb0b091822f85edc697164e7d1", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 60, + "transaction_hash": "0x6b080b77b69390d6b4f4dd16d8a90b75dccd5373b6cd501fc6043100bdc7573", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x350e280198d66aaecfeeb902b02089e026bc792f5ddfb88b04ebc92218f8fcb", + "0x1a8a56658ea7529d7d8bbe74bb4d1ec0d70acc6f87a36252aa6e2921f7d901b", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x350e280198d66aaecfeeb902b02089e026bc792f5ddfb88b04ebc92218f8fcb", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 61, + "transaction_hash": "0x2f068f077a841ffef9a5cfc42f31b7c6683cbeb683048c789aac35d3fc1cdcb", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x87b5c2536abec4170cd59c7ad72798d6dd22bf2a77cb5d36cb68876d59d258", + "0x3df3f563b04bb3c63c1848e73367135e3d4a9f2ed579aca6e40ffa970fb22ab", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x87b5c2536abec4170cd59c7ad72798d6dd22bf2a77cb5d36cb68876d59d258", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 62, + "transaction_hash": "0x6ccbfae2657efa74c7759996c5799744ef3d14a05cbd1c6f82e59cb8d786a8f", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x401930eb5465af9c93f63defae98fa9ededf374a901f24f1210a150923d10f7", + "0x8ff02d921c310dedbcb26822102d1a5d85f5225073ef65427843dc208d86b9", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x401930eb5465af9c93f63defae98fa9ededf374a901f24f1210a150923d10f7", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 63, + "transaction_hash": "0x310a30391bd886a88914e488fd5991c05431fcf60027a64e60541ded7ee085", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x56ffd7a92298ef76ddbd31936c19c23d29edc2f34207f1b0b5b270aa511d8d5", + "0x1843d0466921d394ce28999ab4b20c7573aa2d6e48303c9e42fa9bc753910b9", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x56ffd7a92298ef76ddbd31936c19c23d29edc2f34207f1b0b5b270aa511d8d5", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "range_check_builtin": 268, + "ec_op_builtin": 3, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 64, + "transaction_hash": "0x4c13766734f3b71821a4c8805174008572b7d7c2d5885e88a4c7e0b9a1b200", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6075da58eeaeb2c380b51f5115dfcafbafc70ea16a200175ad50937d50cbc3d", + "0x2b8512868598e247c9a1413424980001d50bd00a5a263b484c3b53284f086f0", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6075da58eeaeb2c380b51f5115dfcafbafc70ea16a200175ad50937d50cbc3d", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 65, + "transaction_hash": "0x3537235a308efee36346feb8f3bd1bd754f6bcf3961069c796b995f6c087aa7", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4a724a4229813f34e274837684c652260f7621f76e9457942f05cb59fe4469d", + "0x7b1f9cb425a54d10107cf8ea80b7ad02901a30525f1d960d093d5450b3cbbf8", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4a724a4229813f34e274837684c652260f7621f76e9457942f05cb59fe4469d", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "range_check_builtin": 268, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 66, + "transaction_hash": "0x5121f255931b3faa334a629d7f4fd4faf1aa0454fbea144450a9a6cb3f7fe99", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x755a7995c1b920ef28e18c4978d73a1c935ce206722c4a8398a1735548abe2d", + "0x3d799d2ebf90ad00171bc66ff2faaa38157b08b5e34ae825b44aef6e3b0119e", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x755a7995c1b920ef28e18c4978d73a1c935ce206722c4a8398a1735548abe2d", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "range_check_builtin": 268, + "ec_op_builtin": 3, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 67, + "transaction_hash": "0x395c2a4f9df24ef4ea8743e643996aebaa1ffb9c9605d837adfcdfdc00eb0df", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1e6da06bc1d877fb69dd4110f38f0e5a206174c57305df51653141381aaaf43", + "0x679273e0e8dae325714657992fc3296ac0ddf637852c46888f6f0ff18f2bddb", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1e6da06bc1d877fb69dd4110f38f0e5a206174c57305df51653141381aaaf43", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "range_check_builtin": 268, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 68, + "transaction_hash": "0x2672313365f1686250e360ef40af7d8bd7bd96012f602553162af5b2b4ed74f", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0xe04c9e37787de848379c7898612cde59fbf95ec633deeea3e34e81f1d7df56", + "0x53b2277673108514c99d88fe4cc555fcc03a661af45d1a4b7388b6824b7253d", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0xe04c9e37787de848379c7898612cde59fbf95ec633deeea3e34e81f1d7df56", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 69, + "transaction_hash": "0x77c50c779bdb835ab85ae739c4924abac8b7419889592efccd46ad36df6b5b8", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x594a6c429ca64604465758db99ef286d5c00d847c8072fec3ff5f0e6b65cf64", + "0x72c65ce2d24e7c3fb48960296fd401ffde34589508ac9ffe1e1386552a2e005", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x594a6c429ca64604465758db99ef286d5c00d847c8072fec3ff5f0e6b65cf64", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "range_check_builtin": 268, + "ec_op_builtin": 3, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 70, + "transaction_hash": "0x491e39f5de84b88472a9b7bdaf9bfcd1d094b05f6358165c15e7cbe5db52f7d", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1050347b94b0cbce9abe2ceab62f47257071169a4ab22b4fb67f3a731e0b486", + "0x745fc497aa89c73e48b5bd2f54d20dd0eadb7381a3670168a99d43aea8c6bff", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1050347b94b0cbce9abe2ceab62f47257071169a4ab22b4fb67f3a731e0b486", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 71, + "transaction_hash": "0x591b1d14fd90869133097b265eb22e95d0415a7643f3c8235eb58191619d5d2", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x11f8473d749770009ec91b9e6f723403f9be76e2c93c62919d14989aa9f343d", + "0x675fca6eb609c22ba375db97fc717f5284b370be42743195c965bdc2046c666", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x11f8473d749770009ec91b9e6f723403f9be76e2c93c62919d14989aa9f343d", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 72, + "transaction_hash": "0x22b7235fdce25cf5495a6ca670254684561d45f536208ca9b6fbc275946c316", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3732d673d40f828b64bfc85236012ce2c280d3c936aacfb8104f7d4c8c74bb0", + "0x386777696ab90e403e83ab4bb5d1986c8a0c66b8c7ffe34e37fef0d2e4113fc", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3732d673d40f828b64bfc85236012ce2c280d3c936aacfb8104f7d4c8c74bb0", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "range_check_builtin": 268, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 73, + "transaction_hash": "0x448d7bedca0c5b233f8ab9de5c373b708b6ad3a53c5f81397c36f887fa7cf4c", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x691301df126b5190e5227b9fd62788723db7b5ea790c4e1da8f85aa6235d46d", + "0xfbbbca39f675f1d5e3e9e5616b83fde2a586881ab158d1dd35d83e4361ba3c", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x691301df126b5190e5227b9fd62788723db7b5ea790c4e1da8f85aa6235d46d", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "range_check_builtin": 268, + "ec_op_builtin": 3, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 74, + "transaction_hash": "0x7ad9b0ef75176a11dc46824b18df70ef14a4f32c2426e682043d92f22a1b061", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x143e4f7f4f62e00b9a027fc1d1e3e91fb655bb0c68d152a3bd81bee1ea38471", + "0x371a30b6c11017e1ad45a5182279dc6354c295c62fb2b62a64a88cf98172075", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x143e4f7f4f62e00b9a027fc1d1e3e91fb655bb0c68d152a3bd81bee1ea38471", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "range_check_builtin": 268, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 75, + "transaction_hash": "0x6f14a667249063ca52f3b4b5708fa021ce678edfd8b4a63dc955d5c017d044d", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x67e4d23e57541aa5d087eb95ec42bff6a9feadb0ca6dece4b60cb6e9b8c1970", + "0x5aaf885f007d12012021700e9ff303343c63d216f5b1e75725380adbbe78ab1", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x67e4d23e57541aa5d087eb95ec42bff6a9feadb0ca6dece4b60cb6e9b8c1970", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "range_check_builtin": 268, + "poseidon_builtin": 4, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 76, + "transaction_hash": "0x28ac04c7d21a8ae32bafd02384b20c1c13bab56b3d4aec7183934c897b158b7", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x19994bf4904edd8efa817a79fecb999e7c622f2643aea5d54647c0031d724c6", + "0x5510c25011742b06815be6d020576cee83b6f659d11c19a8c9c905400c6b2c0", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x19994bf4904edd8efa817a79fecb999e7c622f2643aea5d54647c0031d724c6", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "range_check_builtin": 268, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 77, + "transaction_hash": "0x5aaafbf7d18bad664c093f6204015da223e0a0bd2d2bce648b702ac54a02419", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x104745966fa5cd518bab10b5f1a741f4a3435d7d9b060b8a11778cb36fcb574", + "0x71b52f0a7589b5972d7c37baa0b2056f085f6f6817a287cbdcac978b7dad26c", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x104745966fa5cd518bab10b5f1a741f4a3435d7d9b060b8a11778cb36fcb574", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 78, + "transaction_hash": "0x561b16d059f7e4c3a04650e118b4d995d917ef4cbe1125d4783ce66c81a828f", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x75eacc62294b96b3a09da916ec3e77bc37fa6ab5176e5bbd28aaf588d74baa2", + "0xfd6ffd67c2e30772fa28728803ee853b16492ed1e5f72e91847115caf45bd3", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x75eacc62294b96b3a09da916ec3e77bc37fa6ab5176e5bbd28aaf588d74baa2", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "range_check_builtin": 268, + "ec_op_builtin": 3, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 79, + "transaction_hash": "0x370cb459e3b42e03867e6d9c957c5b61c9b34f3771a267c34102135441baec0", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3a70b8ddcec9d026ff4a3fb2024f7815fd47dcf62716107d34a6ae5ee861e0f", + "0x2011b0569bdc4c525bf03e7b55a9365de1cf194249966c88c24707f4d850406", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3a70b8ddcec9d026ff4a3fb2024f7815fd47dcf62716107d34a6ae5ee861e0f", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "range_check_builtin": 268, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 80, + "transaction_hash": "0x46df785050a9aea2cbcb90f6ce1cebf789ec5c3d9498656c38a06c29b5ee85b", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4540dc7107f1d6a135b575115091ee56ab13c5cb22a6188a2e7fccda0e009a", + "0x4434a91a0b85b4efaad7d9b70ee2ff598a071c9dee4a10b06b3697b671e005a", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4540dc7107f1d6a135b575115091ee56ab13c5cb22a6188a2e7fccda0e009a", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 81, + "transaction_hash": "0x59a7de5f6180b1a0bca493ede1fefa263b081efccf50bc2347b94b1877d9dcf", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x500eb16558214463a5c37ac189e1b12443e97a3bdf89ec0c0c4986376bfb00f", + "0x9d05e196b5d20018731b9172e9041f6098014243a3d18d4678f046a28898ea", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x500eb16558214463a5c37ac189e1b12443e97a3bdf89ec0c0c4986376bfb00f", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 82, + "transaction_hash": "0x2224c30ae25741fea63e9474b2f0f057fff88de73e4b248175a1e927b8848", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x72a90329f10cca92a43cb8014ea168049ee3e1b9013638afa026a4671863ca1", + "0x513c58ca8af13ecb6006f00151ecd119cc527dc13ff9e3c56b1c5dd05b84f13", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x72a90329f10cca92a43cb8014ea168049ee3e1b9013638afa026a4671863ca1", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "range_check_builtin": 268, + "poseidon_builtin": 4, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 83, + "transaction_hash": "0x23f51e1b32d65027a8319c74dfb6dd9c738364405e626783ed6ffb1fb3659fb", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1862d76a292338a2634814f9f2ecb90684c52e1c3f600388865df686cf4e54a", + "0x5dc35a6caa3c8b98a96bbe3a21bad65a803c445bfce698aed1e090881d1996a", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1862d76a292338a2634814f9f2ecb90684c52e1c3f600388865df686cf4e54a", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 84, + "transaction_hash": "0x2a4e4999fb73d8f3642c3ba7156049cf13cf61252cfe452ffbc8ca602090108", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x41157baa0cd2f7bc1029be65db77a81f97784d3f5aa16f77775d9edbb4cb615", + "0x323d32c8dadf08a0a06268910505e377d4775633e178c6b7d279b931ba0ee35", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x41157baa0cd2f7bc1029be65db77a81f97784d3f5aa16f77775d9edbb4cb615", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "range_check_builtin": 268, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 85, + "transaction_hash": "0x1b04a7e6d3428539d6898984bee2c018ac39a8f1d2863e8ce1ddd31a1abd353", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x7707b0c961121ae62f4ef63605121041f2754bb095e682a4544b021aee7e2b3", + "0x3fbcfa51836a171596f2c6bff0edb9e1f0825e9062aed979683b9ba73369117", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x7707b0c961121ae62f4ef63605121041f2754bb095e682a4544b021aee7e2b3", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 86, + "transaction_hash": "0x1524dddf3c3bd1767cac929b8a4058e48526719d7cb0ab1515ba2842a70c107", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x7b3796a71a75e9d55aad1d46057f6facb3040eaea69d255c6cca52c9124e94c", + "0x4683d52b5c5da50d154b9eee85be9b335acfb2edac7f0a46b0d15df18d9034e", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x7b3796a71a75e9d55aad1d46057f6facb3040eaea69d255c6cca52c9124e94c", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 87, + "transaction_hash": "0x28ed4b6a40b7d06a56267d52c73453a2072d27774b33e9b6557eca0dd680fd", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x14169d652eaae2abcfa6fda7c924f8da98566eb1f5f9f33fbf09629ae2b2327", + "0x550ebab892aaa6e219c862574b8457989b937ae35453d7508e9977635447920", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x14169d652eaae2abcfa6fda7c924f8da98566eb1f5f9f33fbf09629ae2b2327", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "range_check_builtin": 268, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 88, + "transaction_hash": "0x384c56e94c958e8861f371247a7eaf75909687116adcca565ba717a7e7f3b85", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x17fb33a9db88d0e4e3b382dad1733522ec8024647716f463066bedbb490978d", + "0x6d73c6075cb31839dc618587821690839376b005faf20e554c81cf22f638c16", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x17fb33a9db88d0e4e3b382dad1733522ec8024647716f463066bedbb490978d", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "range_check_builtin": 268, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 89, + "transaction_hash": "0x5b3183a07e55ce39930fd7552f0e083fcca6d15d5632b51974565eca9b85032", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0xa0e0c780524827e8f094bf8c199269f06f86309d30c65af0f7dac6968de3c3", + "0x3dec2ebe2f47ae0947ee9693ab01dcdb74a2ac279fc32a35c8b84b722199ccd", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0xa0e0c780524827e8f094bf8c199269f06f86309d30c65af0f7dac6968de3c3", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 90, + "transaction_hash": "0x3bb049cc0666a6ceb2be10a9dcd99ad9bb880f63e8bda0b91c99d94fa2a8fb7", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6f4bd4995a3282be1860aca91fe2a498942add440516467aca9da8a1bcf4a41", + "0x1e8bf0e6b000c281bb959a8f22d2f6967c363c699bbe6e924e13e480ada39a2", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6f4bd4995a3282be1860aca91fe2a498942add440516467aca9da8a1bcf4a41", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "range_check_builtin": 268, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 91, + "transaction_hash": "0x2bc854f3c7bb9cf902c79b21858c6cf64f2d963c108c7769a25bc312a45ae4f", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x524987ff394990a95fa0015a8eb66e61ff9f8626291dedd4f7d50a5f020f797", + "0x51fc3b4494e6dd9bcfc73c0540669a20632f42c4ff5e769294b05804e320770", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x524987ff394990a95fa0015a8eb66e61ff9f8626291dedd4f7d50a5f020f797", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "range_check_builtin": 268, + "poseidon_builtin": 4, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 92, + "transaction_hash": "0x23806ad7f5ff539aff9bc0fb9f4774c42acaddbd4239fcc90349c62a2230d2f", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x77845f6d3bebb7c5e30619c191333c3cae03565c2d367fe68bf73dfe1197bb9", + "0x5d3a3de6a7d1237648882bc55b7b7c01ddd528414d015aec205a1bd5631e768", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x77845f6d3bebb7c5e30619c191333c3cae03565c2d367fe68bf73dfe1197bb9", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 93, + "transaction_hash": "0x713489f9ee9e4774505a908308dccc31b5d710c12236fec91cb999ed230fb0c", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x5032f6bd44ec915ff81e2a450cf2dcd1e28534d804ea9cd38d186dc64c1ce80", + "0x29ee199399a32a98bface17c60ef40c159a7f2ff97157504a83e5474b51399c", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x5032f6bd44ec915ff81e2a450cf2dcd1e28534d804ea9cd38d186dc64c1ce80", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 94, + "transaction_hash": "0x26d796ef85fafcbc2020caf8f2f15a47ba57d687974f9100c4a3632c0a4d9bb", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x5f34cd49c033df5b7d3da352020e839e88ca2c28025e25f70a6a485d68fc0ea", + "0x129c9dbc05f4bd012b6c8863cd002192ebdd5bb3b6a5d5de450c4291fa27ddb", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x5f34cd49c033df5b7d3da352020e839e88ca2c28025e25f70a6a485d68fc0ea", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "range_check_builtin": 268, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 95, + "transaction_hash": "0x1d6bf7bd16cfad947146e6cc3abc9243d80bfda51a13d089c843420c9dbb63a", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3f9e6e9b92cb5febf0b6b79209a9080a53bc94642b01bfb5fe2b61289f18b2c", + "0x59d6e886bfda7f1764012f766f355478f4b8e3b9d257c9e6b690756f7ec1bc", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3f9e6e9b92cb5febf0b6b79209a9080a53bc94642b01bfb5fe2b61289f18b2c", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "range_check_builtin": 268, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 96, + "transaction_hash": "0x388163a57668c9d23bc3ce6cd727deb48551023c407b446cb970d2ba7d7c100", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x46388b18ad7cd2514d20b64c07904b351d313f9b185eb864e9cef8a129a9db0", + "0x4221d59d8749ab42e821d5e81292afc59e324f9d85a9ed23cca1d9be222b465", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x46388b18ad7cd2514d20b64c07904b351d313f9b185eb864e9cef8a129a9db0", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 97, + "transaction_hash": "0x1474614b42c0c2a7f735648cfe9e69c6ba27c13fbba7de971332c6107f87a3e", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x385f7376f9614f368023e004031b50167fcd10b85b9cd45ea52b56c7dc2431f", + "0x5f56be4577874ca03db43b658ce1293cb7ff3bed0b469a2b754990f1c162aab", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x385f7376f9614f368023e004031b50167fcd10b85b9cd45ea52b56c7dc2431f", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 98, + "transaction_hash": "0x22419dd35389da8db0763c8807385986fe6aabc0334b627cf3f71724e7c13e", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3591c61d75a1d75ee576d70a366138be4c288034605022086e8abd6cc6a282a", + "0x6495a9290f42e2e7134d42fcaad2c01d7770a1e03ac8b235530ddd6a1fa126d", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3591c61d75a1d75ee576d70a366138be4c288034605022086e8abd6cc6a282a", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "range_check_builtin": 268, + "ec_op_builtin": 3, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 99, + "transaction_hash": "0x1b44b717869617eb64b00d65507005ea9617107340c1e90db801eef4e684651", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6028344c83f128591c5a1905e734c37f6449505087573a54b99891e864ef8f7", + "0x2d60a254144a4a4dd7d7f7c9c657e3d5867207fc1600925e6e9fd6111354b9a", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6028344c83f128591c5a1905e734c37f6449505087573a54b99891e864ef8f7", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "range_check_builtin": 268, + "ec_op_builtin": 3, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 100, + "transaction_hash": "0x6b2b4c33d9a7b0a8f16d04fa27f3039576c11105cd0cd7b3d42e9008faf2a5d", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x34535ded79eb990827817ffa6c14988cd29970cd3cb4d5943684335f8360720", + "0x114f3f20c5050e8f45084e50db4835ab12a8c40a1d827b0ea6789cb1915542c", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x34535ded79eb990827817ffa6c14988cd29970cd3cb4d5943684335f8360720", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "range_check_builtin": 268, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 101, + "transaction_hash": "0x5999e0a6edffdcdd21f41ff9e7bdb7d2d573c474d07bc890654e9c7dfe7b694", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x5ea1cbe943d1a798d02899e2b74b7626b315d2b81febf7b8adf33d8e57dc91", + "0x735c98e557704fffcd219c694dc8b9efad6a56d0d5c1c7ccf9f2cc70e1846", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x5ea1cbe943d1a798d02899e2b74b7626b315d2b81febf7b8adf33d8e57dc91", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 102, + "transaction_hash": "0x21f1dcefe9a6cf9dabcae1a5e5e5da5d1415d5f7004a10729d4c13f859af8b0", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1a06329b78575c630b343cf559544f84241bc44f3c63bfb013678aa8145215d", + "0xd6fc49fcb2516cd6a882f3aab1c0e239d3619bf91f817373e3ecd462ff862f", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1a06329b78575c630b343cf559544f84241bc44f3c63bfb013678aa8145215d", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "range_check_builtin": 268, + "poseidon_builtin": 4, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 103, + "transaction_hash": "0x62ae74ef5c8daab02aff07a12a7c7a8a9479eb7eab545449f78ef0e33b89547", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x12b01545b7bbd20fcdffb03575a25cad0b30698ad7ad4781be1221f554f4741", + "0x6b0d9e9e62d6bcadf1eb70e5a3e69f8748763ec128d65fffa4bad2fca590857", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x12b01545b7bbd20fcdffb03575a25cad0b30698ad7ad4781be1221f554f4741", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 104, + "transaction_hash": "0x5b3cdd91022ca02e6c0cc0f1cd1470e1299f6015725d514fb700450548869cd", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x12e4dfa71ee52225ff301eb69e2fc08fbc001b0821578be07648a7ea493021f", + "0x3c74d8d103a37010c3628756b056e1795098b1248692e890d4b973c5c572193", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x12e4dfa71ee52225ff301eb69e2fc08fbc001b0821578be07648a7ea493021f", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 105, + "transaction_hash": "0x1a2ef6245f64b5d87d3227ec399c0ada923753931b2f2c6003eb6b060848383", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3dda73cf3d5558a6e785f54cc6e7207b0173f0cc3cce20f64992566ee734d7a", + "0x73827b38945fcb8a1852327a0db3c1341f498e66ddf45e917b43263beb65ea5", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3dda73cf3d5558a6e785f54cc6e7207b0173f0cc3cce20f64992566ee734d7a", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "range_check_builtin": 268, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 106, + "transaction_hash": "0x178861bfced753d5c29ff84b42c34098a4a617aa9ebe3d8515ab0e456f153bf", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6ae831431e8fa2128b079844633e084604422d63b7f1ad1a79fb81e37447463", + "0x259d0346def6321e772dcc7960478b28b60686f87fdf357b158d338c32d0d9", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6ae831431e8fa2128b079844633e084604422d63b7f1ad1a79fb81e37447463", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 107, + "transaction_hash": "0x143f059f6772efeaa0eee19434ae43600d48b94112cf2125e075853d794b4ad", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4bad3730634830da8c2cea36bc8c0103c47a074f259edd5aba3852e1245a9bc", + "0x5b45d83ead5c4b5061ffeb3b3169ef51c2c9635cfa471633b91e3577e6ddab", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4bad3730634830da8c2cea36bc8c0103c47a074f259edd5aba3852e1245a9bc", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 108, + "transaction_hash": "0x4379a6a0466e0102b5db78269b03bbcd84df24a35212995944d19ff921f80a0", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x7e83c177ff630265eda312465978a679b25f8eb253c000a925fa5f42bb233fe", + "0x3e5259b886cba48b86d25215a305f4fd0f3892cfd3e4480287748c691571d30", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x7e83c177ff630265eda312465978a679b25f8eb253c000a925fa5f42bb233fe", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 109, + "transaction_hash": "0xeeb3e52134cfa9b421260478bc2af4b896c2c7deeffc7c20ae9462ddef86f2", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1835c7d07311634fe0abc0e12897de6de8420f56fc0e9e1cf0550a71c31f7da", + "0xfa6ef9fbacebf91627a6d6e9298caae7354b63378b7c59f36de9cefd32c708", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1835c7d07311634fe0abc0e12897de6de8420f56fc0e9e1cf0550a71c31f7da", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 110, + "transaction_hash": "0x1508bea8d25546169759b20e5e576daf060ddfde0ba4699cfad13bf46ae47d6", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1d00cc561c943b49f5f2bac27591530a55970c3d0716317ad42b78cd6fb469f", + "0x7522d5283ed7b9aced7261bfb91f73fb0bcc5afc05e0ad3e25e0efae03f4bc", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1d00cc561c943b49f5f2bac27591530a55970c3d0716317ad42b78cd6fb469f", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 111, + "transaction_hash": "0x3cc7a2bc717ddb4c64358ddd4b0338ef71338a29e486b4df466bd1acaa6d87a", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x5826e2098829177a40c6b697dedb6b2c24d0378abb5a0dd870a19aef97cb78c", + "0x150387eafe5fb0a8725f2fa1b3d450c886b3f93698fb2ea579f55c829b37621", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x5826e2098829177a40c6b697dedb6b2c24d0378abb5a0dd870a19aef97cb78c", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 112, + "transaction_hash": "0x4f22683162858d005fcad495620d4194b634c2ee9be1f11f9e91348ebfb7d8d", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x309e46e00ee3cfb4d1bd1f42267126cfc9b7c501f439a9c60093330c7e0cfa9", + "0x1cb41f8efb81bfde450ffece8927952542bffcc4956c917dcd099a5c2f334f7", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x309e46e00ee3cfb4d1bd1f42267126cfc9b7c501f439a9c60093330c7e0cfa9", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 113, + "transaction_hash": "0x103381a88f800582d200e7cb4239c558992f8e2107eac50570f48b29784ae4d", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x78a19562b686d6cca5841bb192c83795cd8a1d9ffde0c0b4a53cb004575818b", + "0x838b9210d52ff4e227d6519041237881b96e3779057801451ee13266ef0a10", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x78a19562b686d6cca5841bb192c83795cd8a1d9ffde0c0b4a53cb004575818b", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "range_check_builtin": 268, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 114, + "transaction_hash": "0x2e0d84b614c67b7d788a546f04e9314735d19e8af7648bd980f4cc4d5ecf1f", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x247d1a8c411f2a456bc8a538fcf23efbd493c71b73f7421a8a4657147a59609", + "0x3ef4f36ea03fa22b3ace1944e9c30d2d3db1ba1b829803ccdbc8fb10f91876a", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x247d1a8c411f2a456bc8a538fcf23efbd493c71b73f7421a8a4657147a59609", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "range_check_builtin": 268, + "ec_op_builtin": 3, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 115, + "transaction_hash": "0x4cc74e3a3b93e8869d01b42c7b0ba4377163705e2927d390bc8825902a0cee6", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1d751f8d431c913531632cdaee1f2598821304cdb401170a91c76f0d5919a9e", + "0x44dce543187f9da87ac682c03fe29e16b8ca948c724d6bd270aca20346cf91c", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1d751f8d431c913531632cdaee1f2598821304cdb401170a91c76f0d5919a9e", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "range_check_builtin": 268, + "poseidon_builtin": 4, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 116, + "transaction_hash": "0x631a91925e1e7a9a0985738ae29f3afd3b0816171df5ad247f7559ddcdc4f8", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x58643681bd6dbef6bcf4828660ddeec18f3d669b12ec626f14092306fe80e99", + "0x239b57eb82dbca89f0a16cda7a9d9a825804f7b8316bf130bcffc2af7525f42", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x58643681bd6dbef6bcf4828660ddeec18f3d669b12ec626f14092306fe80e99", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "range_check_builtin": 268, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 117, + "transaction_hash": "0x37f798b39deb534b7a9888d76afeebe76685035e628c696a0bf96e27b8ed72f", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x49872eb6a8d0b7336f6577bbefdd1667fc0ed6f6df6509a6b52d62048a38fc6", + "0x358369a82c0c27912027bd581fefa76774fd3085af46dfc66c40fb8c1ee773d", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x49872eb6a8d0b7336f6577bbefdd1667fc0ed6f6df6509a6b52d62048a38fc6", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 118, + "transaction_hash": "0x4ab4bb1f5fc4df7264f57a0ebe46ac3ac66e1b1524bbe6b401dbc27484be99", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x40a560ccc59fff23ec01af1087d97bab10001e48e0fb493bec9c4c7e6831cbd", + "0x45c790388f6d017a4821c1f51a92e9e3146fc2d421346457728abc6b545668d", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x40a560ccc59fff23ec01af1087d97bab10001e48e0fb493bec9c4c7e6831cbd", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 119, + "transaction_hash": "0x5b277f8d91aeb7da62ae9545abdb44c154ceb0a09659a84f5ae2e3a0acd7ca", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3c875403ce3066337b984c541ecb4f47557e421e859816e65bc85a402abeda9", + "0x15cd63dfe84340f7816ffafd37fd253d97598749fe60dd6fd002b2f2cfe8cfe", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3c875403ce3066337b984c541ecb4f47557e421e859816e65bc85a402abeda9", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 120, + "transaction_hash": "0x2132548ebbde369d32a37a82f8fc2d74278f0b73b166818bbf03927d4dabf14", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6bf239cfd8ddfb4edacc070a23929b9b2522585548656ed1de1033d1765b25c", + "0x47899478e2418f2e085ff45c6880a2a9549ff19bb2d7ea5ee46388b2f439562", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6bf239cfd8ddfb4edacc070a23929b9b2522585548656ed1de1033d1765b25c", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "range_check_builtin": 268, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 121, + "transaction_hash": "0x2ee469b6fcca6cbcec46c7c11c2a701a1f0926be880b71471d07d3d6aa430fe", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x20f2f2964d6cb9859f1d264e759fe089eec481f131defb7137878c36478bc9", + "0x4c3479ccb311fdaf337dadd954d9ce03548472bf8b4bc32c6475043a99dea58", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x20f2f2964d6cb9859f1d264e759fe089eec481f131defb7137878c36478bc9", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 122, + "transaction_hash": "0x496b37055585ed59bd991a954f7f3c950a6c4a0117d45e8831fcd544d9b278a", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x5c4f4e4ae30a422a1b735b38c52bdf5739ad64b2f95492ab6ccd93b4f6be2df", + "0x7a4f52d39ab901cbf7d2ead756cb3a8516110eeb8f4f958ec01f72674df76ab", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x5c4f4e4ae30a422a1b735b38c52bdf5739ad64b2f95492ab6ccd93b4f6be2df", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "range_check_builtin": 268, + "ec_op_builtin": 3, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 123, + "transaction_hash": "0x1a19f0db9a0d4fa69a0df59a0982b64dd9c53c0034d8b4f16d6912e564d87de", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x33128bd86065b89665dccf20b8224238a3f169cc2aa63ea3de1d4e1b4431db0", + "0x3baf4487184344596cb078af8730466937df2d938ff56688442c9a146e682da", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x33128bd86065b89665dccf20b8224238a3f169cc2aa63ea3de1d4e1b4431db0", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "range_check_builtin": 268, + "poseidon_builtin": 4, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 124, + "transaction_hash": "0x3aba052a7ac31196b103efea508299044c4987be17ed9db4a142ad205a3be2b", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1c23816c01bfbd90fd57873025b4d5b86ee2cccfbad90d3a7fa25dc569638cf", + "0x11e5e35e8075473dfab70566e0f9e071c7d1f5debcc8fc79c0bd374ea610681", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1c23816c01bfbd90fd57873025b4d5b86ee2cccfbad90d3a7fa25dc569638cf", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 125, + "transaction_hash": "0x1cdbbd431edd81c19c08d52b2ca047b39bb9773a8c9332ad91e3508ae8ebb7d", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x40de1d323a5870a9b1011b1476bfd58f92a35ba59b1f9f3c69cb083fcba122a", + "0x786a7b8e6c19a882ee918202201abffbd1369d30ed694406da52c3e615b0d32", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x40de1d323a5870a9b1011b1476bfd58f92a35ba59b1f9f3c69cb083fcba122a", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 126, + "transaction_hash": "0x7c0661b8022ccd16b2ea405f20b4fb72e2d458e7807952c462e266fb0d79325", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x51d568676ce46d5f9a0d7c23c7c72cdb8536f38d74b3138f3cb9acae98b074d", + "0x5bca2c958cea7ac17e1d4dae90155d11a911a917f91a486ed5013c9dad2088f", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x51d568676ce46d5f9a0d7c23c7c72cdb8536f38d74b3138f3cb9acae98b074d", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "range_check_builtin": 268, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 127, + "transaction_hash": "0x3cdf111085aa25cf5bb06aaa4506bd17aea4648d790264a88b205fe7d4f2bad", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x2ec71fc858681fa0cca225185a86060926a9bfd338d749f256910d415770d1d", + "0x2bd2704ade8daf80d330f575446499b44783a6cc21e3ff95de2aad82648e491", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x2ec71fc858681fa0cca225185a86060926a9bfd338d749f256910d415770d1d", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 128, + "transaction_hash": "0x5d426134165dfbc7943021571e8b9f1014c1cc368c2ca2456b9c0f26fd547a3", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x5726d58c2c6bc370074cb67581d03cab05e1304365ca0ee9f4ebf3faade40c4", + "0x397bb315d341edb330605784790faf476d4162ca5ce07d269ef8f39aa5f8401", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x5726d58c2c6bc370074cb67581d03cab05e1304365ca0ee9f4ebf3faade40c4", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "range_check_builtin": 268, + "poseidon_builtin": 4, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 129, + "transaction_hash": "0x5280f3167d771ca99febce9e6dd60705a0db2f5ad65f8aa839add5ce23221f", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x73f94dad20c07abaa57a278d02d169b48882bce673c421251686075a986db83", + "0x20be5a51198a030c08ef3886a5b47661a773b186f4407f3f2d3c2252828e80b", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x73f94dad20c07abaa57a278d02d169b48882bce673c421251686075a986db83", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "range_check_builtin": 268, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 130, + "transaction_hash": "0x173ae09604a69ccf8c0b4699f38a3e20cd03f3eec2c817ca537d17a9084b266", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x350e280198d66aaecfeeb902b02089e026bc792f5ddfb88b04ebc92218f8fcb", + "0xff9247899738818e2b47acde31012975dfa023f5c860a19110dcd8d17af54f", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x350e280198d66aaecfeeb902b02089e026bc792f5ddfb88b04ebc92218f8fcb", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 131, + "transaction_hash": "0x5b718ec976fbe5a287430bac79254dff399b4d06cf7b40952d02dd37107575", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x273d24a6e32e7dc5531d7e1d17df2b2f91b7c50da2c9142a78c02de878cdd5f", + "0x31293244a17ef815b86baaf64c80c6885f900c74c51fcf57512d7d0a16beeb6", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x273d24a6e32e7dc5531d7e1d17df2b2f91b7c50da2c9142a78c02de878cdd5f", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "range_check_builtin": 268, + "poseidon_builtin": 4, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 132, + "transaction_hash": "0x25014de16daf7e0b7616c884fc0f7f347bd4fbc0581ceb8f8fafb62201cf08b", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x87b5c2536abec4170cd59c7ad72798d6dd22bf2a77cb5d36cb68876d59d258", + "0x177bb3f2d216e4b5fbd795644ed4f764e4d44e88c6baec669dd7c961a0d5459", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x87b5c2536abec4170cd59c7ad72798d6dd22bf2a77cb5d36cb68876d59d258", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 133, + "transaction_hash": "0x7173b79f089b5c3a04387f24fc50e335cbf17519153cb96b1d76ddb2b963b62", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1050347b94b0cbce9abe2ceab62f47257071169a4ab22b4fb67f3a731e0b486", + "0x78c79109fb270aedd672f34ee762cbb13182eac88902e83dba9ff8067ccaff5", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1050347b94b0cbce9abe2ceab62f47257071169a4ab22b4fb67f3a731e0b486", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "range_check_builtin": 268, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 134, + "transaction_hash": "0x4c2af11345d1c14e61e42cd6f9aaf30e3198742ca02fe80ff8779b6f4c3529a", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x401930eb5465af9c93f63defae98fa9ededf374a901f24f1210a150923d10f7", + "0x553865b8c00b13964c2ca979ab644e5a78698d1a432dd79a139212edc2a3bb1", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x401930eb5465af9c93f63defae98fa9ededf374a901f24f1210a150923d10f7", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 135, + "transaction_hash": "0x73cb474823be71fa131985a878728582720db457b0b93a88510bd5117473314", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0xd9def9409244513635be50767308e1c80a10bb5d116efdf78b9de36620bcbb", + "0x23a84f6c04e12e95156f3a95bba5fb937962497684343aa8b383e0eb9544b4b", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0xd9def9409244513635be50767308e1c80a10bb5d116efdf78b9de36620bcbb", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "range_check_builtin": 268, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 136, + "transaction_hash": "0x3e449ca641cd0bd1ff73c932f69202871c2ad2543b8bc11cdad527b74f8d0cf", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x11f8473d749770009ec91b9e6f723403f9be76e2c93c62919d14989aa9f343d", + "0x5b356f0bdc58baca5e3b09d7924a9c149c04018ac44c4b9ac8ea8e909f273e2", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x11f8473d749770009ec91b9e6f723403f9be76e2c93c62919d14989aa9f343d", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 137, + "transaction_hash": "0x6502bcfbdc0ff581dd427b3352cd5612647f4423496dea5a86d5bc58c549f40", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x755a7995c1b920ef28e18c4978d73a1c935ce206722c4a8398a1735548abe2d", + "0x448352a22b7d13d447579abd96b903bd4775e3706adb4c849b27ad8c35920b3", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x755a7995c1b920ef28e18c4978d73a1c935ce206722c4a8398a1735548abe2d", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "range_check_builtin": 268, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 138, + "transaction_hash": "0x12201b7537453148e286b8db7ae963c8caa2c97546dde9e4b3bfdd68479bdb8", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x594a6c429ca64604465758db99ef286d5c00d847c8072fec3ff5f0e6b65cf64", + "0x4ff825824c14191fb3ab092af3398dc43fac2f39b6bedc38e9a59eb1830353b", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x594a6c429ca64604465758db99ef286d5c00d847c8072fec3ff5f0e6b65cf64", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "range_check_builtin": 268, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 139, + "transaction_hash": "0x71b3cb789db36c1eb5c123ffa8022b7636e0ff532a66817ba4aa40becb87600", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x9529b7734deb881652cb0903f26875b01134cb0b091822f85edc697164e7d1", + "0x98a0c24e9409c975c4d00b538786fcef3e6917c87c2bc4f6fa6f0030d2c0ed", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x9529b7734deb881652cb0903f26875b01134cb0b091822f85edc697164e7d1", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "range_check_builtin": 268, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 140, + "transaction_hash": "0x53beaccdfa5cb43c14a8906db9bd6617ab60afea57dba13c655d5c98df3a4ce", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1e6da06bc1d877fb69dd4110f38f0e5a206174c57305df51653141381aaaf43", + "0xe5fb2d5857d353e096b22ef0f8e9f99ff95b806e02a100de157a10b9f0dbe0", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1e6da06bc1d877fb69dd4110f38f0e5a206174c57305df51653141381aaaf43", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 141, + "transaction_hash": "0x67102dba80499dbb2d003d8a9788624e66850545e06f8161e0c1ee67865e8fd", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0xe04c9e37787de848379c7898612cde59fbf95ec633deeea3e34e81f1d7df56", + "0x4dc90cb95f997f48e57659a8b967e8e274efc50efaa44e151d3f06d5c09888d", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0xe04c9e37787de848379c7898612cde59fbf95ec633deeea3e34e81f1d7df56", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 142, + "transaction_hash": "0x839e5b87c654d05241a6b948abfc731d9769330040b8c51152b0333bfa7a62", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4a724a4229813f34e274837684c652260f7621f76e9457942f05cb59fe4469d", + "0x2b23e674ac1780db2739b1120bfa338a1f5f70a1e2f504c420e3b36e67d2e7e", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4a724a4229813f34e274837684c652260f7621f76e9457942f05cb59fe4469d", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 143, + "transaction_hash": "0x6044face7ce6c8aa9f8a9dff0ad8404e0b7e94b51b2f0ab18f4839ba48ae63b", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3732d673d40f828b64bfc85236012ce2c280d3c936aacfb8104f7d4c8c74bb0", + "0x5084d51029195f1ad25cdc2f9dc1ca7a6b852a0403d64cedcbea6823ad60406", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3732d673d40f828b64bfc85236012ce2c280d3c936aacfb8104f7d4c8c74bb0", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "range_check_builtin": 268, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 144, + "transaction_hash": "0x2b4211bb8fe9826cd759f600ace0d683928c5d01828673cb636c5960fccd33c", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x10bd0687cdf260d35210af52a93a9712d51a403868a103e91e491eaf17973cd", + "0x7f4b923ceb59db39ea45e8bc509ee21a794f6bf519195843196383a7f41c733", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x10bd0687cdf260d35210af52a93a9712d51a403868a103e91e491eaf17973cd", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 145, + "transaction_hash": "0x76df89475d06c33ecdf3388123641a370c1966530b3368fcba532f5c0968065", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6c55ba1f4efe13d3eb06441582c3aef616542be06363571d970ecbceb893de2", + "0xe84b189ad866d825e7acba6c35b1896bbe63af2c978c252b560095dd624475", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6c55ba1f4efe13d3eb06441582c3aef616542be06363571d970ecbceb893de2", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 146, + "transaction_hash": "0x3602546a1a075eeee06156aaf95e563c67fa62f9a49aac2462192b76a714bcf", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6075da58eeaeb2c380b51f5115dfcafbafc70ea16a200175ad50937d50cbc3d", + "0x2469bb3a01d85d5c494b4ec4b395892aa1471d39f9b8ee02e867c22d9fbc9e0", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6075da58eeaeb2c380b51f5115dfcafbafc70ea16a200175ad50937d50cbc3d", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 147, + "transaction_hash": "0x3dd182a9cfeab84580ea77bc8302af732566c692d5f2bf3a744e0831834985", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x79b0d5fe892237bcdc0979892a9b2790f23781d41aaa8adf351c7980c8b65", + "0x4d28aeb4a73825e8e220be72fdc88a1c7f3e3a07f7b11b5266e4ce09c5d4e45", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x79b0d5fe892237bcdc0979892a9b2790f23781d41aaa8adf351c7980c8b65", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 148, + "transaction_hash": "0x3e06fbeb0a6fb7993e15ded8434b8c93c040ef49a47ab53c027d4bd61f6ebb6", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6be5a0624172c2f0a3d116d03a861375e023f340caaa6363854c9ae4a460f5", + "0xb83de952bc6d08a2717450a62dc63d8b7388be348c34d35e02a4e721fffebe", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6be5a0624172c2f0a3d116d03a861375e023f340caaa6363854c9ae4a460f5", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 149, + "transaction_hash": "0x57b506804275c73627fc751672a4f05f6cd1dc4aa7d63b80d7ad0e693fa421f", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6a4213ccb648d4cc272690144073efdb184bc5c0253f798973666761b231827", + "0x15bdbe09c4994bcbf777fa5e7a96f75ca7f48ae9adc8bb4729b9eebb8421dd4", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6a4213ccb648d4cc272690144073efdb184bc5c0253f798973666761b231827", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 150, + "transaction_hash": "0x7404ba50c6ab74de5a464496aebb760bfe9d057f67b0f10ffd238266a1929c5", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x2f50b3c524482dfd39d8236ea2c114df8d8fd907711584de81eddbeca7b7921", + "0x1ce326645bad9e0e6a403e59fd425b44228ebd91fbd4bc859ef3931db28350e", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x2f50b3c524482dfd39d8236ea2c114df8d8fd907711584de81eddbeca7b7921", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "range_check_builtin": 268, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 151, + "transaction_hash": "0x6336498d27b2d2c2498092d18e81fe90a6f910265fd73032691404ba01c97c2", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6d7caa4818f9d3d4fcc09f69e5c776ad60978fa701d99a6c5a0c70b7b25e1d5", + "0x52a42025cf1191517e1d6320decbcbd29a0e9b4d6d541642d236c94a1129b28", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x6d7caa4818f9d3d4fcc09f69e5c776ad60978fa701d99a6c5a0c70b7b25e1d5", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 152, + "transaction_hash": "0x25a369e7d198733982640d84abb9231e0370233df715cb883e0ca96fbf3c8b", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x46e53968a2b5fe68b9b0d6ba6d8a475211b845759822e9161e3cea1afbb1c5f", + "0x243276cffa081d5820d2cd5957559e7c9079b04ac9ccdf89a98ae76cd9e336", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x46e53968a2b5fe68b9b0d6ba6d8a475211b845759822e9161e3cea1afbb1c5f", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "range_check_builtin": 268, + "poseidon_builtin": 4, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 153, + "transaction_hash": "0x7d975576bd417092e8a4240a9dd394936c0403ed924492543257a71161efe", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x47666c862e5e3db0e5a43aafd2d1ba5b1e8eb498ea5b42ebc6cd01ee3a16609", + "0x53ce509fa10a89f8e84c1a757c6ebb9f619c88fcf6cf4cf7f3a0dffdc98fc38", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x47666c862e5e3db0e5a43aafd2d1ba5b1e8eb498ea5b42ebc6cd01ee3a16609", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 154, + "transaction_hash": "0x4bce71a291a23339f70b0364cc38ad842f590f915cfee77388a781d2b7463e0", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x2b24cb0ac3991cb6362f305bb241e0e874784d44e89d08859536270a29a3799", + "0x33c72c1fc6bdde04aa50b65cfd0942f84e09105f402e4007212e62076abf042", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x2b24cb0ac3991cb6362f305bb241e0e874784d44e89d08859536270a29a3799", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 155, + "transaction_hash": "0x247e7f82d7c0dc9c7d932adf83b1043c6065d704af574587481c2423733d3ad", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x43438d30a486df0100bfb40f7dddbdcf9b9c21f2079ae785a22b2816d09d842", + "0x77649160825a0fa1efcc286ccad2f293f8188372b5c1417e6cab143f15ce0a2", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x43438d30a486df0100bfb40f7dddbdcf9b9c21f2079ae785a22b2816d09d842", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 156, + "transaction_hash": "0x1c08dce6167fb92654cdd8859b7a497ba1bb8822bc9c65b0d06af4e2e6236e1", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x708610e23e4fff8c6434eefadcc284215b0ca10c5b2530d784a547ab7ba6c1e", + "0x66ffeea403d80b5ce56f240cc1dc71f29de7ddcc678ffb2243b83781fe203c0", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x708610e23e4fff8c6434eefadcc284215b0ca10c5b2530d784a547ab7ba6c1e", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "range_check_builtin": 268, + "poseidon_builtin": 4, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 157, + "transaction_hash": "0x384448c90680c595d337a129ea224d736e633086d0658f834487de73e081146", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x73ea2bf4f84c4ef4f95f6a5a03af3317277deb63039330d881ea20e33d0738c", + "0x651234373645c402aa2545fa765084ad73e170f52563a3412e7e629a6aa955", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x73ea2bf4f84c4ef4f95f6a5a03af3317277deb63039330d881ea20e33d0738c", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 158, + "transaction_hash": "0x39a051c998a67dba681a4d4b62ce5566b01c50d591c8d8fbde29e7cb9cade5d", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4c7fbf3010747ded03b3cbd0a8bfb888cdeb9080a06f5d0d1e32e36473ac5ac", + "0x3e1e01b344a4bfa097e226570fbc97e94a202e1bff7621f5ffd2b614ce97d13", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4c7fbf3010747ded03b3cbd0a8bfb888cdeb9080a06f5d0d1e32e36473ac5ac", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "range_check_builtin": 268, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 159, + "transaction_hash": "0x125beb29b36da82b913ca9c974555a5cbbd504257b65be41118fa2f9b1ebbcc", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x688e05ac8427736a7bc419f86ad7a90ea6157d2d82ed30f09149b18c97a2391", + "0x44d6b751b21d24bb3b3e4acc9940f62f41450f3bd30339394931aba3d00c6e9", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x688e05ac8427736a7bc419f86ad7a90ea6157d2d82ed30f09149b18c97a2391", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 160, + "transaction_hash": "0x4d066bd10fef687175b64486069240b99e9efc085d29f66b8430e8d352d9151", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x57dfd6da6e2abc9b831a908fe8d4ef45fe2830c3ea287ec2341c4bd88046574", + "0x2b8806c5526bf682c03a69f6cfa4a9c95414e5e315fb1f91fa3440a5d78264e", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x57dfd6da6e2abc9b831a908fe8d4ef45fe2830c3ea287ec2341c4bd88046574", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 161, + "transaction_hash": "0xe6dd45f7f047eb5b9a0b48d75e53328166b15a65966a192583fb9597907f04", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x66a981c57e4253cf8d24eaaed89f7719c9a697be3b41a0371b24c8fc00a1cad", + "0x3d1b043f11316ab21133bd66d438d2bc801304d810be7f0a7f9bf7635fd7d12", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x66a981c57e4253cf8d24eaaed89f7719c9a697be3b41a0371b24c8fc00a1cad", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 162, + "transaction_hash": "0x310ce6a7234f51d7a7b3e5c43d230ce21389730a9d5287ba357e31279cd1303", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x36b39a015dc8b78a90ebc74d8f98a7b5a6cdc718118014291966650d6df65", + "0x425b622d8284bddba9a4ab7266daacda17a1877430ed52a3f69892853648d4", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x36b39a015dc8b78a90ebc74d8f98a7b5a6cdc718118014291966650d6df65", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "range_check_builtin": 268, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 163, + "transaction_hash": "0x1b7d100fc1a90371e9e64e943d5369eb7bd12b54aa034a983fa81213a2bbea7", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3fd8c55203651e0b3c6cac235b8b489b0a302731691e1c4b860b7dc41a6d6be", + "0xe4072b51b39c9eed5d3f6a4df783d4824e7655b471e878e1a03fad678bccf2", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3fd8c55203651e0b3c6cac235b8b489b0a302731691e1c4b860b7dc41a6d6be", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 164, + "transaction_hash": "0x23591380c2f899686689d0ea209b3586aa27f7f644ac06d3efb376b9379a8fb", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x22ccb773bb8c536d70c99ad4be229b6425be5e8014a1330c72495760d2f4b60", + "0x3a120f0603f880eb3ebcf2f51ad8b510ff45c52e2b19397487eb59f7d215384", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x22ccb773bb8c536d70c99ad4be229b6425be5e8014a1330c72495760d2f4b60", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 165, + "transaction_hash": "0x6aa9bf81f896ab255495901ede9c7de8423457c79b9852ad000d92b7a054be1", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x33128bd86065b89665dccf20b8224238a3f169cc2aa63ea3de1d4e1b4431db0", + "0x2b8d25ad36db79ee9f1ef1900aa3831745dae07e1d5ee7a161a2b1cddf0dcdb", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x33128bd86065b89665dccf20b8224238a3f169cc2aa63ea3de1d4e1b4431db0", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 166, + "transaction_hash": "0x3d8144276a490ca957d3b050f193c30f8d2e98c49e09946af09877b2d14f6a1", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1624d229b7b2733f0e4f72f205ab058c0b247045ff371aa5a7aa95a7a037906", + "0x44edc98aa09d3c48b4da189467ea3e582fe32859d0df8ca47b768156b85a260", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x1624d229b7b2733f0e4f72f205ab058c0b247045ff371aa5a7aa95a7a037906", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 167, + "transaction_hash": "0x3ea0ff3cd693c15c2a125fb6c8b233954db1abefbc1d5236acbafcce2b9603b", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4dde2846e7cce0c39e57113809340c87421454d8d7c48167a7a2db9d0ef7067", + "0x6399dcfb7c3ac836f32632f0395b1c7ff6c72ea353ec122b86f0a49e045a96f", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4dde2846e7cce0c39e57113809340c87421454d8d7c48167a7a2db9d0ef7067", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "range_check_builtin": 268, + "ec_op_builtin": 3, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 168, + "transaction_hash": "0xb1de3fa66983a9dcfc33e4c44eb691a4e4746c7f4709d97fdda0df5dbe31f7", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x384152c373546b914f69e6c011747c08c519c3f43a4dc4b4b51849ca0e99ded", + "0x6e7616c3ad7f00e59f65e276653601a535125a577127235122ddd92d9a2792d", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x384152c373546b914f69e6c011747c08c519c3f43a4dc4b4b51849ca0e99ded", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "range_check_builtin": 268, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 169, + "transaction_hash": "0x7a14ae239b5ef52cac2e795354a2507fbc721a441b1b0c27899747aa5b0d56a", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x115f012bd02db4cad77f3fb19bea28087d03a4d03f965781711cd9a9379d100", + "0x613caab7214bad95f132347d5afe5bbb421fdb6b127b1f525fd64651f88415", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x115f012bd02db4cad77f3fb19bea28087d03a4d03f965781711cd9a9379d100", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 170, + "transaction_hash": "0x4ffb0b6085a2ef31164f2268de6d215636a5a7d8fbcce5a8ec52d2da0018b74", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4102dafaf51f5e6c854259a48f6ccde4fac083d2dec07e784c5c38e7c6e9a8d", + "0x1df4af2d02656e93c276ddf4cf618d79e21a04e271b73e0358eaeecd2798e9", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4102dafaf51f5e6c854259a48f6ccde4fac083d2dec07e784c5c38e7c6e9a8d", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "range_check_builtin": 268, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 171, + "transaction_hash": "0x7f72aa25d42ae1dee8aba34b61f43b1641dcb42b02112084bd59e385bda1bbb", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x7d3644f1c8cc3d0fde11a7c69ccdd59e392199be927e2e283d21b5445357ab1", + "0x6c39bfb03ce74f827587993c35fee75b194aca03d6933e55b39506810b924bc", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x7d3644f1c8cc3d0fde11a7c69ccdd59e392199be927e2e283d21b5445357ab1", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 172, + "transaction_hash": "0x130d45032978cd3896f347f0607471a7a700ad0726007fdb8457eaf37ff0eca", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x176c25d47570070342b173716432127caf510d2b00189a3d8c9c0266297ec30", + "0x45b3e73736ffa7d2b57dccd9b2a08bb53f5db9c4a87e1495b6550a13f5be47c", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x176c25d47570070342b173716432127caf510d2b00189a3d8c9c0266297ec30", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 173, + "transaction_hash": "0x70c571657e610e7a8fd0f9974ed9a6b086ff05d00129b0025698d5dee3ff3f3", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x15bab3e51c95b9d58b038c49fcbd26d6e163cafd66d2f2cccfce75cee26b762", + "0x14e8744f0fb2432cf027fa55a36bf65488f59ef104988c702cc91adc51509f1", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x15bab3e51c95b9d58b038c49fcbd26d6e163cafd66d2f2cccfce75cee26b762", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 174, + "transaction_hash": "0x35928dbd8c4e8bde8f375b19550eec284538b00c09e97d3b85a45893eb965e0", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x481d6bc11e059a6f76ef7f3967cf22b9a0ad02236c59bfd641076cbf371628", + "0x1ff782ab0e8c2ce9758509f291895642a960db30e4e375aa7ac72bc3c939038", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x481d6bc11e059a6f76ef7f3967cf22b9a0ad02236c59bfd641076cbf371628", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 175, + "transaction_hash": "0x6e4548e3c81b0f6226307a787dd1a8a95290721f0b92faaa54eed362c30dfa7", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x541b4a8bb25092e7a52dbe8f07810e5c9efcb2774d52b567845fe8d3dc3c92a", + "0x15a7bc9dfe4fae868070df836f78e7a6256a00e8b2e1355886a2adc28917969", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x541b4a8bb25092e7a52dbe8f07810e5c9efcb2774d52b567845fe8d3dc3c92a", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 176, + "transaction_hash": "0x2b331ae0f7d03c9fd6088604f704980c919dfcd030ce4cf2d2e5194dde6cf24", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x21bf47cfe73804095e3e1b25e656ca2ca9787651de3e69c9950943f501e30ce", + "0x43f3e848709d1347ef8fec1564050ef48b2c4b4b8848686228ca7d48d6b8952", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x21bf47cfe73804095e3e1b25e656ca2ca9787651de3e69c9950943f501e30ce", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 177, + "transaction_hash": "0x2a07b11c3d126f88fb09ff5be4b14e9616a0bf43d7548ea8439537934ff15cd", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0xa91641858e346eee18cdb5985b97a73eedc7fdc92de8fd3cef0b42bdbc00d3", + "0x12d803efb6b14fe4cbf885e67618f79c9cecc522ecf9549703d3d0f3bb22b19", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0xa91641858e346eee18cdb5985b97a73eedc7fdc92de8fd3cef0b42bdbc00d3", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "range_check_builtin": 268, + "poseidon_builtin": 4, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 178, + "transaction_hash": "0x2c1aa19b694ce946c474d6fe12552c53e208699384c3824d0300971fdd2288", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4e17f08446389b5cd0df8953acf3a0f2f6a6b2a80abd762b0101e7c6c103157", + "0x1f2f2027b73f9ded8c6beab8934566d563a0a0d8b4e0aa80ca0d9e11c24cd90", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4e17f08446389b5cd0df8953acf3a0f2f6a6b2a80abd762b0101e7c6c103157", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 179, + "transaction_hash": "0x476ed4d8f3194c6441a8b6a3a6611f4df286a30a11d621d61706e5cd597854e", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x71a161b38b1229d32ae61b14a2f44bdc73e6664ff8b3a4184f66abca2735fdf", + "0x16933ea9c914684bfaacbeefe89927f6ea29267fb0fa4661d0c1f3752530cc9", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x71a161b38b1229d32ae61b14a2f44bdc73e6664ff8b3a4184f66abca2735fdf", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "range_check_builtin": 268, + "poseidon_builtin": 4, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 180, + "transaction_hash": "0xc3b7c3b42d74864f7989003a61626c08849fd91b4f6464b932745555224dd", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x9b0e317d0bc8a7d797d9a4575dad53eccf44b671c0591c7ba82f5804d12985", + "0x9fcbb62b9953a3b658b5c63e3610a168a6951943aeb253788558094d935166", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x9b0e317d0bc8a7d797d9a4575dad53eccf44b671c0591c7ba82f5804d12985", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "range_check_builtin": 268, + "ec_op_builtin": 3, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 181, + "transaction_hash": "0x310ab042ae9a8904f63c4010f53f89a213bb91539403324d5c176905df2386a", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x64db11e31dea49ac0945a548fed4b38657452f98f0f29f413062b12873f4afa", + "0x120f5f0ae30ffad55612dde70c1a0a07af8d89abce94b8b9ea111e52d1e3b0b", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x64db11e31dea49ac0945a548fed4b38657452f98f0f29f413062b12873f4afa", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 182, + "transaction_hash": "0x776f598d4c2650c49f1fa9a1c4121e652b6feba8d701753a39bd44bcb85719e", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x5112b78113307795cf45051a65e9d2b535a236cb8ff8a93b9f4f460357b705b", + "0x1cc1f97e9284232d34653d58fa8e30a8563801c1730176700f72339367a953d", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x5112b78113307795cf45051a65e9d2b535a236cb8ff8a93b9f4f460357b705b", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 183, + "transaction_hash": "0x362a854ae7efbc4d08b9c6b4e34105e46cca68c929829262d117f990f32e50b", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3b02187b88b06e6993158e652acc2836e15b6f0a95d4abf74891334b462f741", + "0x319f651f63b9d8c006771fe19839a340c1148d0bfaec7f54b9b7a4d74d95aa2", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x3b02187b88b06e6993158e652acc2836e15b6f0a95d4abf74891334b462f741", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "range_check_builtin": 268, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 184, + "transaction_hash": "0x20d0bab6be590f5197ffc051803472e695eb6ffae36adb6a1974a72ecc7289c", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0xba1224bab4ce060da0b89da3294a672ffd0b4c313430b67aa6397510739502", + "0x3a0c01b4483148f2ed4933cd567c57082963db6fcbd7d2e742428b7485afc43", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0xba1224bab4ce060da0b89da3294a672ffd0b4c313430b67aa6397510739502", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 185, + "transaction_hash": "0x2781b1d51a8e2e2b3bddd5ca550d9c02f635ccda46dbc5cbabaaf99df615df", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x500eb16558214463a5c37ac189e1b12443e97a3bdf89ec0c0c4986376bfb00f", + "0x533ad6924cb390e6745bbe6194f5bad2f5327939799d4090e7d042d7f1f28d3", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x500eb16558214463a5c37ac189e1b12443e97a3bdf89ec0c0c4986376bfb00f", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 186, + "transaction_hash": "0x4df7753f4f657d63c10941494ebac856c9648c736f396706fe4d5fe673f2912", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x67e4d23e57541aa5d087eb95ec42bff6a9feadb0ca6dece4b60cb6e9b8c1970", + "0x6111ee156a2965b9bfe980c405c3cc7e86ec0b536c611cd2d164f9cd50269d2", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x67e4d23e57541aa5d087eb95ec42bff6a9feadb0ca6dece4b60cb6e9b8c1970", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 187, + "transaction_hash": "0x5847a37545b923764f761184420769c30c8ec648807bdbdc2007f7ff599aebc", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x143e4f7f4f62e00b9a027fc1d1e3e91fb655bb0c68d152a3bd81bee1ea38471", + "0x15400564c0d933f03eba288c0fffe3c76b06a5ed792dbe86c53b2a4f48661bc", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x143e4f7f4f62e00b9a027fc1d1e3e91fb655bb0c68d152a3bd81bee1ea38471", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 188, + "transaction_hash": "0x66ae9cb40a20a47596bc290aaaf99e07c827be610499644aa6d6fcb725c398f", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x19994bf4904edd8efa817a79fecb999e7c622f2643aea5d54647c0031d724c6", + "0x6138951e7cea2a9949fa4197aeb29b079cfd99f658cc73c500765da96f2f857", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x19994bf4904edd8efa817a79fecb999e7c622f2643aea5d54647c0031d724c6", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "ec_op_builtin": 3, + "poseidon_builtin": 4, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 189, + "transaction_hash": "0x37e2884609b45d1ec06b2043dffe99fb58f85243baaecce3ae0fe1fe6f2697a", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x56ffd7a92298ef76ddbd31936c19c23d29edc2f34207f1b0b5b270aa511d8d5", + "0x4a2fcc8551fb5e58a54f67c6b1a100cc101bca7b8bc76a506ddbf23caf7495c", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x56ffd7a92298ef76ddbd31936c19c23d29edc2f34207f1b0b5b270aa511d8d5", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "pedersen_builtin": 25, + "range_check_builtin": 268, + "ec_op_builtin": 3, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 190, + "transaction_hash": "0x53e768cf8ccf4c4b125ae529f0050823f067e078f8529f95a932b1e5b2a1a02", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x691301df126b5190e5227b9fd62788723db7b5ea790c4e1da8f85aa6235d46d", + "0x42fc16f540975c3129cdbbe88275cbc6b926a4b183f08ea4802734963f246d1", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x691301df126b5190e5227b9fd62788723db7b5ea790c4e1da8f85aa6235d46d", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "pedersen_builtin": 25, + "poseidon_builtin": 4, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 191, + "transaction_hash": "0x120d051ffd11af42cb251813729cbd5feadad5685b9816de68455e96bff0e75", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x104745966fa5cd518bab10b5f1a741f4a3435d7d9b060b8a11778cb36fcb574", + "0x10121ed85e757b09180a9f23c1e0d0dde516b990550639b3e4b8db6f1519db8", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x104745966fa5cd518bab10b5f1a741f4a3435d7d9b060b8a11778cb36fcb574", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "range_check_builtin": 268, + "pedersen_builtin": 25, + "ec_op_builtin": 3 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 192, + "transaction_hash": "0x167445965643cf3511fd7ec067085acf68fe2080c420659597324ce700f2f8e", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x75eacc62294b96b3a09da916ec3e77bc37fa6ab5176e5bbd28aaf588d74baa2", + "0x53f5e8f152398f2918082611d71ed7d38f1a895e38a9b627086bbd553152cbe", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x75eacc62294b96b3a09da916ec3e77bc37fa6ab5176e5bbd28aaf588d74baa2", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 193, + "transaction_hash": "0x4156cbecc1048d42a74297277e70cdfa2e3e87566a554567712236b1674f908", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4540dc7107f1d6a135b575115091ee56ab13c5cb22a6188a2e7fccda0e009a", + "0x5033cb6a734b81a5033a6ed3367ee6998f70b01e563071d73f27e0dfb59f9a1", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x4540dc7107f1d6a135b575115091ee56ab13c5cb22a6188a2e7fccda0e009a", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "pedersen_builtin": 25 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 194, + "transaction_hash": "0x42e6f653c1f61632af8605be03e119b5808ff0b35153011e28431a574b40603", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x10bd0687cdf260d35210af52a93a9712d51a403868a103e91e491eaf17973cd", + "0x5b707625bd4195d215fa54e99f1a132db60ac14bc882585a8f51a3e7ddf8367", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x10bd0687cdf260d35210af52a93a9712d51a403868a103e91e491eaf17973cd", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "range_check_builtin": 268, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 195, + "transaction_hash": "0x309ecaad1fced9d3c639dbc5fa49e82b5eca514f476d56b8c92355d6797d43c", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x5112b78113307795cf45051a65e9d2b535a236cb8ff8a93b9f4f460357b705b", + "0x634dbcc6decf882804e254340b0ccfe9a931e27685121e873979f9256fbd977", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x5112b78113307795cf45051a65e9d2b535a236cb8ff8a93b9f4f460357b705b", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "range_check_builtin": 268, + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "poseidon_builtin": 4 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 196, + "transaction_hash": "0x1dde6a5db2fd1f795cb3c21f4e40eec2547e1aaee8cfb96e0e565554bf8ec97", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x11f8473d749770009ec91b9e6f723403f9be76e2c93c62919d14989aa9f343d", + "0x72ad5c3a194d4dc87ed27b317f00d5762c0362bcb93d7295887e1be8080a555", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x11f8473d749770009ec91b9e6f723403f9be76e2c93c62919d14989aa9f343d", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "pedersen_builtin": 25, + "ec_op_builtin": 3, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + }, + { + "execution_status": "SUCCEEDED", + "transaction_index": 197, + "transaction_hash": "0x4469d51fe173183fa4b330b9151b756d50be2140709ae3b7540cc0ec481d20a", + "l2_to_l1_messages": [], + "events": [ + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x594a6c429ca64604465758db99ef286d5c00d847c8072fec3ff5f0e6b65cf64", + "0x6a592b56049cd8d77e5466efdf21e5efe15fb0c9bf78d0f3928ffd83ba4cfbc", + "0x1", + "0x0" + ] + }, + { + "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "keys": [ + "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9" + ], + "data": [ + "0x594a6c429ca64604465758db99ef286d5c00d847c8072fec3ff5f0e6b65cf64", + "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8", + "0xab4e32edef", + "0x0" + ] + } + ], + "execution_resources": { + "n_steps": 9233, + "builtin_instance_counter": { + "poseidon_builtin": 4, + "ec_op_builtin": 3, + "pedersen_builtin": 25, + "range_check_builtin": 268 + }, + "n_memory_holes": 0, + "data_availability": { + "l1_gas": 0, + "l1_data_gas": 192 + }, + "total_gas_consumed": { + "l1_gas": 25, + "l1_data_gas": 192 + } + }, + "actual_fee": "0xab4e32edef" + } + ], + "starknet_version": "0.13.2" +} \ No newline at end of file diff --git a/clients/feeder/testdata/sepolia-integration/signature/16350.json b/clients/feeder/testdata/sepolia-integration/signature/16350.json index ac7d4fed7e..4942743725 100644 --- a/clients/feeder/testdata/sepolia-integration/signature/16350.json +++ b/clients/feeder/testdata/sepolia-integration/signature/16350.json @@ -1,11 +1,7 @@ { - "block_number": 16350, + "block_hash": "0x660be3d095f36ffebf314c8bdea6823ba5e1f02fec2db61c84eb6faa859195", "signature": [ - "0x10fe667903a11a659d5cf95ab3ca441ef6888833b4e2036d0c6761e6498faf4", - "0x334061004caf8145136479b44112611fe9c90b3251189094c6e453d29bd6973" - ], - "signature_input": { - "block_hash": "0x660be3d095f36ffebf314c8bdea6823ba5e1f02fec2db61c84eb6faa859195", - "state_diff_commitment": "0x62c1b2056ff46e764b1103523ac104c0b9377593a4458e574b73133d00221e5" - } + "0x7ee8a86cd921053e037181b4b57b813db63b88ad5a5975ecada151d079322ae", + "0x6f97aefb8f14351f8a60f66c936ab8175744217522d7b335deadae8a4f15c68" + ] } \ No newline at end of file diff --git a/clients/feeder/testdata/sepolia-integration/signature/35748.json b/clients/feeder/testdata/sepolia-integration/signature/35748.json new file mode 100644 index 0000000000..d8598c65a5 --- /dev/null +++ b/clients/feeder/testdata/sepolia-integration/signature/35748.json @@ -0,0 +1,7 @@ +{ + "block_hash": "0x1ea2a9cfa3df5297d58c0a04d09d276bc68d40fe64701305bbe2ed8f417e869", + "signature": [ + "0x45161746eecbeae297f45a1f407ab702310f4e52c5e9350ed6f542fa8e98413", + "0x3e67cfbc5b179ba55a3b687228d8fe40626233f6691b4aabe308fcd6d71dcdb" + ] +} \ No newline at end of file diff --git a/clients/feeder/testdata/sepolia-integration/signature/35749.json b/clients/feeder/testdata/sepolia-integration/signature/35749.json new file mode 100644 index 0000000000..26f5ab8392 --- /dev/null +++ b/clients/feeder/testdata/sepolia-integration/signature/35749.json @@ -0,0 +1,7 @@ +{ + "block_hash": "0x23b37df7360bc6c434d32a6a4f46f1705efb4fdf7142bfd66929f5b40035a6", + "signature": [ + "0x12c78ec06dd5736e8c4db89f45a6be9fb38b61821b0c2fe5ec960dd29a6c734", + "0x498086fd30062224ce7bfab9a6b4a875ccc129982ae6f909be8478e4a429dbd" + ] +} \ No newline at end of file diff --git a/clients/feeder/testdata/sepolia-integration/signature/37500.json b/clients/feeder/testdata/sepolia-integration/signature/37500.json new file mode 100644 index 0000000000..2c4eea2921 --- /dev/null +++ b/clients/feeder/testdata/sepolia-integration/signature/37500.json @@ -0,0 +1,7 @@ +{ + "block_hash": "0xf7471e29d9f546fce49b82c15eb3f2d62d27526884e7787277c9002b9cac83", + "signature": [ + "0x61aa44c52ed27ba5e95339b1a77aa75e849f18cbaacf868398bef20dc5ac395", + "0x74a81536d17b0c3d8949346d54842d15974f82313a17cb3806c7f737b9889fe" + ] +} \ No newline at end of file diff --git a/clients/feeder/testdata/sepolia-integration/signature/38748.json b/clients/feeder/testdata/sepolia-integration/signature/38748.json new file mode 100644 index 0000000000..a4f9e3b902 --- /dev/null +++ b/clients/feeder/testdata/sepolia-integration/signature/38748.json @@ -0,0 +1,7 @@ +{ + "block_hash": "0x40b9de4d20b6537151895df0fa2520be3639a2a2a65915b5d27855efd1d78fe", + "signature": [ + "0x41e1c125c6b41eb8df6cfb116930cf7db423834e38090015bf6630757682a71", + "0x1580850614ee0401dce1c950c87cf900ebc3b50ad58bd9b38599565d0cfd313" + ] +} \ No newline at end of file diff --git a/core/block_test.go b/core/block_test.go index e1531a4336..9fb6613455 100644 --- a/core/block_test.go +++ b/core/block_test.go @@ -244,6 +244,31 @@ func TestBlockHash(t *testing.T) { }) } +func Test0132BlocHash(t *testing.T) { + t.Parallel() + client := feeder.NewTestClient(t, &utils.SepoliaIntegration) + gw := adaptfeeder.New(client) + + for _, test := range []struct { + blockNum uint64 + }{ + {blockNum: 35748}, {blockNum: 35749}, {blockNum: 37500}, {blockNum: 38748}, + } { + t.Run(fmt.Sprintf("blockNum=%v", test.blockNum), func(t *testing.T) { + t.Parallel() + b, err := gw.BlockByNumber(context.Background(), test.blockNum) + require.NoError(t, err) + + su, err := gw.StateUpdate(context.Background(), test.blockNum) + require.NoError(t, err) + + c, err := core.VerifyBlockHash(b, &utils.SepoliaIntegration, su.StateDiff) + require.NoError(t, err) + assert.NotNil(t, c) + }) + } +} + func TestBlockHashP2P(t *testing.T) { mainnetGW := adaptfeeder.New(feeder.NewTestClient(t, &utils.Mainnet)) From 6937cc9113de687dd002bff7b36a1a764fc2b8de Mon Sep 17 00:00:00 2001 From: IronGauntlets Date: Tue, 30 Jul 2024 17:52:25 +0100 Subject: [PATCH 27/28] Refactor BlockHash calculation --- core/block.go | 45 +++++++++++++++++++-------------------------- 1 file changed, 19 insertions(+), 26 deletions(-) diff --git a/core/block.go b/core/block.go index e6ffff640d..b9ff81e2af 100644 --- a/core/block.go +++ b/core/block.go @@ -74,8 +74,6 @@ type BlockCommitments struct { // VerifyBlockHash verifies the block hash. Due to bugs in Starknet alpha, not all blocks have // verifiable hashes. -// -//nolint:gocyclo func VerifyBlockHash(b *Block, network *utils.Network, stateDiff *StateDiff) (*BlockCommitments, error) { if len(b.Transactions) != len(b.Receipts) { return nil, fmt.Errorf("len of transactions: %v do not match len of receipts: %v", @@ -106,28 +104,13 @@ func VerifyBlockHash(b *Block, network *utils.Network, stateDiff *StateDiff) (*B fallbackSeqAddresses = append(fallbackSeqAddresses, metaInfo.FallBackSequencerAddress) } - blockVer, err := ParseBlockVersion(b.ProtocolVersion) - if err != nil { - return nil, err - } - v0_13_2 := semver.MustParse("0.13.2") - for _, fallbackSeq := range fallbackSeqAddresses { var overrideSeq *felt.Felt if b.SequencerAddress == nil { overrideSeq = fallbackSeq } - var ( - hash *felt.Felt - commitments *BlockCommitments - err error - ) - if blockVer.LessThan(v0_13_2) { - hash, commitments, err = blockHash(b, network, overrideSeq) - } else { - hash, commitments, err = Post0132Hash(b, stateDiff) - } + hash, commitments, err := blockHash(b, stateDiff, network, overrideSeq) if err != nil { return nil, err } @@ -147,6 +130,7 @@ func VerifyBlockHash(b *Block, network *utils.Network, stateDiff *StateDiff) (*B // BlockHash assumes block.SequencerAddress is not nil as this is called with post v0.12.0 // and by then issues with unverifiable block hash were resolved. // In future, this may no longer be required. +// Todo: Pass stateDiff so that p2p layer can calculate post 0.13.2 Block Hash func BlockHash(b *Block) (*felt.Felt, error) { if b.SequencerAddress == nil { return nil, errors.New("block.SequencerAddress is nil") @@ -157,13 +141,25 @@ func BlockHash(b *Block) (*felt.Felt, error) { } // blockHash computes the block hash, with option to override sequence address -func blockHash(b *Block, network *utils.Network, overrideSeqAddr *felt.Felt) (*felt.Felt, *BlockCommitments, error) { +func blockHash(b *Block, stateDiff *StateDiff, network *utils.Network, overrideSeqAddr *felt.Felt) (*felt.Felt, + *BlockCommitments, error, +) { metaInfo := network.BlockHashMetaInfo - if b.Number < metaInfo.First07Block { - return pre07Hash(b, network.L2ChainIDFelt()) + blockVer, err := ParseBlockVersion(b.ProtocolVersion) + if err != nil { + return nil, nil, err + } + v0_13_2 := semver.MustParse("0.13.2") + + if blockVer.LessThan(v0_13_2) { + if b.Number < metaInfo.First07Block { + return pre07Hash(b, network.L2ChainIDFelt()) + } + return post07Hash(b, overrideSeqAddr) } - return post07Hash(b, overrideSeqAddr) + + return Post0132Hash(b, stateDiff) } // pre07Hash computes the block hash for blocks generated before Cairo 0.7.0 @@ -190,9 +186,6 @@ func pre07Hash(b *Block, chain *felt.Felt) (*felt.Felt, *BlockCommitments, error } func Post0132Hash(b *Block, stateDiff *StateDiff) (*felt.Felt, *BlockCommitments, error) { - seqAddr := b.SequencerAddress - // todo override support? - wg := conc.NewWaitGroup() var txCommitment, eCommitment, rCommitment, sdCommitment *felt.Felt var sdLength uint64 @@ -231,7 +224,7 @@ func Post0132Hash(b *Block, stateDiff *StateDiff) (*felt.Felt, *BlockCommitments new(felt.Felt).SetBytes([]byte("STARKNET_BLOCK_HASH0")), new(felt.Felt).SetUint64(b.Number), // block number b.GlobalStateRoot, // global state root - seqAddr, // sequencer address + b.SequencerAddress, // sequencer address new(felt.Felt).SetUint64(b.Timestamp), // block timestamp concatCounts, sdCommitment, From 87506ca5be093a5ae8c0b47225ccb6f22a964c36 Mon Sep 17 00:00:00 2001 From: Kirill Date: Tue, 30 Jul 2024 20:07:39 +0300 Subject: [PATCH 28/28] Rename unit test --- core/block_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/block_test.go b/core/block_test.go index 9fb6613455..81cac95e5b 100644 --- a/core/block_test.go +++ b/core/block_test.go @@ -244,7 +244,7 @@ func TestBlockHash(t *testing.T) { }) } -func Test0132BlocHash(t *testing.T) { +func Test0132BlockHash(t *testing.T) { t.Parallel() client := feeder.NewTestClient(t, &utils.SepoliaIntegration) gw := adaptfeeder.New(client)