1- use std:: collections:: HashMap ;
1+ use std:: collections:: { BTreeSet , HashMap } ;
22
33use apollo_committer_types:: committer_types:: {
4+ AccessedKeys ,
45 CommitBlockRequest ,
56 ReadPathsAndCommitBlockRequest ,
67 RevertBlockRequest ,
@@ -13,16 +14,12 @@ use starknet_api::hash::HashOutput;
1314use starknet_api:: state:: ThinStateDiff ;
1415use starknet_committer:: block_committer:: input:: {
1516 contract_address_into_node_index,
16- AccessedKeys ,
1717 StarknetStorageKey ,
1818 StarknetStorageValue ,
1919} ;
2020use starknet_committer:: db:: facts_db:: db:: { FactDbFilledNode , FactsNodeLayout } ;
21- use starknet_committer:: db:: forest_trait:: {
22- EmptyInitialReadContext ,
23- ForestReader ,
24- ForestReaderWithWitnesses ,
25- } ;
21+ use starknet_committer:: db:: forest_trait:: forest_trait_witnesses:: ForestReaderWithWitnesses ;
22+ use starknet_committer:: db:: forest_trait:: { EmptyInitialReadContext , ForestReader } ;
2623use starknet_committer:: db:: index_db:: IndexDbReadContext ;
2724use starknet_committer:: db:: trie_traversal:: fetch_patricia_paths;
2825use starknet_committer:: hash_function:: hash:: TreeHashFunctionImpl ;
@@ -80,12 +77,12 @@ fn accessed_storage_key_2() -> StarknetStorageKey {
8077
8178fn accessed_keys ( ) -> AccessedKeys {
8279 AccessedKeys {
83- class_hashes : vec ! [ accessed_class_hash( ) ] ,
84- contract_addresses : vec ! [ accessed_contract_1( ) , accessed_contract_2( ) ] ,
85- contract_storage_keys : HashMap :: from ( [
86- ( accessed_contract_1 ( ) , vec ! [ accessed_storage_key_1( ) ] ) ,
87- ( accessed_contract_2 ( ) , vec ! [ accessed_storage_key_2( ) ] ) ,
80+ storage_keys : BTreeSet :: from ( [
81+ ( accessed_contract_1 ( ) , accessed_storage_key_1 ( ) . 0 ) ,
82+ ( accessed_contract_2 ( ) , accessed_storage_key_2 ( ) . 0 ) ,
8883 ] ) ,
84+ accessed_contracts : BTreeSet :: from ( [ accessed_contract_1 ( ) , accessed_contract_2 ( ) ] ) ,
85+ accessed_class_hashes : BTreeSet :: from ( [ accessed_class_hash ( ) ] ) ,
8986 }
9087}
9188
@@ -447,7 +444,7 @@ async fn verify_witness_patricia_paths(
447444 let contract_root_hashes = [ HashOutput :: ROOT_OF_EMPTY_TREE , contracts_trie_root] ;
448445
449446 let mut class_leaf_indices: Vec < NodeIndex > =
450- accessed_keys. class_hashes . iter ( ) . map ( class_hash_into_node_index) . collect ( ) ;
447+ accessed_keys. accessed_class_hashes . iter ( ) . map ( class_hash_into_node_index) . collect ( ) ;
451448 verify_preimage_map_paths_exist :: < CommitterCompiledClassHash > (
452449 & patricia_proofs. classes_trie_proof ,
453450 & class_root_hashes,
@@ -458,7 +455,7 @@ async fn verify_witness_patricia_paths(
458455 . await ;
459456
460457 let mut contract_leaf_indices: Vec < NodeIndex > =
461- accessed_keys. contract_addresses . iter ( ) . map ( contract_address_into_node_index) . collect ( ) ;
458+ accessed_keys. accessed_contracts . iter ( ) . map ( contract_address_into_node_index) . collect ( ) ;
462459 verify_preimage_map_paths_exist :: < ContractState > (
463460 & patricia_proofs. contracts_trie_proof . nodes ,
464461 & contract_root_hashes,
@@ -471,7 +468,7 @@ async fn verify_witness_patricia_paths(
471468 )
472469 . await ;
473470
474- for contract_address in & accessed_keys. contract_addresses {
471+ for contract_address in & accessed_keys. accessed_contracts {
475472 let storage_proof = patricia_proofs
476473 . contracts_trie_storage_proofs
477474 . get ( contract_address)
@@ -481,10 +478,13 @@ async fn verify_witness_patricia_paths(
481478 . leaves
482479 . get ( contract_address)
483480 . unwrap_or_else ( || panic ! ( "missing contracts trie leaf for {contract_address:?}" ) ) ;
484- let storage_keys = accessed_keys
485- . contract_storage_keys
486- . get ( contract_address)
487- . unwrap_or_else ( || panic ! ( "missing accessed storage keys for {contract_address:?}" ) ) ;
481+ let storage_keys: Vec < _ > = accessed_keys
482+ . storage_keys
483+ . iter ( )
484+ . filter ( |( address, _) | address == contract_address)
485+ . map ( |( _, key) | StarknetStorageKey ( * key) )
486+ . collect ( ) ;
487+ assert ! ( !storage_keys. is_empty( ) , "missing accessed storage keys for {contract_address:?}" ) ;
488488 let mut storage_leaf_indices: Vec < NodeIndex > =
489489 storage_keys. iter ( ) . map ( NodeIndex :: from) . collect ( ) ;
490490 let storage_root_hashes =
0 commit comments