Implement Eq for CommonCircuitData

This commit is contained in:
wborgeaud 2022-10-07 10:24:11 +02:00
parent 189719ffe9
commit 4cc2fdb8c5
4 changed files with 15 additions and 6 deletions

View File

@ -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,

View File

@ -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<usize>,
pub(crate) groups: Vec<Range<usize>>,

View File

@ -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<C: GenericConfig<D>, 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<D>,
C: GenericConfig<D, F = F>,

View File

@ -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<F: RichField + Extendable<D>, C: GenericConfig<D, F = F>, const D: usize>(
common_data: &CommonCircuitData<F, C, D>,
) {
) where
[(); C::Hasher::HASH_SIZE]:,
{
let config = common_data.config.clone();
// let mut pw = PartialWitness::new();
@ -30,6 +33,11 @@ pub fn dummy_proof<F: RichField + Extendable<D>, C: GenericConfig<D, F = F>, 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::<C>();
assert_eq!(&data.common, common_data);
let proof = data.prove(PartialWitness::new());
}
impl<F: RichField + Extendable<D>, const D: usize> CircuitBuilder<F, D> {
@ -326,6 +334,7 @@ mod tests {
let data = builder.build::<C>();
let proof = data.prove(pw)?;
data.verify(proof.clone())?;
let dummy = dummy_proof(&data.common);
let mut builder = CircuitBuilder::<F, D>::new(config);
let mut pw = PartialWitness::new();