From a475a25d5c8fe12da0b4b5114f929e018d11de12 Mon Sep 17 00:00:00 2001 From: meship-starkware Date: Mon, 29 Sep 2025 16:42:48 +0300 Subject: [PATCH] starknet_os: move starknet os config outside of block_context --- .../starknet/core/os/block_context.cairo | 9 +++------ .../blake_compiled_class_hash.cairo | 6 +++--- .../cairo/starkware/starknet/core/os/os.cairo | 16 +++++++++++++--- .../src/program_hash.json | 2 +- crates/starknet_os/src/hints/enum_definition.rs | 6 +++--- crates/starknet_os/src/hints/nondet_offsets.rs | 6 +++--- 6 files changed, 26 insertions(+), 19 deletions(-) diff --git a/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core/os/block_context.cairo b/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core/os/block_context.cairo index 8fe9a228016..bcc34d6407a 100644 --- a/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core/os/block_context.cairo +++ b/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core/os/block_context.cairo @@ -43,7 +43,7 @@ struct BlockContext { // Some of the fields, which cannot be used in validate mode, are zeroed out. block_info_for_validate: BlockInfo*, // StarknetOsConfig instance. - starknet_os_config: StarknetOsConfig, + starknet_os_config: StarknetOsConfig*, // A function pointer to the 'execute_syscalls' function. execute_syscalls_ptr: felt*, // A function pointer to the 'execute_deprecated_syscalls' function. @@ -58,6 +58,7 @@ func get_block_context{range_check_ptr}( execute_deprecated_syscalls_ptr: felt*, compiled_class_facts_bundle: CompiledClassFactsBundle*, public_keys_hash: felt, + starknet_os_config: StarknetOsConfig*, ) -> (block_context: BlockContext*) { alloc_locals; let (builtin_params) = get_builtin_params(); @@ -85,11 +86,7 @@ func get_block_context{range_check_ptr}( block_timestamp=block_timestamp_for_validate, sequencer_address=0, ), - starknet_os_config=StarknetOsConfig( - chain_id=nondet %{ os_hints_config.starknet_os_config.chain_id %}, - fee_token_address=nondet %{ os_hints_config.starknet_os_config.fee_token_address %}, - public_keys_hash=public_keys_hash, - ), + starknet_os_config=starknet_os_config, execute_syscalls_ptr=execute_syscalls_ptr, execute_deprecated_syscalls_ptr=execute_deprecated_syscalls_ptr, ); diff --git a/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core/os/contract_class/blake_compiled_class_hash.cairo b/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core/os/contract_class/blake_compiled_class_hash.cairo index e373c2806c4..ad0a8833374 100644 --- a/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core/os/contract_class/blake_compiled_class_hash.cairo +++ b/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core/os/contract_class/blake_compiled_class_hash.cairo @@ -223,10 +223,10 @@ func hash_entry_points{hash_state: HashState, range_check_ptr: felt}( entry_points: CompiledClassEntryPoint*, n_entry_points: felt ) { let inner_hash_state = hash_init(); - hash_entry_points_inner{hash_state=inner_hash_state, range_check_ptr=range_check_ptr}( + hash_entry_points_inner{hash_state=inner_hash_state}( entry_points=entry_points, n_entry_points=n_entry_points ); - let hash: felt = hash_finalize{range_check_ptr=range_check_ptr}(hash_state=inner_hash_state); + let hash: felt = hash_finalize(hash_state=inner_hash_state); hash_update_single(item=hash); return (); @@ -243,7 +243,7 @@ func hash_entry_points_inner{hash_state: HashState, range_check_ptr: felt}( hash_update_single(item=entry_points.offset); // Hash builtins. - hash_update_with_nested_hash{hash_state=hash_state, range_check_ptr=range_check_ptr}( + hash_update_with_nested_hash( data_ptr=entry_points.builtin_list, data_length=entry_points.n_builtins ); diff --git a/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core/os/os.cairo b/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core/os/os.cairo index f81aa518023..3773669a46c 100644 --- a/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core/os/os.cairo +++ b/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core/os/os.cairo @@ -105,8 +105,6 @@ func main{ ) = deprecated_load_compiled_class_facts(); let (local os_outputs: OsOutput*) = alloc(); - local initial_txs_range_check_ptr = nondet %{ segments.add_temp_segment() %}; - let txs_range_check_ptr = initial_txs_range_check_ptr; %{ from starkware.starknet.core.os.execution_helper import StateUpdatePointers state_update_pointers = StateUpdatePointers(segments=segments) @@ -124,12 +122,21 @@ func main{ let (public_keys_hash) = get_public_keys_hash{hash_ptr=pedersen_ptr}( n_public_keys=n_public_keys, public_keys=public_keys ); + local starknet_os_config: StarknetOsConfig* = new StarknetOsConfig( + chain_id=nondet %{ os_hints_config.starknet_os_config.chain_id %}, + fee_token_address=nondet %{ os_hints_config.starknet_os_config.fee_token_address %}, + public_keys_hash=public_keys_hash, + ); + + local initial_txs_range_check_ptr = nondet %{ segments.add_temp_segment() %}; + let txs_range_check_ptr = initial_txs_range_check_ptr; with txs_range_check_ptr { execute_blocks( n_blocks=n_blocks, os_output_per_block_dst=os_outputs, compiled_class_facts_bundle=compiled_class_facts_bundle, public_keys_hash=public_keys_hash, + starknet_os_config=starknet_os_config, ); } @@ -244,6 +251,7 @@ func execute_blocks{ os_output_per_block_dst: OsOutput*, compiled_class_facts_bundle: CompiledClassFactsBundle*, public_keys_hash: felt, + starknet_os_config: StarknetOsConfig*, ) { %{ print(f"execute_blocks: {ids.n_blocks} blocks remaining.") %} if (n_blocks == 0) { @@ -288,6 +296,7 @@ func execute_blocks{ execute_deprecated_syscalls_ptr=execute_deprecated_syscalls_ptr, compiled_class_facts_bundle=compiled_class_facts_bundle, public_keys_hash=public_keys_hash, + starknet_os_config=starknet_os_config, ); // Pre-process block. @@ -341,7 +350,7 @@ func execute_blocks{ let hash_ptr = pedersen_ptr; with hash_ptr { let (starknet_os_config_hash) = get_starknet_os_config_hash( - starknet_os_config=&block_context.starknet_os_config + starknet_os_config=block_context.starknet_os_config ); } @@ -371,6 +380,7 @@ func execute_blocks{ os_output_per_block_dst=&os_output_per_block_dst[1], compiled_class_facts_bundle=compiled_class_facts_bundle, public_keys_hash=public_keys_hash, + starknet_os_config=starknet_os_config, ); } diff --git a/crates/apollo_starknet_os_program/src/program_hash.json b/crates/apollo_starknet_os_program/src/program_hash.json index 2894de8d73d..c98db652fc8 100644 --- a/crates/apollo_starknet_os_program/src/program_hash.json +++ b/crates/apollo_starknet_os_program/src/program_hash.json @@ -1,5 +1,5 @@ { - "os": "0x338203798f8c939bae2c9bd06afd80bb63595007601729b33d6739920416c24", + "os": "0x44cdd552a117eb3c68eaac721c238a482519ef82889fe2711031a4d154c293e", "aggregator": "0x110273c1890c2e09a34e3995eeeaa7e0a10fe5a8bd98c84ccf6243512f7a7e6", "aggregator_with_prefix": "0x3ca5d4c4724e45c896bf36d26e28a7e585e61d680b3b06962af652cafa166d7" } \ No newline at end of file diff --git a/crates/starknet_os/src/hints/enum_definition.rs b/crates/starknet_os/src/hints/enum_definition.rs index d1b306c1681..a55b8392fcb 100644 --- a/crates/starknet_os/src/hints/enum_definition.rs +++ b/crates/starknet_os/src/hints/enum_definition.rs @@ -596,7 +596,7 @@ vm_enter_scope(dict( ( SegmentsAddTemp, segments_add_temp, - indoc! {r#"memory[fp + 8] = to_felt_or_relocatable(segments.add_temp_segment())"# + indoc! {r#"memory[fp + 12] = to_felt_or_relocatable(segments.add_temp_segment())"# } ), ( @@ -1115,7 +1115,7 @@ define_hint_enum!( ( WriteUseKzgDaToMemory, write_use_kzg_da_to_memory, - indoc! {r#"memory[fp + 23] = to_felt_or_relocatable(os_hints_config.use_kzg_da and ( + indoc! {r#"memory[fp + 24] = to_felt_or_relocatable(os_hints_config.use_kzg_da and ( not os_hints_config.full_output ))"#} ), @@ -1618,7 +1618,7 @@ ids.contract_class_component_hashes = segments.gen_arg(class_component_hashes)"# ( WriteFullOutputToMemory, write_full_output_to_memory, - indoc! {r#"memory[fp + 24] = to_felt_or_relocatable(os_hints_config.full_output)"#} + indoc! {r#"memory[fp + 25] = to_felt_or_relocatable(os_hints_config.full_output)"#} ), ( ConfigureKzgManager, diff --git a/crates/starknet_os/src/hints/nondet_offsets.rs b/crates/starknet_os/src/hints/nondet_offsets.rs index c1cfe54052c..225809a816f 100644 --- a/crates/starknet_os/src/hints/nondet_offsets.rs +++ b/crates/starknet_os/src/hints/nondet_offsets.rs @@ -21,12 +21,12 @@ pub(crate) static NONDET_FP_OFFSETS: LazyLock> = LazyLo HashMap::from([ (AllHints::OsHint(OsHint::OsInputTransactions), 12), (AllHints::OsHint(OsHint::ReadAliasFromKey), 0), - (AllHints::StatelessHint(StatelessHint::SegmentsAddTemp), 8), + (AllHints::StatelessHint(StatelessHint::SegmentsAddTemp), 12), (AllHints::OsHint(OsHint::SetFpPlus4ToTxNonce), 4), (AllHints::OsHint(OsHint::GetBlocksNumber), 0), (AllHints::OsHint(OsHint::TxAccountDeploymentDataLen), 4), - (AllHints::OsHint(OsHint::WriteFullOutputToMemory), 24), - (AllHints::OsHint(OsHint::WriteUseKzgDaToMemory), 23), + (AllHints::OsHint(OsHint::WriteFullOutputToMemory), 25), + (AllHints::OsHint(OsHint::WriteUseKzgDaToMemory), 24), ]) });