2021-03-25 15:20:14 -07:00
|
|
|
use crate::circuit_builder::CircuitBuilder;
|
2021-04-02 20:58:19 -07:00
|
|
|
use crate::circuit_data::{CircuitConfig, VerifierCircuitTarget};
|
2021-05-30 13:25:53 -07:00
|
|
|
use crate::field::extension_field::Extendable;
|
2021-04-02 20:58:19 -07:00
|
|
|
use crate::gates::gate::GateRef;
|
|
|
|
|
use crate::proof::ProofTarget;
|
2021-02-26 13:18:41 -08:00
|
|
|
|
2021-03-28 15:36:51 -07:00
|
|
|
const MIN_WIRES: usize = 120; // TODO: Double check.
|
2021-03-30 10:02:00 -07:00
|
|
|
const MIN_ROUTED_WIRES: usize = 8; // TODO: Double check.
|
2021-03-28 15:36:51 -07:00
|
|
|
|
2021-04-02 20:58:19 -07:00
|
|
|
/// Recursively verifies an inner proof.
|
2021-05-30 13:25:53 -07:00
|
|
|
pub fn add_recursive_verifier<F: Extendable<D>, const D: usize>(
|
|
|
|
|
builder: &mut CircuitBuilder<F, D>,
|
2021-04-02 20:58:19 -07:00
|
|
|
inner_config: CircuitConfig,
|
|
|
|
|
inner_circuit: VerifierCircuitTarget,
|
2021-05-30 13:25:53 -07:00
|
|
|
inner_gates: Vec<GateRef<F, D>>,
|
2021-06-04 10:47:46 +02:00
|
|
|
inner_proof: ProofTarget<D>,
|
2021-04-02 20:58:19 -07:00
|
|
|
) {
|
2021-03-28 15:36:51 -07:00
|
|
|
assert!(builder.config.num_wires >= MIN_WIRES);
|
|
|
|
|
assert!(builder.config.num_wires >= MIN_ROUTED_WIRES);
|
2021-04-22 16:32:57 -07:00
|
|
|
|
|
|
|
|
todo!()
|
2021-02-26 13:18:41 -08:00
|
|
|
}
|