arnaucube
arnaucube/grapevine-sonobePublic Self-hosted repository
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}