(vk: &ark_groth16::VerifyingKey<Bn254>)
| 40 | } |
| 41 | |
| 42 | pub(crate) fn generate_partial_script(vk: &ark_groth16::VerifyingKey<Bn254>) -> Vec<ScriptBuf> { |
| 43 | println!("generate_partial_script"); |
| 44 | assert!(vk.gamma_abc_g1.len() == NUM_PUBS + 1); |
| 45 | |
| 46 | let p1 = vk.alpha_g1; |
| 47 | let (q3, q2, q1) = ( |
| 48 | vk.gamma_g2.into_group().neg().into_affine(), |
| 49 | vk.delta_g2.into_group().neg().into_affine(), |
| 50 | -vk.beta_g2, |
| 51 | ); |
| 52 | |
| 53 | let pairing = BnAffinePairing; |
| 54 | let p1q1 = pairing.multi_miller_loop_affine([p1], [q1]).0; |
| 55 | let mut p3vk = vk.gamma_abc_g1.clone(); // vk.vk_pubs[0] |
| 56 | p3vk.reverse(); |
| 57 | let vky0 = p3vk.pop().unwrap(); |
| 58 | |
| 59 | let vk = Vkey { |
| 60 | q2, |
| 61 | q3, |
| 62 | p3vk, |
| 63 | p1q1, |
| 64 | vky0, |
| 65 | }; |
| 66 | |
| 67 | println!("generate_partial_script; generate_segments_using_mock_proof"); |
| 68 | let segments = generate_segments_using_mock_proof(vk, false); |
| 69 | println!("generate_partial_script; partial_scripts_from_segments"); |
| 70 | let op_scripts: Vec<ScriptBuf> = partial_scripts_from_segments(&segments); |
| 71 | assert_eq!(op_scripts.len(), NUM_TAPS); |
| 72 | |
| 73 | op_scripts |
| 74 | } |
| 75 | |
| 76 | // we can use mock_vk and mock_proof here because generating bitcommitments only requires knowledge |
| 77 | // of how the chunks are connected and the public keys to generate locking_script |
no test coverage detected