Skip to content

Commit 5323469

Browse files
starknet_os: move cairo1_revert module into separate folder
1 parent 52deaf6 commit 5323469

File tree

3 files changed

+69
-68
lines changed

3 files changed

+69
-68
lines changed

crates/starknet_os/src/hints/enum_definition.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ use crate::hints::hint_implementation::builtins::{
4343
selected_builtins,
4444
update_builtin_ptrs,
4545
};
46-
use crate::hints::hint_implementation::cairo1_revert::{
46+
use crate::hints::hint_implementation::cairo1_revert::implementation::{
4747
generate_dummy_os_output_segment,
4848
prepare_state_entry_for_revert,
4949
read_storage_key_for_revert,
Lines changed: 1 addition & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1 @@
1-
use blockifier::state::state_api::{State, StateReader};
2-
use cairo_vm::hint_processor::builtin_hint_processor::hint_utils::{
3-
get_integer_from_var_name,
4-
insert_value_into_ap,
5-
};
6-
use cairo_vm::types::relocatable::MaybeRelocatable;
7-
use starknet_api::core::ContractAddress;
8-
use starknet_api::state::StorageKey;
9-
use starknet_types_core::felt::Felt;
10-
11-
use crate::hint_processor::snos_hint_processor::SnosHintProcessor;
12-
use crate::hints::error::OsHintResult;
13-
use crate::hints::hint_implementation::execution::utils::set_state_entry;
14-
use crate::hints::types::HintArgs;
15-
use crate::hints::vars::{Ids, Scope};
16-
17-
pub(crate) fn prepare_state_entry_for_revert(
18-
HintArgs { ids_data, ap_tracking, vm, exec_scopes, .. }: HintArgs<'_>,
19-
) -> OsHintResult {
20-
let contract_address: ContractAddress =
21-
get_integer_from_var_name(Ids::ContractAddress.into(), vm, ids_data, ap_tracking)?
22-
.try_into()?;
23-
set_state_entry(&contract_address, vm, exec_scopes, ids_data, ap_tracking)?;
24-
25-
// Insert the contract address into the execution scopes instead of the entire storage.
26-
// Later, we use this address to revert the state.
27-
exec_scopes.insert_value(Scope::ContractAddressForRevert.into(), contract_address);
28-
Ok(())
29-
}
30-
31-
pub(crate) fn read_storage_key_for_revert<S: StateReader>(
32-
hint_processor: &mut SnosHintProcessor<'_, S>,
33-
HintArgs { exec_scopes, vm, ids_data, ap_tracking, .. }: HintArgs<'_>,
34-
) -> OsHintResult {
35-
let contract_address: &ContractAddress =
36-
exec_scopes.get_ref(Scope::ContractAddressForRevert.into())?;
37-
let storage_key: StorageKey =
38-
get_integer_from_var_name(Ids::StorageKey.into(), vm, ids_data, ap_tracking)?.try_into()?;
39-
let execution_helper = hint_processor.get_mut_current_execution_helper()?;
40-
let storage_value =
41-
execution_helper.cached_state.get_storage_at(*contract_address, storage_key)?;
42-
insert_value_into_ap(vm, storage_value)?;
43-
Ok(())
44-
}
45-
46-
pub(crate) fn write_storage_key_for_revert<S: StateReader>(
47-
hint_processor: &mut SnosHintProcessor<'_, S>,
48-
HintArgs { exec_scopes, vm, ids_data, ap_tracking, .. }: HintArgs<'_>,
49-
) -> OsHintResult {
50-
let contract_address: &ContractAddress =
51-
exec_scopes.get_ref(Scope::ContractAddressForRevert.into())?;
52-
let storage_key: StorageKey =
53-
get_integer_from_var_name(Ids::StorageKey.into(), vm, ids_data, ap_tracking)?.try_into()?;
54-
let value = get_integer_from_var_name(Ids::Value.into(), vm, ids_data, ap_tracking)?;
55-
let execution_helper = hint_processor.get_mut_current_execution_helper()?;
56-
execution_helper.cached_state.set_storage_at(*contract_address, storage_key, value)?;
57-
Ok(())
58-
}
59-
60-
pub(crate) fn generate_dummy_os_output_segment(HintArgs { vm, .. }: HintArgs<'_>) -> OsHintResult {
61-
let base = vm.add_memory_segment();
62-
let segment_data =
63-
[MaybeRelocatable::from(vm.add_memory_segment()), MaybeRelocatable::from(Felt::ZERO)];
64-
vm.load_data(base, &segment_data)?;
65-
insert_value_into_ap(vm, base)?;
66-
Ok(())
67-
}
1+
pub(crate) mod implementation;
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
use blockifier::state::state_api::{State, StateReader};
2+
use cairo_vm::hint_processor::builtin_hint_processor::hint_utils::{
3+
get_integer_from_var_name,
4+
insert_value_into_ap,
5+
};
6+
use cairo_vm::types::relocatable::MaybeRelocatable;
7+
use starknet_api::core::ContractAddress;
8+
use starknet_api::state::StorageKey;
9+
use starknet_types_core::felt::Felt;
10+
11+
use crate::hint_processor::snos_hint_processor::SnosHintProcessor;
12+
use crate::hints::error::OsHintResult;
13+
use crate::hints::hint_implementation::execution::utils::set_state_entry;
14+
use crate::hints::types::HintArgs;
15+
use crate::hints::vars::{Ids, Scope};
16+
17+
pub(crate) fn prepare_state_entry_for_revert(
18+
HintArgs { ids_data, ap_tracking, vm, exec_scopes, .. }: HintArgs<'_>,
19+
) -> OsHintResult {
20+
let contract_address: ContractAddress =
21+
get_integer_from_var_name(Ids::ContractAddress.into(), vm, ids_data, ap_tracking)?
22+
.try_into()?;
23+
set_state_entry(&contract_address, vm, exec_scopes, ids_data, ap_tracking)?;
24+
25+
// Insert the contract address into the execution scopes instead of the entire storage.
26+
// Later, we use this address to revert the state.
27+
exec_scopes.insert_value(Scope::ContractAddressForRevert.into(), contract_address);
28+
Ok(())
29+
}
30+
31+
pub(crate) fn read_storage_key_for_revert<S: StateReader>(
32+
hint_processor: &mut SnosHintProcessor<'_, S>,
33+
HintArgs { exec_scopes, vm, ids_data, ap_tracking, .. }: HintArgs<'_>,
34+
) -> OsHintResult {
35+
let contract_address: &ContractAddress =
36+
exec_scopes.get_ref(Scope::ContractAddressForRevert.into())?;
37+
let storage_key: StorageKey =
38+
get_integer_from_var_name(Ids::StorageKey.into(), vm, ids_data, ap_tracking)?.try_into()?;
39+
let execution_helper = hint_processor.get_mut_current_execution_helper()?;
40+
let storage_value =
41+
execution_helper.cached_state.get_storage_at(*contract_address, storage_key)?;
42+
insert_value_into_ap(vm, storage_value)?;
43+
Ok(())
44+
}
45+
46+
pub(crate) fn write_storage_key_for_revert<S: StateReader>(
47+
hint_processor: &mut SnosHintProcessor<'_, S>,
48+
HintArgs { exec_scopes, vm, ids_data, ap_tracking, .. }: HintArgs<'_>,
49+
) -> OsHintResult {
50+
let contract_address: &ContractAddress =
51+
exec_scopes.get_ref(Scope::ContractAddressForRevert.into())?;
52+
let storage_key: StorageKey =
53+
get_integer_from_var_name(Ids::StorageKey.into(), vm, ids_data, ap_tracking)?.try_into()?;
54+
let value = get_integer_from_var_name(Ids::Value.into(), vm, ids_data, ap_tracking)?;
55+
let execution_helper = hint_processor.get_mut_current_execution_helper()?;
56+
execution_helper.cached_state.set_storage_at(*contract_address, storage_key, value)?;
57+
Ok(())
58+
}
59+
60+
pub(crate) fn generate_dummy_os_output_segment(HintArgs { vm, .. }: HintArgs<'_>) -> OsHintResult {
61+
let base = vm.add_memory_segment();
62+
let segment_data =
63+
[MaybeRelocatable::from(vm.add_memory_segment()), MaybeRelocatable::from(Felt::ZERO)];
64+
vm.load_data(base, &segment_data)?;
65+
insert_value_into_ap(vm, base)?;
66+
Ok(())
67+
}

0 commit comments

Comments
 (0)