snark/
snark_state.rs

1use serde::{Deserialize, Serialize};
2
3use crate::{user_command_verify::SnarkUserCommandVerifyState, SnarkConfig};
4
5use super::{block_verify::SnarkBlockVerifyState, work_verify::SnarkWorkVerifyState};
6
7#[derive(Serialize, Deserialize, Debug, Clone)]
8pub struct SnarkState {
9    pub block_verify: SnarkBlockVerifyState,
10    pub work_verify: SnarkWorkVerifyState,
11    pub user_command_verify: SnarkUserCommandVerifyState,
12}
13
14impl SnarkState {
15    pub fn new(config: SnarkConfig) -> Self {
16        Self {
17            block_verify: SnarkBlockVerifyState::new(
18                config.block_verifier_index,
19                config.block_verifier_srs,
20            ),
21            work_verify: SnarkWorkVerifyState::new(
22                config.work_verifier_index.clone(),
23                config.work_verifier_srs.clone(),
24            ),
25            user_command_verify: SnarkUserCommandVerifyState::new(
26                config.work_verifier_index,
27                config.work_verifier_srs,
28            ),
29        }
30    }
31}