use crate::BTCBlockCheckerFCircuit; use ark_bn254::{constraints::GVar, Bn254, Fr, G1Projective as Projective}; use ark_grumpkin::{constraints::GVar as GVar2, Projective as Projective2}; use ark_poly_commit::kzg10::VerifierKey as KZGVerifierKey; use folding_schemes::{ commitment::{ kzg::{ProverKey as KZGProverKey, KZG}, pedersen::Pedersen, CommitmentScheme, }, folding::nova::{get_cs_params_len, ProverParams}, transcript::poseidon::poseidon_test_config, }; pub fn setup( circuit: BTCBlockCheckerFCircuit, ) -> ( ProverParams, Pedersen>, KZGVerifierKey, ) { let mut rng = ark_std::test_rng(); let poseidon_config = poseidon_test_config::(); let (cs_len, cf_cs_len) = get_cs_params_len::>( &poseidon_config, circuit, ) .unwrap(); let (kzg_pk, kzg_vk): (KZGProverKey, KZGVerifierKey) = KZG::::setup(&mut rng, cs_len).unwrap(); let (cf_pedersen_params, _) = Pedersen::::setup(&mut rng, cf_cs_len).unwrap(); ( ProverParams::, Pedersen> { poseidon_config: poseidon_config.clone(), cs_params: kzg_pk.clone(), cf_cs_params: cf_pedersen_params, }, kzg_vk, ) }