From 3cd337ab158ff7032c35ca88bc7dfdfac795bb88 Mon Sep 17 00:00:00 2001 From: wborgeaud Date: Tue, 11 Oct 2022 11:10:58 +0200 Subject: [PATCH] Comments --- plonky2/src/plonk/conditional_recursive_verifier.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/plonky2/src/plonk/conditional_recursive_verifier.rs b/plonky2/src/plonk/conditional_recursive_verifier.rs index c8c08e2c..a081efa8 100644 --- a/plonky2/src/plonk/conditional_recursive_verifier.rs +++ b/plonky2/src/plonk/conditional_recursive_verifier.rs @@ -20,6 +20,7 @@ use crate::plonk::proof::{ }; use crate::with_context; +/// Generate a proof having a given `CommonCircuitData`. pub fn dummy_proof, C: GenericConfig, const D: usize>( common_data: &CommonCircuitData, ) -> Result<(ProofWithPublicInputs, CircuitData)> @@ -31,6 +32,7 @@ where let mut pw = PartialWitness::new(); let mut builder = CircuitBuilder::::new(config); let degree = 1 << common_data.degree_bits; + for _ in 0..degree - 10 { builder.add_gate(NoopGate, vec![]); } @@ -41,9 +43,11 @@ where let t = builder.add_virtual_public_input(); pw.set_target(t, F::ZERO); } + let data = builder.build::(); assert_eq!(&data.common, common_data); let proof = data.prove(pw)?; + Ok((proof, data)) } @@ -334,6 +338,7 @@ mod tests { type F = >::F; let config = CircuitConfig::standard_recursion_config(); + // Generate proof. let mut builder = CircuitBuilder::::new(config.clone()); let mut pw = PartialWitness::new(); let t = builder.add_virtual_target(); @@ -346,15 +351,17 @@ mod tests { let data = builder.build::(); let proof = data.prove(pw)?; data.verify(proof.clone())?; + + // Generate dummy proof with the same `CommonCircuitData`. let (dummy_proof, dummy_data) = dummy_proof(&data.common)?; + // Conditionally verify the two proofs. let mut builder = CircuitBuilder::::new(config); let mut pw = PartialWitness::new(); let pt = builder.add_virtual_proof_with_pis(&data.common); pw.set_proof_with_pis_target(&pt, &proof); let dummy_pt = builder.add_virtual_proof_with_pis(&data.common); pw.set_proof_with_pis_target(&dummy_pt, &dummy_proof); - let inner_data = VerifierCircuitTarget { constants_sigmas_cap: builder.add_virtual_cap(data.common.config.fri_config.cap_height), circuit_digest: builder.add_virtual_hash(),