Skip to content

Commit 20aa4d0

Browse files
starknet_os_runner: class provider
1 parent 1834298 commit 20aa4d0

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
@@ -9,6 +9,7 @@ description = "Runs transactions through the Starknet OS and returns Cairo PIE a
99
[dependencies]
1010
blockifier.workspace = true
1111
blockifier_reexecution.workspace = true
12+
cairo-lang-starknet-classes.workspace = true
1213
indexmap.workspace = true
1314
starknet-rust.workspace = true
1415
starknet-rust-core.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)