openvm_continuations/verifier/root/
vars.rs1use openvm_native_compiler::prelude::*;
2use openvm_native_recursion::{hints::Hintable, vars::StarkProofVariable};
3use openvm_stark_sdk::openvm_stark_backend::{config::Val, proof::Proof};
4
5use crate::{verifier::root::types::RootVmVerifierInput, C, SC};
6
7#[derive(DslVariable, Clone)]
8pub struct RootVmVerifierInputVariable<C: Config> {
9 pub proofs: Array<C, StarkProofVariable<C>>,
11 pub public_values: Array<C, Felt<C::F>>,
13}
14
15impl Hintable<C> for RootVmVerifierInput<SC> {
16 type HintVariable = RootVmVerifierInputVariable<C>;
17
18 fn read(builder: &mut Builder<C>) -> Self::HintVariable {
19 let proofs = Vec::<Proof<SC>>::read(builder);
20 let public_values = Vec::<Val<SC>>::read(builder);
21 Self::HintVariable {
22 proofs,
23 public_values,
24 }
25 }
26
27 fn write(&self) -> Vec<Vec<<C as Config>::N>> {
28 let mut stream = self.proofs.write();
29 stream.extend(self.public_values.write());
30 stream
31 }
32}