MCPcopy Create free account
hub / github.com/BitVM/BitVM / generate_partial_script

Function generate_partial_script

bitvm/src/chunk/api_compiletime_utils.rs:42–74  ·  view source on GitHub ↗
(vk: &ark_groth16::VerifyingKey<Bn254>)

Source from the content-addressed store, hash-verified

40}
41
42pub(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

Callers 1

Calls 5

cloneMethod · 0.80
negMethod · 0.45

Tested by

no test coverage detected