Skip to content

Commit c7c4b2e

Browse files
starknet_os_runner: class provider
1 parent 35ccc69 commit c7c4b2e

File tree

5 files changed

+35
-0
lines changed

5 files changed

+35
-0
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/starknet_os_runner/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ starknet-rust-core.workspace = true
1515
starknet_api.workspace = true
1616
starknet_os.workspace = true
1717
starknet_patricia.workspace = true
18+
cairo-lang-starknet-classes.workspace = true
1819
thiserror.workspace = true
1920
tokio.workspace = true
2021
url.workspace = true
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
use std::collections::{BTreeMap, HashSet};
2+
3+
use cairo_lang_starknet_classes::casm_contract_class::CasmContractClass;
4+
use starknet_api::core::{ClassHash, CompiledClassHash};
5+
use starknet_api::deprecated_contract_class::ContractClass;
6+
7+
use crate::errors::ClassesProviderError;
8+
9+
/// The classes required for a Starknet OS run.
10+
/// Matches the fields in `StarknetOsInput` and `OsBlockInput`.
11+
pub struct ClassesInput {
12+
/// Deprecated (Cairo 0) contract classes.
13+
/// Maps ClassHash to the contract class definition.
14+
pub deprecated_compiled_classes: BTreeMap<ClassHash, ContractClass>,
15+
/// Cairo 1+ contract classes (CASM).
16+
/// Maps CompiledClassHash to the CASM contract class definition.
17+
pub compiled_classes: BTreeMap<CompiledClassHash, CasmContractClass>,
18+
}
19+
20+
pub trait ClassesProvider {
21+
/// Fetches all classes required for the OS run based on the executed class hashes.
22+
fn get_classes(
23+
&self,
24+
executed_class_hashes: HashSet<ClassHash>,
25+
) -> Result<ClassesInput, ClassesProviderError>;
26+
}

crates/starknet_os_runner/src/errors.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,9 @@ pub enum ProofProviderError {
2626
#[error("Invalid RPC proof response: {0}")]
2727
InvalidProofResponse(String),
2828
}
29+
30+
#[derive(Debug, Error)]
31+
pub enum ClassesProviderError {
32+
#[error("Failed to get classes: {0}")]
33+
GetClassesError(String),
34+
}

crates/starknet_os_runner/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
pub mod classes_provider;
12
pub mod errors;
23
pub mod storage_proofs;
34
pub mod virtual_block_executor;

0 commit comments

Comments
 (0)