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

Function emulate_extern_hash_fps_scripted

bitvm/src/chunk/helpers.rs:205–241  ·  view source on GitHub ↗
(msgs: Vec<ark_bn254::Fq>)

Source from the content-addressed store, hash-verified

203 #[allow(clippy::needless_range_loop)]
204 fn test_emulate_external_hash() {
205 fn emulate_extern_hash_fps_scripted(msgs: Vec<ark_bn254::Fq>) -> [u8; 64] {
206 assert!(
207 msgs.len() == 4
208 || msgs.len() == 2
209 || msgs.len() == 12
210 || msgs.len() == 14
211 || msgs.len() == 6
212 || msgs.len() == 8
213 );
214
215 let scr = script! {
216 for i in 0..msgs.len() {
217 {Fq::push(msgs[i])}
218 }
219 if msgs.len() == 4 {
220 {hash_fp4()}
221 } else if msgs.len() == 2 {
222 {hash_fp2()}
223 } else if msgs.len() == 6 {
224 {hash_fp6()}
225 } else if msgs.len() == 14 {
226 {hash_fp14()}
227 }
228 {unpack_limbs_to_nibbles()}
229 };
230 let exec_result = execute_script(scr.clone());
231 let mut arr = [0u8; 64];
232 for i in 0..exec_result.final_stack.len() {
233 let v = exec_result.final_stack.get(i);
234 if v.is_empty() {
235 arr[i] = 0;
236 } else {
237 arr[i] = v[0];
238 }
239 }
240 arr
241 }
242
243 let mut prng = ChaCha20Rng::seed_from_u64(0);
244 let _f = ark_bn254::Fq12::rand(&mut prng);

Callers 1

Calls 5

execute_scriptFunction · 0.85
cloneMethod · 0.80
lenMethod · 0.80
is_emptyMethod · 0.80
getMethod · 0.45

Tested by 1