From 1f1ab99e815f2cb084826e32f559964eab534539 Mon Sep 17 00:00:00 2001 From: mohiiit Date: Tue, 17 Mar 2026 16:54:17 +0530 Subject: [PATCH] fix: preserve contract root when class root is empty --- .../starkware/starknet/core/os/state/commitment.cairo | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core/os/state/commitment.cairo b/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core/os/state/commitment.cairo index deb9bfbeb97..30c507fb1dc 100644 --- a/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core/os/state/commitment.cairo +++ b/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core/os/state/commitment.cairo @@ -38,9 +38,10 @@ struct StateEntry { func calculate_global_state_root{poseidon_ptr: PoseidonBuiltin*, range_check_ptr}( contract_state_root: felt, contract_class_root: felt ) -> (global_root: felt) { - if (contract_state_root == 0 and contract_class_root == 0) { - // The state is empty. - return (global_root=0); + if (contract_class_root == 0) { + // Backward compatibility: when the class tree is empty, the global state root is the + // contract state root. + return (global_root=contract_state_root); } tempvar elements: felt* = new (GLOBAL_STATE_VERSION, contract_state_root, contract_class_root);