From 4cc2fdb8c50022bf2ea3c5e7f87d68cd759fb7ca Mon Sep 17 00:00:00 2001 From: wborgeaud Date: Fri, 7 Oct 2022 10:24:11 +0200 Subject: [PATCH] Implement Eq for CommonCircuitData --- plonky2/src/fri/mod.rs | 2 +- plonky2/src/gates/selectors.rs | 2 +- plonky2/src/plonk/circuit_data.rs | 4 ++-- plonky2/src/plonk/conditional_recursive_verifier.rs | 13 +++++++++++-- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/plonky2/src/fri/mod.rs b/plonky2/src/fri/mod.rs index 5eaf012e..38286312 100644 --- a/plonky2/src/fri/mod.rs +++ b/plonky2/src/fri/mod.rs @@ -50,7 +50,7 @@ impl FriConfig { /// FRI parameters, including generated parameters which are specific to an instance size, in /// contrast to `FriConfig` which is user-specified and independent of instance size. -#[derive(Debug)] +#[derive(Debug, Eq, PartialEq)] pub struct FriParams { /// User-specified FRI configuration. pub config: FriConfig, diff --git a/plonky2/src/gates/selectors.rs b/plonky2/src/gates/selectors.rs index fff5d967..6cea86a7 100644 --- a/plonky2/src/gates/selectors.rs +++ b/plonky2/src/gates/selectors.rs @@ -9,7 +9,7 @@ use crate::hash::hash_types::RichField; /// Placeholder value to indicate that a gate doesn't use a selector polynomial. pub(crate) const UNUSED_SELECTOR: usize = u32::MAX as usize; -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Eq, PartialEq)] pub(crate) struct SelectorsInfo { pub(crate) selector_indices: Vec, pub(crate) groups: Vec>, diff --git a/plonky2/src/plonk/circuit_data.rs b/plonky2/src/plonk/circuit_data.rs index f2363f41..c22eae3e 100644 --- a/plonky2/src/plonk/circuit_data.rs +++ b/plonky2/src/plonk/circuit_data.rs @@ -29,7 +29,7 @@ use crate::plonk::prover::prove; use crate::plonk::verifier::verify; use crate::util::timing::TimingTree; -#[derive(Clone, Debug)] +#[derive(Clone, Debug, Eq, PartialEq)] pub struct CircuitConfig { pub num_wires: usize, pub num_routed_wires: usize, @@ -239,7 +239,7 @@ pub struct VerifierOnlyCircuitData, const D: usize> { } /// Circuit data required by both the prover and the verifier. -#[derive(Debug)] +#[derive(Debug, Eq, PartialEq)] pub struct CommonCircuitData< F: RichField + Extendable, C: GenericConfig, diff --git a/plonky2/src/plonk/conditional_recursive_verifier.rs b/plonky2/src/plonk/conditional_recursive_verifier.rs index 3222dfef..e0a5116f 100644 --- a/plonky2/src/plonk/conditional_recursive_verifier.rs +++ b/plonky2/src/plonk/conditional_recursive_verifier.rs @@ -10,15 +10,18 @@ use crate::hash::hash_types::{HashOutTarget, MerkleCapTarget, RichField}; use crate::hash::merkle_proofs::MerkleProofTarget; use crate::iop::ext_target::ExtensionTarget; use crate::iop::target::{BoolTarget, Target}; +use crate::iop::witness::PartialWitness; use crate::plonk::circuit_builder::CircuitBuilder; use crate::plonk::circuit_data::{CommonCircuitData, VerifierCircuitTarget}; -use crate::plonk::config::{AlgebraicHasher, GenericConfig}; +use crate::plonk::config::{AlgebraicHasher, GenericConfig, Hasher}; use crate::plonk::proof::{OpeningSetTarget, ProofTarget, ProofWithPublicInputsTarget}; use crate::with_context; pub fn dummy_proof, C: GenericConfig, const D: usize>( common_data: &CommonCircuitData, -) { +) where + [(); C::Hasher::HASH_SIZE]:, +{ let config = common_data.config.clone(); // let mut pw = PartialWitness::new(); @@ -30,6 +33,11 @@ pub fn dummy_proof, C: GenericConfig, con for gate in &common_data.gates { builder.add_gate_to_gate_set(gate.clone()); } + // builder.add_virtual_pub + for i in 0..common_data.num_public_inputs {} + let data = builder.build::(); + assert_eq!(&data.common, common_data); + let proof = data.prove(PartialWitness::new()); } impl, const D: usize> CircuitBuilder { @@ -326,6 +334,7 @@ mod tests { let data = builder.build::(); let proof = data.prove(pw)?; data.verify(proof.clone())?; + let dummy = dummy_proof(&data.common); let mut builder = CircuitBuilder::::new(config); let mut pw = PartialWitness::new();