@@ -262,35 +262,39 @@ pub fn calculate_block_hash(
262262 let block_hash_version: BlockHashVersion =
263263 partial_block_hash_components. starknet_version . try_into ( ) ?;
264264 let block_commitments = & partial_block_hash_components. header_commitments ;
265- Ok ( BlockHash (
266- HashChain :: new ( )
267- . chain ( & block_hash_version. clone ( ) . into ( ) )
268- . chain ( & partial_block_hash_components. block_number . 0 . into ( ) )
269- . chain ( & state_root. 0 )
270- . chain ( & partial_block_hash_components. sequencer . 0 )
271- . chain ( & partial_block_hash_components. timestamp . 0 . into ( ) )
272- . chain ( & block_commitments. concatenated_counts )
273- . chain ( & block_commitments. state_diff_commitment . 0 . 0 )
274- . chain ( & block_commitments. transaction_commitment . 0 )
275- . chain ( & block_commitments. event_commitment . 0 )
276- . chain ( & block_commitments. receipt_commitment . 0 )
277- . chain_iter (
278- gas_prices_to_hash (
279- & partial_block_hash_components. l1_gas_price ,
280- & partial_block_hash_components. l1_data_gas_price ,
281- & partial_block_hash_components. l2_gas_price ,
282- & block_hash_version,
283- )
284- . iter ( ) ,
265+ let mut hash_chain = HashChain :: new ( )
266+ . chain ( & block_hash_version. clone ( ) . into ( ) )
267+ . chain ( & partial_block_hash_components. block_number . 0 . into ( ) )
268+ . chain ( & state_root. 0 )
269+ . chain ( & partial_block_hash_components. sequencer . 0 )
270+ . chain ( & partial_block_hash_components. timestamp . 0 . into ( ) )
271+ . chain ( & block_commitments. concatenated_counts )
272+ . chain ( & block_commitments. state_diff_commitment . 0 . 0 )
273+ . chain ( & block_commitments. transaction_commitment . 0 )
274+ . chain ( & block_commitments. event_commitment . 0 )
275+ . chain ( & block_commitments. receipt_commitment . 0 )
276+ . chain_iter (
277+ gas_prices_to_hash (
278+ & partial_block_hash_components. l1_gas_price ,
279+ & partial_block_hash_components. l1_data_gas_price ,
280+ & partial_block_hash_components. l2_gas_price ,
281+ & block_hash_version,
285282 )
286- . chain (
287- & Felt :: try_from ( & partial_block_hash_components. starknet_version )
288- . expect ( "Expect ASCII version" ) ,
289- )
290- . chain ( & Felt :: ZERO )
291- . chain ( & previous_block_hash. 0 )
292- . get_poseidon_hash ( ) ,
293- ) )
283+ . iter ( ) ,
284+ )
285+ . chain (
286+ & Felt :: try_from ( & partial_block_hash_components. starknet_version )
287+ . expect ( "Expect ASCII version" ) ,
288+ )
289+ . chain ( & Felt :: ZERO )
290+ . chain ( & previous_block_hash. 0 ) ;
291+
292+ // SNIP-35: include fee_proposal in the hash chain only for V0_14_3 and later.
293+ if block_hash_version >= BlockHashVersion :: V0_14_3 {
294+ hash_chain = hash_chain. chain ( & partial_block_hash_components. fee_proposal . 0 . into ( ) ) ;
295+ }
296+
297+ Ok ( BlockHash ( hash_chain. get_poseidon_hash ( ) ) )
294298}
295299
296300/// Calculates the commitments of the transactions data for the block hash.
0 commit comments