arnaucube
arnaucube/grapevine-sonobePublic Self-hosted repository
grapevine-sonobe/src/params.rs
src/params.rsRaw
 1use ark_bn254::{constraints::GVar, Fr, G1Projective as Projective};
 2use ark_grumpkin::{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) =
22        get_r1cs::<Projective, GVar, Projective2, GVar2, FC>(&poseidon_config, f_circuit).unwrap();
23    let cf_len = r1cs.A.n_rows;
24    let cf_cf_len = cf_r1cs.A.n_rows;
25
26    let (pedersen_params, _) = Pedersen::<Projective>::setup(&mut rng, cf_len).unwrap();
27    let (cf_pedersen_params, _) = Pedersen::<Projective2>::setup(&mut rng, cf_cf_len).unwrap();
28
29    let prover_params =
30        ProverParams::<Projective, Projective2, Pedersen<Projective>, Pedersen<Projective2>> {
31            poseidon_config: poseidon_config.clone(),
32            cs_params: pedersen_params,
33            cf_cs_params: cf_pedersen_params,
34        };
35
36    let verifier_params = VerifierParams::<Projective, Projective2> {
37        poseidon_config: poseidon_config.clone(),
38        r1cs,
39        cf_r1cs,
40    };
41
42    (prover_params, verifier_params)
43}