openvm_native_recursion/stark/
outer.rs
1use openvm_native_compiler::ir::Builder;
2use openvm_stark_backend::proof::Proof;
3use openvm_stark_sdk::config::{
4 baby_bear_poseidon2_root::BabyBearPoseidon2RootConfig, FriParameters,
5};
6
7use crate::{
8 challenger::multi_field32::MultiField32ChallengerVariable, config::outer::OuterConfig,
9 fri::TwoAdicFriPcsVariable, halo2::DslOperations, stark::StarkVerifier,
10 types::MultiStarkVerificationAdvice, utils::const_fri_config, witness::Witnessable,
11};
12
13pub fn build_circuit_verify_operations(
14 advice: MultiStarkVerificationAdvice<OuterConfig>,
15 fri_params: &FriParameters,
16 proof: &Proof<BabyBearPoseidon2RootConfig>,
17) -> DslOperations<OuterConfig> {
18 let mut builder = Builder::<OuterConfig>::default();
19 builder.flags.static_only = true;
20
21 builder.cycle_tracker_start("VerifierProgram");
22 let input = proof.read(&mut builder);
23
24 let pcs = TwoAdicFriPcsVariable {
25 config: const_fri_config(&mut builder, fri_params),
26 };
27 StarkVerifier::verify::<MultiField32ChallengerVariable<_>>(&mut builder, &pcs, &advice, &input);
28
29 builder.cycle_tracker_end("VerifierProgram");
30 DslOperations {
31 operations: builder.operations,
32 num_public_values: 0,
33 }
34}