mirror of
https://github.com/codex-storage/proof-aggregation.git
synced 2025-02-13 15:16:58 +00:00
common data fn for inner-circuit
This commit is contained in:
parent
b69b682df2
commit
3f2d8cc88c
@ -1,6 +1,7 @@
|
|||||||
use plonky2::iop::target::{BoolTarget, Target};
|
use plonky2::iop::target::{BoolTarget, Target};
|
||||||
use plonky2::iop::witness::PartialWitness;
|
use plonky2::iop::witness::PartialWitness;
|
||||||
use plonky2::plonk::circuit_builder::CircuitBuilder;
|
use plonky2::plonk::circuit_builder::CircuitBuilder;
|
||||||
|
use plonky2::plonk::circuit_data::CommonCircuitData;
|
||||||
use crate::recursion::params::{F,C,D};
|
use crate::recursion::params::{F,C,D};
|
||||||
|
|
||||||
/// InnerCircuit is the trait used to define the logic of the circuit and assign witnesses
|
/// InnerCircuit is the trait used to define the logic of the circuit and assign witnesses
|
||||||
@ -9,7 +10,7 @@ pub trait InnerCircuit<
|
|||||||
// TODO: make it generic for F and D ?
|
// TODO: make it generic for F and D ?
|
||||||
> {
|
> {
|
||||||
type Targets;
|
type Targets;
|
||||||
type Input;
|
type Input:Clone;
|
||||||
|
|
||||||
/// build the circuit logic and return targets to be assigned later
|
/// build the circuit logic and return targets to be assigned later
|
||||||
fn build(
|
fn build(
|
||||||
@ -30,4 +31,10 @@ pub trait InnerCircuit<
|
|||||||
fn get_pub_input_targets(
|
fn get_pub_input_targets(
|
||||||
targets: &Self::Targets,
|
targets: &Self::Targets,
|
||||||
) -> anyhow::Result<(Vec<Target>)>;
|
) -> anyhow::Result<(Vec<Target>)>;
|
||||||
|
|
||||||
|
/// from the set of the targets, return only the targets which are public
|
||||||
|
/// TODO: this can probably be replaced with enum for Public/Private targets
|
||||||
|
fn get_common_data(
|
||||||
|
&self
|
||||||
|
) -> anyhow::Result<(CommonCircuitData<F, D>)>;
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,12 @@
|
|||||||
pub mod inner_circuit;
|
pub mod inner_circuit;
|
||||||
pub mod simple_recursion;
|
pub mod simple_recursion;
|
||||||
pub mod simple_recursion2;
|
// pub mod simple_recursion2;
|
||||||
pub mod tree_recursion;
|
pub mod tree_recursion;
|
||||||
pub mod params;
|
pub mod params;
|
||||||
pub mod sampling_inner_circuit;
|
pub mod sampling_inner_circuit;
|
||||||
pub mod cyclic_recursion;
|
pub mod cyclic_recursion;
|
||||||
|
pub mod leaf_circuit;
|
||||||
|
|
||||||
|
pub mod tree_recursion2;
|
||||||
|
pub mod utils;
|
||||||
|
pub mod simple_tree_recursion;
|
@ -1,11 +1,11 @@
|
|||||||
use plonky2::iop::target::{BoolTarget, Target};
|
use plonky2::iop::target::Target;
|
||||||
use plonky2::iop::witness::PartialWitness;
|
use plonky2::iop::witness::PartialWitness;
|
||||||
use plonky2::plonk::circuit_builder::CircuitBuilder;
|
use plonky2::plonk::circuit_builder::CircuitBuilder;
|
||||||
|
use plonky2::plonk::circuit_data::{CircuitConfig, CommonCircuitData};
|
||||||
use crate::circuits::params::CircuitParams;
|
use crate::circuits::params::CircuitParams;
|
||||||
use crate::circuits::sample_cells::{SampleCircuit, SampleCircuitInput, SampleTargets};
|
use crate::circuits::sample_cells::{SampleCircuit, SampleCircuitInput, SampleTargets};
|
||||||
use crate::recursion::params::{D, F};
|
use crate::recursion::params::{D, F, C};
|
||||||
use crate::recursion::inner_circuit::InnerCircuit;
|
use crate::recursion::inner_circuit::InnerCircuit;
|
||||||
use crate::circuits::params;
|
|
||||||
|
|
||||||
/// recursion Inner circuit for the sampling circuit
|
/// recursion Inner circuit for the sampling circuit
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
@ -13,6 +13,15 @@ pub struct SamplingRecursion {
|
|||||||
pub sampling_circ: SampleCircuit<F,D>,
|
pub sampling_circ: SampleCircuit<F,D>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl SamplingRecursion {
|
||||||
|
pub fn new(circ_params: CircuitParams) -> Self{
|
||||||
|
let sampling_circ = SampleCircuit::new(circ_params);
|
||||||
|
Self{
|
||||||
|
sampling_circ,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Default for SamplingRecursion {
|
impl Default for SamplingRecursion {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self{
|
Self{
|
||||||
@ -45,4 +54,18 @@ impl InnerCircuit for SamplingRecursion{
|
|||||||
|
|
||||||
Ok(pub_targets)
|
Ok(pub_targets)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// return the common circuit data for the sampling circuit
|
||||||
|
/// uses the `standard_recursion_config`
|
||||||
|
fn get_common_data(&self) -> anyhow::Result<(CommonCircuitData<F, D>)> {
|
||||||
|
let config = CircuitConfig::standard_recursion_config();
|
||||||
|
let mut builder = CircuitBuilder::<F, D>::new(config);
|
||||||
|
|
||||||
|
// build the inner circuit
|
||||||
|
self.sampling_circ.sample_slot_circuit_with_public_input(&mut builder);
|
||||||
|
|
||||||
|
let circ_data = builder.build::<C>();
|
||||||
|
|
||||||
|
Ok(circ_data.common)
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user