Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
143 changes: 74 additions & 69 deletions Cargo.lock

Large diffs are not rendered by default.

18 changes: 9 additions & 9 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -225,15 +225,15 @@ bytes = "1"
c-kzg = "2.1.5"
cached = "0.44.0"
cairo-felt = "0.9.1"
cairo-lang-casm = "2.12.3"
cairo-lang-runner = "2.12.3"
cairo-lang-sierra = "2.12.3"
cairo-lang-sierra-to-casm = "2.12.3"
cairo-lang-starknet-classes = "2.12.3"
cairo-lang-utils = "2.12.3"
cairo-native = { git = "https://github.com/lambdaclass/cairo_native.git", rev = "53371a953b8db9c8bc020e141591853a666cdcf3" }
sierra-emu = { git = "https://github.com/lambdaclass/cairo_native.git", rev = "53371a953b8db9c8bc020e141591853a666cdcf3" }
cairo-vm = "2.5.0"
cairo-lang-casm = "2.14.1-dev.1"
cairo-lang-runner = "2.14.1-dev.1"
cairo-lang-sierra = "2.14.1-dev.1"
cairo-lang-sierra-to-casm = "2.14.1-dev.1"
cairo-lang-starknet-classes = "2.14.1-dev.1"
cairo-lang-utils = "2.14.1-dev.1"
cairo-native = { git = "https://github.com/lambdaclass/cairo_native.git", rev = "c2644a9f32169c6364e7dfb29fc3f5f1c4620e89" }
sierra-emu = { git = "https://github.com/lambdaclass/cairo_native.git", rev = "c2644a9f32169c6364e7dfb29fc3f5f1c4620e89" }
cairo-vm = "3.0.0"
camelpaste = "0.1.0"
chrono = "0.4.26"
clap = "4.5.4"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use std::collections::{HashMap, HashSet};
use std::collections::{BTreeMap, HashMap, HashSet};
use std::sync::Arc;
use std::vec;

