diff --git a/src/fri/recursive_verifier.rs b/src/fri/recursive_verifier.rs index 5d62d26c..cc3a1ddf 100644 --- a/src/fri/recursive_verifier.rs +++ b/src/fri/recursive_verifier.rs @@ -177,6 +177,7 @@ impl, const D: usize> CircuitBuilder { x_index_bits: &[Target], proof: &FriInitialTreeProofTarget, initial_merkle_roots: &[MerkleCapTarget], + cap_index: Target, ) { for (i, ((evals, merkle_proof), root)) in proof .evals_proofs @@ -187,7 +188,13 @@ impl, const D: usize> CircuitBuilder { with_context!( self, &format!("verify {}'th initial Merkle proof", i), - self.verify_merkle_proof(evals.clone(), x_index_bits, root, merkle_proof) + self.verify_merkle_proof_with_cap_index( + evals.clone(), + x_index_bits, + cap_index, + root, + merkle_proof + ) ); } } @@ -297,6 +304,7 @@ impl, const D: usize> CircuitBuilder { &x_index_bits, &round_proof.initial_trees_proof, initial_merkle_roots, + cap_index ) ); let mut old_x_index_bits = Vec::new(); diff --git a/src/plonk/recursive_verifier.rs b/src/plonk/recursive_verifier.rs index 0c297c66..fac0ba3a 100644 --- a/src/plonk/recursive_verifier.rs +++ b/src/plonk/recursive_verifier.rs @@ -132,6 +132,7 @@ impl, const D: usize> CircuitBuilder { #[cfg(test)] mod tests { use anyhow::Result; + use log::info; use super::*; use crate::field::crandall_field::CrandallField; @@ -425,17 +426,17 @@ mod tests { const D: usize = 4; let config = CircuitConfig { num_wires: 126, - num_routed_wires: 33, + num_routed_wires: 37, security_bits: 128, rate_bits: 3, num_challenges: 3, zero_knowledge: false, - cap_height: 2, + cap_height: 3, fri_config: FriConfig { proof_of_work_bits: 1, reduction_arity_bits: vec![2, 2, 2, 2, 2, 2], num_query_rounds: 40, - cap_height: 2, + cap_height: 3, }, }; let (proof_with_pis, vd, cd) = { @@ -488,6 +489,8 @@ mod tests { builder.print_gate_counts(0); let data = builder.build(); let recursive_proof = data.prove(pw)?; + let proof_bytes = serde_cbor::to_vec(&recursive_proof).unwrap(); + info!("Proof length: {} bytes", proof_bytes.len()); verify(recursive_proof, &data.verifier_only, &data.common) } }