-
Notifications
You must be signed in to change notification settings - Fork 32
/
Copy pathinput.rs
58 lines (50 loc) · 2.11 KB
/
input.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
use std::collections::HashMap;
use std::io::Write;
use std::{fs, path};
use cairo_vm::Felt252;
use serde::{Deserialize, Serialize};
use serde_with::serde_as;
use starknet_os_types::casm_contract_class::GenericCasmContractClass;
use starknet_os_types::deprecated_compiled_class::GenericDeprecatedCompiledClass;
use super::InternalTransaction;
use crate::config::StarknetGeneralConfig;
use crate::error::SnOsError;
use crate::starknet::business_logic::fact_state::contract_state_objects::ContractState;
use crate::starknet::starknet_storage::CommitmentInfo;
use crate::utils::Felt252HexNoPrefix;
#[derive(Debug, Deserialize, Serialize, Default)]
pub struct StarknetOsInput {
pub contract_state_commitment_info: CommitmentInfo,
pub contract_class_commitment_info: CommitmentInfo,
pub deprecated_compiled_classes: HashMap<Felt252, GenericDeprecatedCompiledClass>,
pub compiled_classes: HashMap<Felt252, GenericCasmContractClass>,
pub compiled_class_visited_pcs: HashMap<Felt252, Vec<Felt252>>,
pub contracts: HashMap<Felt252, ContractState>,
pub contract_address_to_class_hash: HashMap<Felt252, Felt252>,
pub class_hash_to_compiled_class_hash: HashMap<Felt252, Felt252>,
pub general_config: StarknetGeneralConfig,
pub transactions: Vec<InternalTransaction>,
/// A mapping from Cairo 1 declared class hashes to the hashes of the contract class components.
pub declared_class_hash_to_component_hashes: HashMap<Felt252, Vec<Felt252>>,
pub new_block_hash: Felt252,
pub prev_block_hash: Felt252,
pub full_output: bool,
}
impl StarknetOsInput {
pub fn load(path: &path::Path) -> Result<Self, SnOsError> {
let raw_input = fs::read_to_string(path)?;
let input = serde_json::from_str(&raw_input)?;
Ok(input)
}
pub fn dump(&self, path: &path::Path) -> Result<(), SnOsError> {
fs::File::create(path)?.write_all(&serde_json::to_vec(&self)?)?;
Ok(())
}
}
#[serde_as]
#[derive(Deserialize, Clone, Default, Debug, Serialize, PartialEq)]
pub struct StorageCommitment {
#[serde_as(as = "Felt252HexNoPrefix")]
pub root: Felt252,
pub height: usize,
}