Expand Down Expand Up @@ -473,7 +473,7 @@ fn execution_resources() -> ExecutionResources {
ExecutionResources {
n_steps: 2,
n_memory_holes: 3,
builtin_instance_counter: HashMap::from([
builtin_instance_counter: BTreeMap::from([
(BuiltinName::range_check, 31),
(BuiltinName::pedersen, 4),
]),
Expand Down Expand Up @@ -538,6 +538,8 @@ fn call_info() -> CallInfo {
(SyscallSelector::StorageWrite, SyscallUsage { call_count: 4, linear_factor: 0 }),
(SyscallSelector::EmitEvent, SyscallUsage { call_count: 2, linear_factor: 0 }),
]),
time: Default::default(),
call_counter: Default::default(),
}
}

Expand Down
2 changes: 1 addition & 1 deletion crates/apollo_infra_utils/src/cairo_compiler_version.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
#[path = "cairo_compiler_version_test.rs"]
mod cairo_compiler_version_test;

pub const CAIRO1_COMPILER_VERSION: &str = "2.12.3";
pub const CAIRO1_COMPILER_VERSION: &str = "2.14.1-dev.1";
2 changes: 1 addition & 1 deletion crates/blockifier/src/bouncer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -969,7 +969,7 @@ pub fn get_patricia_update_resources(

let resources_per_tree_access = ExecutionResources {
n_steps: TREE_HEIGHT_UPPER_BOUND * STEPS_IN_TREE_PER_HEIGHT,
builtin_instance_counter: HashMap::from([(
builtin_instance_counter: BTreeMap::from([(
BuiltinName::pedersen,
TREE_HEIGHT_UPPER_BOUND * PEDERSENS_PER_HEIGHT,
)]),
Expand Down
19 changes: 12 additions & 7 deletions crates/blockifier/src/bouncer_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -577,7 +577,7 @@ fn test_get_tx_weights_with_casm_hash_computation(block_context: BlockContext) {
#[case::tx_builtins_plus_os_tx_builtins(
&[],
ExecutionResources {
builtin_instance_counter: HashMap::from([
builtin_instance_counter: std::collections::BTreeMap::from([
(BuiltinName::bitwise, 1),
]),
..Default::default()
Expand All @@ -596,7 +596,7 @@ fn test_get_tx_weights_with_casm_hash_computation(block_context: BlockContext) {
(FeatureContract::TestContract(CairoVersion::Cairo1(RunnableCairo1::Casm)), 1),
],
ExecutionResources {
builtin_instance_counter: HashMap::from([
builtin_instance_counter: std::collections::BTreeMap::from([
(BuiltinName::range_check, 1),
(BuiltinName::bitwise, 2),
]),
Expand All @@ -607,6 +607,8 @@ fn test_proving_gas_minus_sierra_gas_equals_builtin_gas(
#[case] contract_instances: &[(FeatureContract, u16)],
#[case] os_vm_resources: ExecutionResources,
) {
use std::collections::BTreeMap;

let block_context = BlockContext::create_for_account_testing();
let state = test_state(&block_context.chain_info, Fee(0), contract_instances);

Expand All @@ -615,8 +617,8 @@ fn test_proving_gas_minus_sierra_gas_equals_builtin_gas(
contract_instances.iter().map(|(contract, _)| contract.get_class_hash()).collect();

// Transaction builtin counters.
let mut tx_builtin_counters =
HashMap::from([(BuiltinName::range_check, 2), (BuiltinName::pedersen, 1)]);
let tx_builtin_counters =
BTreeMap::from([(BuiltinName::range_check, 2), (BuiltinName::pedersen, 1)]);

let tx_resources = TransactionResources {
computation: ComputationResources {
Expand Down Expand Up @@ -661,14 +663,17 @@ fn test_proving_gas_minus_sierra_gas_equals_builtin_gas(
&tx_resources,
&StateMaps::default().keys(), // state changes keys
&block_context.versioned_constants,
&tx_builtin_counters,
&tx_builtin_counters.clone().into_iter().collect(),
&block_context.bouncer_config,
)
.unwrap();

// Combine TX + TX overhead (OS) + CASM and patricia builtin usage.
add_maps(&mut tx_builtin_counters, &os_vm_resources.builtin_instance_counter);
add_maps(&mut tx_builtin_counters, &additional_os_resources);
add_maps(
&mut tx_builtin_counters.clone().into_iter().collect(),
&os_vm_resources.builtin_instance_counter.into_iter().collect(),
);
add_maps(&mut tx_builtin_counters.clone().into_iter().collect(), &additional_os_resources);

// Compute expected gas delta from builtin delta (absolute difference between Stwo and Stone).
let (total_stwo_gas, total_stone_gas) = tx_builtin_counters
Expand Down
6 changes: 3 additions & 3 deletions crates/blockifier/src/execution/casm_hash_estimation.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use std::collections::HashMap;
use std::collections::BTreeMap;
use std::ops::AddAssign;

use cairo_vm::types::builtin_name::BuiltinName;
Expand Down Expand Up @@ -448,10 +448,10 @@ impl EstimateCasmHashResources for CasmV2HashResourceEstimate {
Self::estimate_steps_of_encode_felt252_data_and_calc_blake_hash(felt_size_groups);
let builtin_instance_counter = match felt_size_groups.n_felts() {
// The empty case does not use builtins at all.
0 => HashMap::new(),
0 => BTreeMap::new(),
// One `range_check` per input felt to validate its size + Overhead for the non empty
// case.
_ => HashMap::from([(
_ => BTreeMap::from([(
BuiltinName::range_check,
felt_size_groups.n_felts() + BASE_RANGE_CHECK_NON_EMPTY,
)]),
Expand Down
18 changes: 13 additions & 5 deletions crates/blockifier/src/execution/casm_hash_estimation_test.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use std::collections::HashMap;
use std::collections::{BTreeMap, HashMap};

use cairo_vm::types::builtin_name::BuiltinName;
use cairo_vm::vm::runners::cairo_runner::ExecutionResources;
Expand All @@ -21,7 +21,11 @@ impl EstimatedExecutionResources {
builtin_instance_counter: HashMap<BuiltinName, usize>,
) -> Self {
Self::V1Hash {
resources: ExecutionResources { n_steps, n_memory_holes, builtin_instance_counter },
resources: ExecutionResources {
n_steps,
n_memory_holes,
builtin_instance_counter: builtin_instance_counter.into_iter().collect(),
},
}
}

Expand All @@ -33,7 +37,11 @@ impl EstimatedExecutionResources {
blake_count: usize,
) -> Self {
Self::V2Hash {
resources: ExecutionResources { n_steps, n_memory_holes, builtin_instance_counter },
resources: ExecutionResources {
n_steps,
n_memory_holes,
builtin_instance_counter: builtin_instance_counter.into_iter().collect(),
},
blake_count,
}
}
Expand Down Expand Up @@ -64,7 +72,7 @@ fn add_assign_estimated_resources_panics_on_variant_mismatch(
ExecutionResources {
n_steps: 2,
n_memory_holes: 2,
builtin_instance_counter: HashMap::from([(BuiltinName::poseidon, 3)]),
builtin_instance_counter: BTreeMap::from([(BuiltinName::poseidon, 3)]),
},
// Expected blake count.
None,
Expand All @@ -76,7 +84,7 @@ fn add_assign_estimated_resources_panics_on_variant_mismatch(
ExecutionResources {
n_steps: 2,
n_memory_holes: 2,
builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 3)]),
builtin_instance_counter: BTreeMap::from([(BuiltinName::range_check, 3)]),
},
// Expected blake count.
Some(3),
Expand Down
4 changes: 2 additions & 2 deletions crates/blockifier/src/execution/contract_class.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use std::borrow::Cow;
use std::collections::{HashMap, HashSet};
use std::collections::{BTreeMap, HashMap, HashSet};
use std::ops::{Deref, Index};
use std::sync::{Arc, LazyLock};

Expand Down Expand Up @@ -356,7 +356,7 @@ impl CompiledClassV0 {
ExecutionResources {
n_steps,
n_memory_holes: 0,
builtin_instance_counter: HashMap::from([(BuiltinName::pedersen, hashed_data_size)]),
builtin_instance_counter: BTreeMap::from([(BuiltinName::pedersen, hashed_data_size)]),
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use std::collections::{HashMap, HashSet};
use std::collections::{BTreeMap, HashMap, HashSet};

use blockifier_test_utils::cairo_versions::CairoVersion;
use blockifier_test_utils::contracts::FeatureContract;
Expand Down Expand Up @@ -152,7 +152,7 @@ fn test_nested_library_call() {
let storage_entry_point_resources = ExecutionResources {
n_steps: 228,
n_memory_holes: 0,
builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 2)]),
builtin_instance_counter: BTreeMap::from([(BuiltinName::range_check, 2)]),
};
let storage_entry_point_syscalls_usage = HashMap::from([
(SyscallSelector::StorageRead, SyscallUsage::with_call_count(1)),
Expand All @@ -176,7 +176,7 @@ fn test_nested_library_call() {
+ &ExecutionResources {
n_steps: 39,
n_memory_holes: 0,
builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 1)]),
builtin_instance_counter: BTreeMap::from([(BuiltinName::range_check, 1)]),
};
library_call_resources += &storage_entry_point_resources;
let library_call_info = CallInfo {
Expand Down Expand Up @@ -211,7 +211,7 @@ fn test_nested_library_call() {
+ &ExecutionResources {
n_steps: 45,
n_memory_holes: 0,
builtin_instance_counter: HashMap::new(),
builtin_instance_counter: BTreeMap::new(),
};
main_call_resources += &(&library_call_resources * 2);
let expected_call_info = CallInfo {
Expand Down Expand Up @@ -317,7 +317,7 @@ fn test_call_contract() {
resources: ExecutionResources {
n_steps: 228,
n_memory_holes: 0,
builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 2)]),
builtin_instance_counter: BTreeMap::from([(BuiltinName::range_check, 2)]),
},
storage_access_tracker: StorageAccessTracker {
storage_read_values: vec![value],
Expand All @@ -344,7 +344,7 @@ fn test_call_contract() {
+ &ExecutionResources {
n_steps: 267,
n_memory_holes: 0,
builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 3)]),
builtin_instance_counter: BTreeMap::from([(BuiltinName::range_check, 3)]),
},
builtin_counters: HashMap::from([(BuiltinName::range_check, 19)]),
syscalls_usage: HashMap::from([(
Expand Down
4 changes: 2 additions & 2 deletions crates/blockifier/src/execution/execution_utils.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use std::collections::HashMap;
use std::collections::{BTreeMap, HashMap};

use cairo_vm::serde::deserialize_program::{
deserialize_array_of_bigint_hex,
Expand Down Expand Up @@ -378,6 +378,6 @@ pub fn poseidon_hash_many_cost(data_length: usize) -> ExecutionResources {
+ (data_length % 2) * 3
+ 21,
n_memory_holes: 0,
builtin_instance_counter: HashMap::from([(BuiltinName::poseidon, data_length / 2 + 1)]),
builtin_instance_counter: BTreeMap::from([(BuiltinName::poseidon, data_length / 2 + 1)]),
}
}
10 changes: 10 additions & 0 deletions crates/blockifier/src/execution/native/syscall_handler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ use cairo_native::starknet::{
BlockInfo,
ExecutionInfo,
ExecutionInfoV2,
ExecutionInfoV3,
Secp256k1Point,
Secp256r1Point,
StarknetSyscallHandler,
Expand Down Expand Up @@ -319,6 +320,15 @@ impl StarknetSyscallHandler for &mut NativeSyscallHandler<'_> {
})
}

fn get_execution_info_v3(
&mut self,
_remaining_gas: &mut u64,
) -> SyscallResult<ExecutionInfoV3> {
// There is no need to implement it now. Once we
// actually need it we can take it from upstream.
todo!()
}

fn deploy(
&mut self,
class_hash: Felt,
Expand Down
5 changes: 3 additions & 2 deletions crates/blockifier/src/execution/syscalls/hint_processor.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use std::any::Any;
use std::collections::HashMap;
use std::rc::Rc;
use std::sync::Arc;

use cairo_lang_casm::hints::Hint;
use cairo_lang_runner::casm_run::execute_core_hint_base;
Expand Down Expand Up @@ -783,7 +783,8 @@ impl HintProcessorLogic for SyscallHintProcessor<'_> {
_ap_tracking_data: &ApTracking,
_reference_ids: &HashMap<String, usize>,
_references: &[HintReference],
_constants: Rc<HashMap<String, Felt>>,
_accessible_scopes: &[String],
_constants: Arc<HashMap<String, Felt>>,
) -> Result<Box<dyn Any>, VirtualMachineError> {
Ok(Box::new(self.hints[hint_code].clone()))
}
Expand Down
4 changes: 2 additions & 2 deletions crates/blockifier/src/test_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ pub mod syscall;
pub mod test_templates;
pub mod transfers_generator;

use std::collections::HashMap;
use std::collections::{BTreeMap, HashMap};
use std::slice::Iter;
use std::sync::LazyLock;

Expand Down Expand Up @@ -397,7 +397,7 @@ pub fn get_vm_resource_usage() -> ExecutionResources {
ExecutionResources {
n_steps: 10000,
n_memory_holes: 0,
builtin_instance_counter: HashMap::from([
builtin_instance_counter: BTreeMap::from([
(BuiltinName::pedersen, 10),
(BuiltinName::range_check, 24),
(BuiltinName::ecdsa, 1),
Expand Down
2 changes: 1 addition & 1 deletion crates/blockifier/src/transaction/objects.rs
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ impl ExecutionResourcesTraits for ExecutionResources {

// See "total_n_steps" documentation.
builtins.remove(&BuiltinName::segment_arena);
builtins
builtins.into_iter().collect()
}

fn div_ceil(&self, rhs: usize) -> ExecutionResources {
Expand Down
8 changes: 4 additions & 4 deletions crates/blockifier/src/transaction/transactions_test.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use std::collections::{HashMap, HashSet};
use std::collections::{BTreeMap, HashMap, HashSet};
use std::sync::{Arc, LazyLock};

use assert_matches::assert_matches;
Expand Down Expand Up @@ -316,7 +316,7 @@ fn expected_validate_call_info(
ExecutionResources {
n_steps,
n_memory_holes: 0,
builtin_instance_counter: HashMap::from([(
builtin_instance_counter: BTreeMap::from([(
BuiltinName::range_check,
n_range_checks,
)]),
Expand Down Expand Up @@ -570,7 +570,7 @@ fn add_kzg_da_resources_to_resources_mapping(
resources: &get_const_syscall_resources(SyscallSelector::CallContract) + &ExecutionResources {
n_steps: 62,
n_memory_holes: 0,
builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 1)]),
builtin_instance_counter: BTreeMap::from([(BuiltinName::range_check, 1)]),
},
validate_gas_consumed: 0,
execute_gas_consumed: 0,
Expand Down Expand Up @@ -2784,7 +2784,7 @@ fn test_l1_handler(#[values(false, true)] use_kzg_da: bool) {
};

let mut expected_os_execution_resources = ExecutionResources {
builtin_instance_counter: HashMap::from([
builtin_instance_counter: BTreeMap::from([
(BuiltinName::pedersen, 11 + payload_size),
(
BuiltinName::range_check,
Expand Down
Loading