From c72affd23ce4ae2cbab4b9bbb71bda3cee96de15 Mon Sep 17 00:00:00 2001 From: splinter Date: Mon, 9 Feb 2026 15:08:06 +0100 Subject: [PATCH 1/2] Update casm_contract_class.rs --- .../src/casm_contract_class.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/crates/cairo-lang-starknet-classes/src/casm_contract_class.rs b/crates/cairo-lang-starknet-classes/src/casm_contract_class.rs index 1c419768606..db79d2a58c4 100644 --- a/crates/cairo-lang-starknet-classes/src/casm_contract_class.rs +++ b/crates/cairo-lang-starknet-classes/src/casm_contract_class.rs @@ -197,12 +197,16 @@ fn bytecode_hash_node( } NestedIntList::Node(nodes) => { // Compute `1 + poseidon(len0, hash0, len1, hash1, ...)`. - let inner_nodes = - nodes.iter().map(|node| bytecode_hash_node::(iter, node)).collect_vec(); - let hash = H::hash_array( - &inner_nodes.iter().flat_map(|(len, hash)| [(*len).into(), *hash]).collect_vec(), - ) + 1; - (inner_nodes.iter().map(|(len, _)| len).sum(), hash) + let mut total_len = 0usize; + let mut hash_elements = Vec::with_capacity(nodes.len() * 2); + for node in nodes { + let (len, hash) = bytecode_hash_node::(iter, node); + total_len += len; + hash_elements.push(len.into()); + hash_elements.push(hash); + } + let hash = H::hash_array(&hash_elements) + 1; + (total_len, hash) } } } From e9b9f01c398005e77657c73a3c82e40f48a504d0 Mon Sep 17 00:00:00 2001 From: splinter Date: Tue, 10 Feb 2026 22:05:38 +0100 Subject: [PATCH 2/2] Update casm_contract_class.rs --- .../cairo-lang-starknet-classes/src/casm_contract_class.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/crates/cairo-lang-starknet-classes/src/casm_contract_class.rs b/crates/cairo-lang-starknet-classes/src/casm_contract_class.rs index db79d2a58c4..0a555784ce4 100644 --- a/crates/cairo-lang-starknet-classes/src/casm_contract_class.rs +++ b/crates/cairo-lang-starknet-classes/src/casm_contract_class.rs @@ -202,11 +202,9 @@ fn bytecode_hash_node( for node in nodes { let (len, hash) = bytecode_hash_node::(iter, node); total_len += len; - hash_elements.push(len.into()); - hash_elements.push(hash); + hash_elements.extend([len.into(), hash]); } - let hash = H::hash_array(&hash_elements) + 1; - (total_len, hash) + (total_len, H::hash_array(&hash_elements) + 1) } } }