40 lines
1.7 KiB
Rust
Raw Normal View History

2024-11-08 12:23:55 +01:00
use anyhow::Result;
use std::time::Instant;
use codex_plonky2_circuits::circuit_helper::Plonky2Circuit;
2025-01-10 11:30:34 +01:00
use proof_input::serialization::circuit_input::import_circ_input_from_json;
use codex_plonky2_circuits::circuits::sample_cells::{SampleCircuit, SampleCircuitInput, SampleTargets};
2024-11-08 12:23:55 +01:00
use codex_plonky2_circuits::circuits::params::CircuitParams;
use proof_input::params::{D, C, F, HF};
use proof_input::serialization::file_paths::{CIRC_INPUT_JSON, PROVER_CIRC_DATA_JSON, TARGETS_JSON, TREE_PROOF_JSON};
use proof_input::serialization::json::{export_proof_with_pi, import_prover_circuit_data, import_targets};
2024-11-08 12:23:55 +01:00
fn main() -> Result<()> {
// Load the parameters from environment variables
2024-11-14 10:31:32 +01:00
let circuit_params = CircuitParams::from_env()?;
2024-11-08 12:23:55 +01:00
// Read the witness from input.json
let circ_input: SampleCircuitInput<F, D> = import_circ_input_from_json()?;
println!("Witness imported from: {}", CIRC_INPUT_JSON);
2024-11-08 12:23:55 +01:00
// read the targets
let circ_targets: SampleTargets = import_targets()?;
println!("circuit targets imported from: {}", TARGETS_JSON);
2024-11-08 12:23:55 +01:00
// read the circuit data
let prover_data = import_prover_circuit_data::<F,C,D>()?;
println!("Prover circuit data imported from: {}", PROVER_CIRC_DATA_JSON);
println!("Circuit size (degree bits): {:?}", prover_data.common.degree_bits());
2024-11-08 12:23:55 +01:00
// Prove the circuit with the assigned witness
let circ = SampleCircuit::<F,D,HF>::new(circuit_params);
2024-11-08 12:23:55 +01:00
let start_time = Instant::now();
let proof_with_pis = circ.prove(&circ_targets, &circ_input, &prover_data)?;
2024-11-08 12:23:55 +01:00
println!("Proving time: {:?}", start_time.elapsed());
//export the proof to json file
export_proof_with_pi(&proof_with_pis)?;
println!("Tree proof written to: {}", TREE_PROOF_JSON);
2024-11-08 12:23:55 +01:00
Ok(())
}