diff --git a/starky/src/recursive_verifier.rs b/starky/src/recursive_verifier.rs index ea7ffb70..c1071b5a 100644 --- a/starky/src/recursive_verifier.rs +++ b/starky/src/recursive_verifier.rs @@ -187,24 +187,29 @@ pub fn add_virtual_stark_proof, S: Stark, con let fri_params = config.fri_params(degree_bits); let cap_height = fri_params.config.cap_height; - let num_leaves_per_oracle = &[ - S::COLUMNS, - // TODO: permutation polys - stark.quotient_degree_factor() * config.num_challenges, - ]; - - let permutation_zs_cap = if stark.uses_permutation_args() { - Some(builder.add_virtual_cap(cap_height)) + let num_leaves_per_oracle = if stark.uses_permutation_args() { + vec![ + S::COLUMNS, + stark.num_permutation_batches(config), + stark.quotient_degree_factor() * config.num_challenges, + ] } else { - None + vec![ + S::COLUMNS, + stark.quotient_degree_factor() * config.num_challenges, + ] }; + let permutation_zs_cap = stark + .uses_permutation_args() + .then(|| builder.add_virtual_cap(cap_height)); + StarkProofTarget { trace_cap: builder.add_virtual_cap(cap_height), permutation_zs_cap, quotient_polys_cap: builder.add_virtual_cap(cap_height), openings: add_stark_opening_set::(builder, stark, config), - opening_proof: builder.add_virtual_fri_proof(num_leaves_per_oracle, &fri_params), + opening_proof: builder.add_virtual_fri_proof(&num_leaves_per_oracle, &fri_params), } } @@ -217,8 +222,10 @@ fn add_stark_opening_set, S: Stark, const D: StarkOpeningSetTarget { local_values: builder.add_virtual_extension_targets(S::COLUMNS), next_values: builder.add_virtual_extension_targets(S::COLUMNS), - permutation_zs: vec![/*TODO*/], - permutation_zs_right: vec![/*TODO*/], + permutation_zs: builder + .add_virtual_extension_targets(stark.num_permutation_batches(config)), + permutation_zs_right: builder + .add_virtual_extension_targets(stark.num_permutation_batches(config)), quotient_polys: builder .add_virtual_extension_targets(stark.quotient_degree_factor() * num_challenges), }