Skip to content

Commit

Permalink
fix(starknet_gateway): sync state reader behavior same as rpc (starkw…
Browse files Browse the repository at this point in the history
…are-libs#3123)

Sync state reader: get_storage_at, get_class_hash_at and get_nonce_at
now return default values if the contract was not deployed. This
behavior has been previously expected from rpc_state_reader.
  • Loading branch information
noamsp-starkware authored Jan 7, 2025
1 parent 35dfd3c commit ac90bf6
Showing 1 changed file with 24 additions and 9 deletions.
33 changes: 24 additions & 9 deletions crates/starknet_gateway/src/sync_state_reader.rs
Original file line number Diff line number Diff line change
Expand Up @@ -74,18 +74,28 @@ impl BlockifierStateReader for SyncStateReader {
self.block_number,
contract_address,
key,
))
.map_err(|e| StateError::StateReadError(e.to_string()))?;
));

Ok(res)
match res {
Ok(value) => Ok(value),
Err(StateSyncClientError::StateSyncError(StateSyncError::ContractNotFound(_))) => {
Ok(Felt::default())
}
Err(e) => Err(StateError::StateReadError(e.to_string())),
}
}

fn get_nonce_at(&self, contract_address: ContractAddress) -> StateResult<Nonce> {
let res =
block_on(self.state_sync_client.get_nonce_at(self.block_number, contract_address))
.map_err(|e| StateError::StateReadError(e.to_string()))?;
block_on(self.state_sync_client.get_nonce_at(self.block_number, contract_address));

Ok(res)
match res {
Ok(value) => Ok(value),
Err(StateSyncClientError::StateSyncError(StateSyncError::ContractNotFound(_))) => {
Ok(Nonce::default())
}
Err(e) => Err(StateError::StateReadError(e.to_string())),
}
}

fn get_compiled_class(&self, class_hash: ClassHash) -> StateResult<RunnableCompiledClass> {
Expand All @@ -106,10 +116,15 @@ impl BlockifierStateReader for SyncStateReader {

fn get_class_hash_at(&self, contract_address: ContractAddress) -> StateResult<ClassHash> {
let res =
block_on(self.state_sync_client.get_class_hash_at(self.block_number, contract_address))
.map_err(|e| StateError::StateReadError(e.to_string()))?;
block_on(self.state_sync_client.get_class_hash_at(self.block_number, contract_address));

Ok(res)
match res {
Ok(value) => Ok(value),
Err(StateSyncClientError::StateSyncError(StateSyncError::ContractNotFound(_))) => {
Ok(ClassHash::default())
}
Err(e) => Err(StateError::StateReadError(e.to_string())),
}
}

fn get_compiled_class_hash(&self, _class_hash: ClassHash) -> StateResult<CompiledClassHash> {
Expand Down

0 comments on commit ac90bf6

Please sign in to comment.