mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-05 23:33:07 +00:00
Recursively verify
This commit is contained in:
parent
e6490fdd11
commit
35b22974ed
@ -174,6 +174,8 @@ mod tests {
|
||||
use itertools::Itertools;
|
||||
use plonky2::field::polynomial::PolynomialValues;
|
||||
use plonky2::field::types::{Field, PrimeField64};
|
||||
use plonky2::iop::witness::PartialWitness;
|
||||
use plonky2::plonk::circuit_builder::CircuitBuilder;
|
||||
use plonky2::plonk::circuit_data::CircuitConfig;
|
||||
use plonky2::plonk::config::{GenericConfig, PoseidonGoldilocksConfig};
|
||||
use plonky2::util::timing::TimingTree;
|
||||
@ -750,29 +752,15 @@ mod tests {
|
||||
inner_config,
|
||||
circuit_config,
|
||||
)?;
|
||||
recursive_all_proof.verify()
|
||||
// let mut builder = CircuitBuilder::<F, D>::new(circuit_config);
|
||||
// let mut pw = PartialWitness::new();
|
||||
// let degree_bits = inner_proof.degree_bits(inner_config);
|
||||
// let nums_ctl_zs = inner_proof.nums_ctl_zs();
|
||||
// let pt = add_virtual_all_proof(
|
||||
// &mut builder,
|
||||
// &inner_all_stark,
|
||||
// inner_config,
|
||||
// °ree_bits,
|
||||
// &nums_ctl_zs,
|
||||
// );
|
||||
// set_all_proof_target(&mut pw, &pt, &inner_proof, builder.zero());
|
||||
//
|
||||
// verify_proof_circuit::<F, C, D>(&mut builder, inner_all_stark, pt, inner_config);
|
||||
//
|
||||
// if print_gate_counts {
|
||||
// builder.print_gate_counts(0);
|
||||
// }
|
||||
//
|
||||
// let data = builder.build::<C>();
|
||||
// let proof = data.prove(pw)?;
|
||||
// data.verify(proof)
|
||||
|
||||
let circuit_config = CircuitConfig::standard_recursion_config();
|
||||
let mut builder = CircuitBuilder::<F, D>::new(circuit_config);
|
||||
let mut pw = PartialWitness::new();
|
||||
recursive_all_proof.recursively_verify(&mut builder, &mut pw);
|
||||
|
||||
let data = builder.build::<C>();
|
||||
let proof = data.prove(pw)?;
|
||||
data.verify(proof)
|
||||
}
|
||||
|
||||
fn init_logger() {
|
||||
|
||||
@ -8,7 +8,7 @@ use plonky2::iop::ext_target::ExtensionTarget;
|
||||
use plonky2::iop::target::Target;
|
||||
use plonky2::iop::witness::{PartialWitness, Witness};
|
||||
use plonky2::plonk::circuit_builder::CircuitBuilder;
|
||||
use plonky2::plonk::circuit_data::{CircuitConfig, VerifierCircuitData};
|
||||
use plonky2::plonk::circuit_data::{CircuitConfig, VerifierCircuitData, VerifierCircuitTarget};
|
||||
use plonky2::plonk::config::Hasher;
|
||||
use plonky2::plonk::config::{AlgebraicHasher, GenericConfig};
|
||||
use plonky2::plonk::proof::ProofWithPublicInputs;
|
||||
@ -56,6 +56,28 @@ impl<F: RichField + Extendable<D>, C: GenericConfig<D, F = F>, const D: usize>
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn recursively_verify<W>(&self, builder: &mut CircuitBuilder<F, D>, pw: &mut W)
|
||||
where
|
||||
W: Witness<F>,
|
||||
[(); C::Hasher::HASH_SIZE]:,
|
||||
<C as GenericConfig<D>>::Hasher: AlgebraicHasher<F>,
|
||||
{
|
||||
for (proof, verifier_data) in &self.recursive_proofs {
|
||||
let pt = builder.add_virtual_proof_with_pis(&verifier_data.common);
|
||||
pw.set_proof_with_pis_target(&pt, &proof);
|
||||
let inner_data = VerifierCircuitTarget {
|
||||
constants_sigmas_cap: builder
|
||||
.add_virtual_cap(verifier_data.common.config.fri_config.cap_height),
|
||||
};
|
||||
pw.set_cap_target(
|
||||
&inner_data.constants_sigmas_cap,
|
||||
&verifier_data.verifier_only.constants_sigmas_cap,
|
||||
);
|
||||
builder.verify_proof(pt, &inner_data, &verifier_data.common);
|
||||
}
|
||||
// builder.print_gate_counts(0);
|
||||
}
|
||||
}
|
||||
|
||||
fn recursively_prove_stark_proof<
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user