sonobe-light-btc/src/utils.rs
src/utils.rsRaw
1use crate::BTCBlockCheckerFCircuit;
2use ark_bn254::{constraints::GVar, Bn254, Fr, G1Projective as Projective};
3use ark_grumpkin::{constraints::GVar as GVar2, Projective as Projective2};
4use ark_poly_commit::kzg10::VerifierKey as KZGVerifierKey;
5use folding_schemes::{
6 commitment::{
7 kzg::{ProverKey as KZGProverKey, KZG},
8 pedersen::Pedersen,
9 CommitmentScheme,
10 },
11 folding::nova::{get_cs_params_len, ProverParams},
12 transcript::poseidon::poseidon_test_config,
13};
14
15pub fn setup(
16 circuit: BTCBlockCheckerFCircuit<Fr>,
17) -> (
18 ProverParams<Projective, Projective2, KZG<'static, Bn254>, Pedersen<Projective2>>,
19 KZGVerifierKey<Bn254>,
20) {
21 let mut rng = ark_std::test_rng();
22 let poseidon_config = poseidon_test_config::<Fr>();
23
24 let (cs_len, cf_cs_len) =
25 get_cs_params_len::<Projective, GVar, Projective2, GVar2, BTCBlockCheckerFCircuit<Fr>>(
26 &poseidon_config,
27 circuit,
28 )
29 .unwrap();
30
31 let (kzg_pk, kzg_vk): (KZGProverKey<Projective>, KZGVerifierKey<Bn254>) =
32 KZG::<Bn254>::setup(&mut rng, cs_len).unwrap();
33 let (cf_pedersen_params, _) = Pedersen::<Projective2>::setup(&mut rng, cf_cs_len).unwrap();
34
35 (
36 ProverParams::<Projective, Projective2, KZG<Bn254>, Pedersen<Projective2>> {
37 poseidon_config: poseidon_config.clone(),
38 cs_params: kzg_pk.clone(),
39 cf_cs_params: cf_pedersen_params,
40 },
41 kzg_vk,
42 )
43}