diff --git a/snark-verifier-sdk/src/halo2.rs b/snark-verifier-sdk/src/halo2.rs index ed155bc8..b0710230 100644 --- a/snark-verifier-sdk/src/halo2.rs +++ b/snark-verifier-sdk/src/halo2.rs @@ -121,14 +121,10 @@ where #[cfg(feature = "display")] end_timer!(proof_time); - if let Some((instance_path, proof_path)) = path { - write_instances(&instances, instance_path); - fs::write(proof_path, &proof).unwrap(); - } - - debug_assert!({ + // validate proof before caching + assert!({ let mut transcript_read = - PoseidonTranscript::::new::(proof.as_slice()); + PoseidonTranscript::::from_spec(&proof[..], POSEIDON_SPEC.clone()); VerificationStrategy::<_, V>::finalize( verify_proof::<_, V, _, _, _>( params.verifier_params(), @@ -141,6 +137,11 @@ where ) }); + if let Some((instance_path, proof_path)) = path { + write_instances(&instances, instance_path); + fs::write(proof_path, &proof).unwrap(); + } + proof } diff --git a/snark-verifier-sdk/src/halo2/aggregation.rs b/snark-verifier-sdk/src/halo2/aggregation.rs index 3bff2060..f361b876 100644 --- a/snark-verifier-sdk/src/halo2/aggregation.rs +++ b/snark-verifier-sdk/src/halo2/aggregation.rs @@ -24,6 +24,8 @@ use halo2_base::{ use itertools::Itertools; use rand::{rngs::StdRng, SeedableRng}; use serde::{Deserialize, Serialize}; +#[cfg(debug_assertions)] +use snark_verifier::util::arithmetic::fe_to_limbs; use snark_verifier::{ loader::{ self, @@ -34,7 +36,6 @@ use snark_verifier::{ kzg::{KzgAccumulator, KzgAsProvingKey, KzgAsVerifyingKey, KzgSuccinctVerifyingKey}, AccumulationScheme, AccumulationSchemeProver, PolynomialCommitmentScheme, }, - util::arithmetic::fe_to_limbs, verifier::SnarkVerifier, }; use std::{