@@ -206,7 +206,14 @@ impl<Db: Database> StateProofProvider for LatestStateProvider<Db> {
206206 addresses : Vec < ContractAddress > ,
207207 ) -> ProviderResult < katana_trie:: MultiProof > {
208208 let fork_point = self . fork_db . block_id ;
209- let latest_block_number = self . db . latest_number ( ) ?;
209+ let latest_block_number = match self . db . latest_number ( ) {
210+ Ok ( num) => num,
211+ // return the fork block number if local db return this error. this can only happen whne
212+ // the ForkedProvider is constructed without inserting any locally produced
213+ // blocks.
214+ Err ( ProviderError :: MissingLatestBlockNumber ) => self . fork_db . block_id ,
215+ Err ( err) => return Err ( err) ,
216+ } ;
210217
211218 if latest_block_number == fork_point {
212219 let result = self . fork_db . backend . get_contracts_proofs ( addresses, fork_point) ?;
@@ -224,7 +231,14 @@ impl<Db: Database> StateProofProvider for LatestStateProvider<Db> {
224231 storage_keys : Vec < StorageKey > ,
225232 ) -> ProviderResult < katana_trie:: MultiProof > {
226233 let fork_point = self . fork_db . block_id ;
227- let latest_block_number = self . db . latest_number ( ) ?;
234+ let latest_block_number = match self . db . latest_number ( ) {
235+ Ok ( num) => num,
236+ // return the fork block number if local db return this error. this can only happen whne
237+ // the ForkedProvider is constructed without inserting any locally produced
238+ // blocks.
239+ Err ( ProviderError :: MissingLatestBlockNumber ) => self . fork_db . block_id ,
240+ Err ( err) => return Err ( err) ,
241+ } ;
228242
229243 if latest_block_number == fork_point {
230244 let key = vec ! [ ContractStorageKeys { address, keys: storage_keys } ] ;
0 commit comments