grapevine-sonobe/src/params.rs
src/params.rsRaw
1use ark_pallas::{constraints::GVar, Fr, Projective};
2use ark_vesta::{constraints::GVar as GVar2, Projective as Projective2};
3
4use sonobe::{
5 commitment::{pedersen::Pedersen, CommitmentScheme},
6 folding::nova::{get_r1cs, ProverParams, VerifierParams},
7 frontend::FCircuit,
8 transcript::poseidon::poseidon_test_config
9};
10
11pub fn test_nova_setup<FC: FCircuit<Fr>>(
12 f_circuit: FC
13) -> (
14 ProverParams<Projective, Projective2, Pedersen<Projective>, Pedersen<Projective2>>,
15 VerifierParams<Projective, Projective2>
16) {
17 let mut rng = ark_std::test_rng();
18 let poseidon_config = poseidon_test_config::<Fr>();
19
20 // get CM & CF_CM len
21 let (r1cs, cf_r1cs) = get_r1cs::<Projective, GVar, Projective2, GVar2, FC>(
22 &poseidon_config,
23 f_circuit,
24 ).unwrap();
25 let cf_len = r1cs.A.n_rows;
26 let cf_cf_len = cf_r1cs.A.n_rows;
27
28 let (pedersen_params, _) = Pedersen::<Projective>::setup(&mut rng, cf_len).unwrap();
29 let (cf_pedersen_params, _) = Pedersen::<Projective2>::setup(&mut rng, cf_cf_len).unwrap();
30
31 let prover_params =
32 ProverParams::<Projective, Projective2, Pedersen<Projective>, Pedersen<Projective2>>{
33 poseidon_config: poseidon_config.clone(),
34 cs_params: pedersen_params,
35 cf_cs_params: cf_pedersen_params
36 };
37
38 let verifier_params = VerifierParams::<Projective, Projective2>{
39 poseidon_config: poseidon_config.clone(),
40 r1cs,
41 cf_r1cs
42 };
43
44 (prover_params, verifier_params)
45}