arnaucube
arnaucube/sonobe-playgroundPublic Self-hosted repository
sonobe-playground/src/scenario_config.rs
src/scenario_config.rsRaw
 1use ark_bn254::Fr;
 2use experimental_frontends::circom::CircomFCircuit;
 3use num_traits::Zero;
 4use tracing::info_span;
 5
 6use crate::{
 7    circuit::{create_circuit, STEP_INPUT_WIDTH},
 8    input::prepare_input,
 9};
10
11#[derive(Clone)]
12pub struct ScenarioConfig {
13    pub num_inputs: usize,
14    pub start_ivc_state: Vec<Fr>,
15    pub circuit: CircomFCircuit<Fr, STEP_INPUT_WIDTH>,
16    input: Vec<Vec<Fr>>,
17}
18
19impl ScenarioConfig {
20    pub fn new() -> Self {
21        Self {
22            num_inputs: 360,
23            start_ivc_state: vec![Fr::zero(); 2],
24            circuit: info_span!("Prepare circuit").in_scope(create_circuit),
25            input: info_span!("Prepare input").in_scope(prepare_input),
26        }
27    }
28
29    pub fn input(&self) -> &[Vec<Fr>] {
30        &self.input[..self.num_inputs]
31    }
32}