mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-02-13 18:33:27 +00:00
Implement Eq for CommonCircuitData
This commit is contained in:
parent
189719ffe9
commit
4cc2fdb8c5
@ -50,7 +50,7 @@ impl FriConfig {
|
|||||||
|
|
||||||
/// FRI parameters, including generated parameters which are specific to an instance size, in
|
/// 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.
|
/// contrast to `FriConfig` which is user-specified and independent of instance size.
|
||||||
#[derive(Debug)]
|
#[derive(Debug, Eq, PartialEq)]
|
||||||
pub struct FriParams {
|
pub struct FriParams {
|
||||||
/// User-specified FRI configuration.
|
/// User-specified FRI configuration.
|
||||||
pub config: FriConfig,
|
pub config: FriConfig,
|
||||||
|
|||||||
@ -9,7 +9,7 @@ use crate::hash::hash_types::RichField;
|
|||||||
/// Placeholder value to indicate that a gate doesn't use a selector polynomial.
|
/// Placeholder value to indicate that a gate doesn't use a selector polynomial.
|
||||||
pub(crate) const UNUSED_SELECTOR: usize = u32::MAX as usize;
|
pub(crate) const UNUSED_SELECTOR: usize = u32::MAX as usize;
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone, Eq, PartialEq)]
|
||||||
pub(crate) struct SelectorsInfo {
|
pub(crate) struct SelectorsInfo {
|
||||||
pub(crate) selector_indices: Vec<usize>,
|
pub(crate) selector_indices: Vec<usize>,
|
||||||
pub(crate) groups: Vec<Range<usize>>,
|
pub(crate) groups: Vec<Range<usize>>,
|
||||||
|
|||||||
@ -29,7 +29,7 @@ use crate::plonk::prover::prove;
|
|||||||
use crate::plonk::verifier::verify;
|
use crate::plonk::verifier::verify;
|
||||||
use crate::util::timing::TimingTree;
|
use crate::util::timing::TimingTree;
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug, Eq, PartialEq)]
|
||||||
pub struct CircuitConfig {
|
pub struct CircuitConfig {
|
||||||
pub num_wires: usize,
|
pub num_wires: usize,
|
||||||
pub num_routed_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.
|
/// Circuit data required by both the prover and the verifier.
|
||||||
#[derive(Debug)]
|
#[derive(Debug, Eq, PartialEq)]
|
||||||
pub struct CommonCircuitData<
|
pub struct CommonCircuitData<
|
||||||
F: RichField + Extendable<D>,
|
F: RichField + Extendable<D>,
|
||||||
C: GenericConfig<D, F = F>,
|
C: GenericConfig<D, F = F>,
|
||||||
|
|||||||
@ -10,15 +10,18 @@ use crate::hash::hash_types::{HashOutTarget, MerkleCapTarget, RichField};
|
|||||||
use crate::hash::merkle_proofs::MerkleProofTarget;
|
use crate::hash::merkle_proofs::MerkleProofTarget;
|
||||||
use crate::iop::ext_target::ExtensionTarget;
|
use crate::iop::ext_target::ExtensionTarget;
|
||||||
use crate::iop::target::{BoolTarget, Target};
|
use crate::iop::target::{BoolTarget, Target};
|
||||||
|
use crate::iop::witness::PartialWitness;
|
||||||
use crate::plonk::circuit_builder::CircuitBuilder;
|
use crate::plonk::circuit_builder::CircuitBuilder;
|
||||||
use crate::plonk::circuit_data::{CommonCircuitData, VerifierCircuitTarget};
|
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::plonk::proof::{OpeningSetTarget, ProofTarget, ProofWithPublicInputsTarget};
|
||||||
use crate::with_context;
|
use crate::with_context;
|
||||||
|
|
||||||
pub fn dummy_proof<F: RichField + Extendable<D>, C: GenericConfig<D, F = F>, const D: usize>(
|
pub fn dummy_proof<F: RichField + Extendable<D>, C: GenericConfig<D, F = F>, const D: usize>(
|
||||||
common_data: &CommonCircuitData<F, C, D>,
|
common_data: &CommonCircuitData<F, C, D>,
|
||||||
) {
|
) where
|
||||||
|
[(); C::Hasher::HASH_SIZE]:,
|
||||||
|
{
|
||||||
let config = common_data.config.clone();
|
let config = common_data.config.clone();
|
||||||
|
|
||||||
// let mut pw = PartialWitness::new();
|
// 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 {
|
for gate in &common_data.gates {
|
||||||
builder.add_gate_to_gate_set(gate.clone());
|
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> {
|
impl<F: RichField + Extendable<D>, const D: usize> CircuitBuilder<F, D> {
|
||||||
@ -326,6 +334,7 @@ mod tests {
|
|||||||
let data = builder.build::<C>();
|
let data = builder.build::<C>();
|
||||||
let proof = data.prove(pw)?;
|
let proof = data.prove(pw)?;
|
||||||
data.verify(proof.clone())?;
|
data.verify(proof.clone())?;
|
||||||
|
let dummy = dummy_proof(&data.common);
|
||||||
|
|
||||||
let mut builder = CircuitBuilder::<F, D>::new(config);
|
let mut builder = CircuitBuilder::<F, D>::new(config);
|
||||||
let mut pw = PartialWitness::new();
|
let mut pw = PartialWitness::new();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user