pub fn parse_vk<T:Engine>(param:&Parameters<T>)->VerificationKey {
    VerificationKey {
        alpha: parse_g1::<T>(&param.vk.alpha_g1),
        beta: parse_g2::<T>(&param.vk.beta_g2),
        gamma: parse_g2::<T>(&param.vk.gamma_g2),
        delta: parse_g2::<T>(&param.vk.delta_g2),
        gamma_abc: param
            .vk
            .ic
            .iter()
            .map(|g1| parse_g1::<T>(g1))
            .collect(),
    }
}
//
//
//
//
// // function trasfer vk to string's vk
//
//
function trasfer vk to string's vk
function trasfer vk to string ' s vk
pub fn parse_vk<T:Engine>(param:&Parameters<T>)->VerificationKey {
    VerificationKey {
        alpha: parse_g1::<T>(&param.vk.alpha_g1),
        beta: parse_g2::<T>(&param.vk.beta_g2),
        gamma: parse_g2::<T>(&param.vk.gamma_g2),
        delta: parse_g2::<T>(&param.vk.delta_g2),
        gamma_abc: param
            .vk
            .ic
            .iter()
            .map(|g1| parse_g1::<T>(g1))
            .collect(),
    }
}
pub fn parse_vk < T : Engine > ( param : & Parameters < T > ) -> VerificationKey { VerificationKey { alpha : parse_g1 :: < T > ( & param . vk . alpha_g1 ) , beta : parse_g2 :: < T > ( & param . vk . beta_g2 ) , gamma : parse_g2 :: < T > ( & param . vk . gamma_g2 ) , delta : parse_g2 :: < T > ( & param . vk . delta_g2 ) , gamma_abc : param . vk . ic . iter ( ) . map ( | g1 | parse_g1 :: < T > ( g1 ) ) . collect ( ) , } }
function trasfer vk to string's vk
function trasfer vk to string ' s vk
param
&Parameters<T>
param
&Parameters<T>