This commit is contained in:
wborgeaud 2022-10-05 16:32:38 +02:00
parent 2982f45afa
commit 52c82f0c21
4 changed files with 15 additions and 13 deletions

View File

@ -11,7 +11,7 @@ mod validate_shape;
pub mod verifier;
pub mod witness_util;
#[derive(Debug, Clone, Eq, PartialEq)]
#[derive(Debug, Clone)]
pub struct FriConfig {
/// `rate = 2^{-rate_bits}`.
pub rate_bits: usize,
@ -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, Eq, PartialEq)]
#[derive(Debug)]
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, Eq, PartialEq)]
#[derive(Debug, Clone)]
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, Eq, PartialEq)]
#[derive(Clone, Debug)]
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, Eq, PartialEq)]
#[derive(Debug)]
pub struct CommonCircuitData<
F: RichField + Extendable<D>,
C: GenericConfig<D, F = F>,

View File

@ -16,13 +16,15 @@ use crate::plonk::proof::{OpeningSetTarget, ProofTarget, ProofWithPublicInputsTa
use crate::with_context;
impl<F: RichField + Extendable<D>, const D: usize> CircuitBuilder<F, D> {
/// Verify `proof0` if `condition` else verify `proof1`.
/// `proof0` and `proof1` are assumed to use the same `CommonCircuitData`.
pub fn conditionally_verify_proof<C: GenericConfig<D, F = F>>(
&mut self,
condition: BoolTarget,
proof_with_pis: ProofWithPublicInputsTarget<D>,
inner_verifier_data: &VerifierCircuitTarget,
dummy_proof_with_pis: ProofWithPublicInputsTarget<D>,
dummy_verifier_data: &VerifierCircuitTarget,
proof_with_pis0: ProofWithPublicInputsTarget<D>,
inner_verifier_data0: &VerifierCircuitTarget,
proof_with_pis1: ProofWithPublicInputsTarget<D>,
verifier_data1: &VerifierCircuitTarget,
inner_common_data: &CommonCircuitData<F, C, D>,
) where
C::Hasher: AlgebraicHasher<F>,
@ -37,7 +39,7 @@ impl<F: RichField + Extendable<D>, const D: usize> CircuitBuilder<F, D> {
opening_proof,
},
public_inputs,
} = proof_with_pis;
} = proof_with_pis0;
let ProofWithPublicInputsTarget {
proof:
ProofTarget {
@ -49,7 +51,7 @@ impl<F: RichField + Extendable<D>, const D: usize> CircuitBuilder<F, D> {
opening_proof: dummy_opening_proof,
},
public_inputs: dummy_public_inputs,
} = dummy_proof_with_pis;
} = proof_with_pis1;
let selected_proof = with_context!(self, "select proof", {
let selected_wires_cap = self.select_cap(condition, wires_cap, dummy_wires_cap);
@ -79,8 +81,8 @@ impl<F: RichField + Extendable<D>, const D: usize> CircuitBuilder<F, D> {
let selected_verifier_data = VerifierCircuitTarget {
constants_sigmas_cap: self.select_cap(
condition,
inner_verifier_data.constants_sigmas_cap.clone(),
dummy_verifier_data.constants_sigmas_cap.clone(),
inner_verifier_data0.constants_sigmas_cap.clone(),
verifier_data1.constants_sigmas_cap.clone(),
),
};