grapevine-sonobe/src/nova.rs
src/nova.rsRaw
1use ark_crypto_primitives::{
2 crh::{
3 poseidon::constraints::{CRHGadget, CRHParametersVar},
4 poseidon::CRH,
5 CRHScheme, CRHSchemeGadget,
6 },
7 sponge::{poseidon::PoseidonConfig, Absorb},
8};
9use ark_ff::PrimeField;
10use ark_pallas::{constraints::GVar, Fr, Projective};
11use ark_r1cs_std::{alloc::AllocVar, fields::FieldVar, fields::fp::FpVar};
12use ark_relations::r1cs::{ConstraintSystemRef, SynthesisError};
13use ark_std::Zero;
14use ark_vesta::{constraints::GVar as Gvar2, Projective as Projective2};
15use core::marker::PhantomData;
16use std::time::Instant;
17use sonobe::{
18 commitment::{pedersen::Pedersen, CommitmentScheme},
19 folding::nova::{get_r1cs, ProverParams, VerifierParams},
20 frontend::FCircuit,
21 transcript::poseidon::poseidon_test_config
22};
23
24use crate::{
25 params::test_nova_setup,
26 circom::GrapevineFCircuit,
27};
28
29#[cfg(test)]
30mod test {
31 use super::*;
32 use std::path::PathBuf;
33 use std::time::Instant;
34 #[test]
35 fn test_generate_params() {
36 let r1cs_path = PathBuf::from("./circom/artifacts/circuit.r1cs");
37 let wasm_path = PathBuf::from("./circom/artifacts/circuit.wasm");
38 let f_circuit = GrapevineFCircuit::<Fr>::new((r1cs_path, wasm_path));
39 let pre = Instant::now();
40 let (prover_params, verifier_params) = test_nova_setup::<GrapevineFCircuit<Fr>>(f_circuit);
41 // let prover_params_str = serde_json::to_string(&prover_params).unwrap();
42 // let verifier_params_str = serde_json::to_string(&verifier_params).unwrap();
43
44 println!("Time to generate params: {:?}", pre.elapsed());
45 }
46}