mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-04 06:43:07 +00:00
Make proof_with_pis a reference
This commit is contained in:
parent
5ee283b267
commit
644a8a2336
@ -105,17 +105,14 @@ where
|
|||||||
{
|
{
|
||||||
let (inner_proof, inner_vd, inner_cd) = inner;
|
let (inner_proof, inner_vd, inner_cd) = inner;
|
||||||
let mut builder = CircuitBuilder::<F, D>::new(config.clone());
|
let mut builder = CircuitBuilder::<F, D>::new(config.clone());
|
||||||
let mut pw = PartialWitness::new();
|
|
||||||
let pt = builder.add_virtual_proof_with_pis::<InnerC>(inner_cd);
|
let pt = builder.add_virtual_proof_with_pis::<InnerC>(inner_cd);
|
||||||
pw.set_proof_with_pis_target(&pt, inner_proof);
|
|
||||||
|
|
||||||
let inner_data = VerifierCircuitTarget {
|
let inner_data = VerifierCircuitTarget {
|
||||||
constants_sigmas_cap: builder.add_virtual_cap(inner_cd.config.fri_config.cap_height),
|
constants_sigmas_cap: builder.add_virtual_cap(inner_cd.config.fri_config.cap_height),
|
||||||
circuit_digest: builder.add_virtual_hash(),
|
circuit_digest: builder.add_virtual_hash(),
|
||||||
};
|
};
|
||||||
pw.set_verifier_data_target(&inner_data, inner_vd);
|
|
||||||
|
|
||||||
builder.verify_proof::<InnerC>(pt, &inner_data, inner_cd);
|
builder.verify_proof::<InnerC>(&pt, &inner_data, inner_cd);
|
||||||
builder.print_gate_counts(0);
|
builder.print_gate_counts(0);
|
||||||
|
|
||||||
if let Some(min_degree_bits) = min_degree_bits {
|
if let Some(min_degree_bits) = min_degree_bits {
|
||||||
@ -131,6 +128,10 @@ where
|
|||||||
|
|
||||||
let data = builder.build::<C>();
|
let data = builder.build::<C>();
|
||||||
|
|
||||||
|
let mut pw = PartialWitness::new();
|
||||||
|
pw.set_proof_with_pis_target(&pt, inner_proof);
|
||||||
|
pw.set_verifier_data_target(&inner_data, inner_vd);
|
||||||
|
|
||||||
let mut timing = TimingTree::new("prove", Level::Debug);
|
let mut timing = TimingTree::new("prove", Level::Debug);
|
||||||
let proof = prove(&data.prover_only, &data.common, pw, &mut timing)?;
|
let proof = prove(&data.prover_only, &data.common, pw, &mut timing)?;
|
||||||
timing.print();
|
timing.print();
|
||||||
|
|||||||
@ -143,7 +143,7 @@ impl<F: RichField + Extendable<D>, const D: usize> CircuitBuilder<F, D> {
|
|||||||
),
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
self.verify_proof::<C>(selected_proof, &selected_verifier_data, inner_common_data);
|
self.verify_proof::<C>(&selected_proof, &selected_verifier_data, inner_common_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Conditionally verify a proof with a new generated dummy proof.
|
/// Conditionally verify a proof with a new generated dummy proof.
|
||||||
|
|||||||
@ -298,7 +298,7 @@ mod tests {
|
|||||||
constants_sigmas_cap: builder.add_virtual_cap(data.common.config.fri_config.cap_height),
|
constants_sigmas_cap: builder.add_virtual_cap(data.common.config.fri_config.cap_height),
|
||||||
circuit_digest: builder.add_virtual_hash(),
|
circuit_digest: builder.add_virtual_hash(),
|
||||||
};
|
};
|
||||||
builder.verify_proof::<C>(proof, &verifier_data, &data.common);
|
builder.verify_proof::<C>(&proof, &verifier_data, &data.common);
|
||||||
let data = builder.build::<C>();
|
let data = builder.build::<C>();
|
||||||
|
|
||||||
let config = CircuitConfig::standard_recursion_config();
|
let config = CircuitConfig::standard_recursion_config();
|
||||||
@ -308,7 +308,7 @@ mod tests {
|
|||||||
constants_sigmas_cap: builder.add_virtual_cap(data.common.config.fri_config.cap_height),
|
constants_sigmas_cap: builder.add_virtual_cap(data.common.config.fri_config.cap_height),
|
||||||
circuit_digest: builder.add_virtual_hash(),
|
circuit_digest: builder.add_virtual_hash(),
|
||||||
};
|
};
|
||||||
builder.verify_proof::<C>(proof, &verifier_data, &data.common);
|
builder.verify_proof::<C>(&proof, &verifier_data, &data.common);
|
||||||
while builder.num_gates() < 1 << 12 {
|
while builder.num_gates() < 1 << 12 {
|
||||||
builder.add_gate(NoopGate, vec![]);
|
builder.add_gate(NoopGate, vec![]);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,7 +16,7 @@ impl<F: RichField + Extendable<D>, const D: usize> CircuitBuilder<F, D> {
|
|||||||
/// Recursively verifies an inner proof.
|
/// Recursively verifies an inner proof.
|
||||||
pub fn verify_proof<C: GenericConfig<D, F = F>>(
|
pub fn verify_proof<C: GenericConfig<D, F = F>>(
|
||||||
&mut self,
|
&mut self,
|
||||||
proof_with_pis: ProofWithPublicInputsTarget<D>,
|
proof_with_pis: &ProofWithPublicInputsTarget<D>,
|
||||||
inner_verifier_data: &VerifierCircuitTarget,
|
inner_verifier_data: &VerifierCircuitTarget,
|
||||||
inner_common_data: &CommonCircuitData<F, D>,
|
inner_common_data: &CommonCircuitData<F, D>,
|
||||||
) where
|
) where
|
||||||
@ -36,7 +36,7 @@ impl<F: RichField + Extendable<D>, const D: usize> CircuitBuilder<F, D> {
|
|||||||
);
|
);
|
||||||
|
|
||||||
self.verify_proof_with_challenges::<C>(
|
self.verify_proof_with_challenges::<C>(
|
||||||
proof_with_pis.proof,
|
&proof_with_pis.proof,
|
||||||
public_inputs_hash,
|
public_inputs_hash,
|
||||||
challenges,
|
challenges,
|
||||||
inner_verifier_data,
|
inner_verifier_data,
|
||||||
@ -47,7 +47,7 @@ impl<F: RichField + Extendable<D>, const D: usize> CircuitBuilder<F, D> {
|
|||||||
/// Recursively verifies an inner proof.
|
/// Recursively verifies an inner proof.
|
||||||
fn verify_proof_with_challenges<C: GenericConfig<D, F = F>>(
|
fn verify_proof_with_challenges<C: GenericConfig<D, F = F>>(
|
||||||
&mut self,
|
&mut self,
|
||||||
proof: ProofTarget<D>,
|
proof: &ProofTarget<D>,
|
||||||
public_inputs_hash: HashOutTarget,
|
public_inputs_hash: HashOutTarget,
|
||||||
challenges: ProofChallengesTarget<D>,
|
challenges: ProofChallengesTarget<D>,
|
||||||
inner_verifier_data: &VerifierCircuitTarget,
|
inner_verifier_data: &VerifierCircuitTarget,
|
||||||
@ -106,9 +106,9 @@ impl<F: RichField + Extendable<D>, const D: usize> CircuitBuilder<F, D> {
|
|||||||
|
|
||||||
let merkle_caps = &[
|
let merkle_caps = &[
|
||||||
inner_verifier_data.constants_sigmas_cap.clone(),
|
inner_verifier_data.constants_sigmas_cap.clone(),
|
||||||
proof.wires_cap,
|
proof.wires_cap.clone(),
|
||||||
proof.plonk_zs_partial_products_cap,
|
proof.plonk_zs_partial_products_cap.clone(),
|
||||||
proof.quotient_polys_cap,
|
proof.quotient_polys_cap.clone(),
|
||||||
];
|
];
|
||||||
|
|
||||||
let fri_instance = inner_common_data.get_fri_instance_target(self, challenges.plonk_zeta);
|
let fri_instance = inner_common_data.get_fri_instance_target(self, challenges.plonk_zeta);
|
||||||
@ -376,7 +376,7 @@ mod tests {
|
|||||||
);
|
);
|
||||||
pw.set_hash_target(inner_data.circuit_digest, inner_vd.circuit_digest);
|
pw.set_hash_target(inner_data.circuit_digest, inner_vd.circuit_digest);
|
||||||
|
|
||||||
builder.verify_proof::<InnerC>(pt, &inner_data, &inner_cd);
|
builder.verify_proof::<InnerC>(&pt, &inner_data, &inner_cd);
|
||||||
|
|
||||||
if print_gate_counts {
|
if print_gate_counts {
|
||||||
builder.print_gate_counts(0);
|
builder.print_gate_counts(0);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user