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

Function test_chunk_dense_dense_mul

bitvm/src/chunk/taps_mul.rs:712–777  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

710
711 #[test]
712 fn test_chunk_dense_dense_mul() {
713 let mut prng = ChaCha20Rng::seed_from_u64(0);
714 let f = ark_bn254::Fq12::rand(&mut prng);
715 let f_n = ark_bn254::Fq12::new(ark_bn254::Fq6::ONE, f.c1 / f.c0);
716
717 let g = ark_bn254::Fq12::rand(&mut prng);
718 let g_n = ark_bn254::Fq12::new(ark_bn254::Fq6::ONE, g.c1 / g.c0);
719
720 let h = f_n * g_n;
721 let h_n = ark_bn254::Fq12::new(ark_bn254::Fq6::ONE, h.c1 / h.c0);
722
723 let (hint_out, is_valid_input, h_scr, mul_hints) = chunk_dense_dense_mul(f_n.c1, g_n.c1);
724 assert_eq!(h_n.c1, hint_out);
725
726 let f_n_c1 = DataType::Fp6Data(f_n.c1);
727 let g_n_c1 = DataType::Fp6Data(g_n.c1);
728 let h_n_c1 = DataType::Fp6Data(h_n.c1);
729 let hint_out = DataType::Fp6Data(hint_out);
730
731 let mut preimage_hints = vec![];
732 let f6_hints = f_n_c1.to_witness(ElementType::Fp6);
733 let g6_hints = g_n_c1.to_witness(ElementType::Fp6);
734 let h6_hints = h_n_c1.to_witness(ElementType::Fp6);
735 preimage_hints.extend_from_slice(&f6_hints);
736 preimage_hints.extend_from_slice(&g6_hints);
737 preimage_hints.extend_from_slice(&h6_hints);
738
739 let bitcom_scr = script! {
740 {hint_out.to_hash().as_hint_type().push()}
741 {Fq::toaltstack()}
742 {g_n_c1.to_hash().as_hint_type().push()}
743 {Fq::toaltstack()}
744 {f_n_c1.to_hash().as_hint_type().push()}
745 {Fq::toaltstack()}
746 };
747
748 let hash_scr = script! {
749 {hash_messages(vec![ElementType::Fp6, ElementType::Fp6, ElementType::Fp6])}
750 OP_TRUE
751 };
752
753 let tap_len = h_scr.len() + hash_scr.len();
754 let scr = script! {
755 for h in mul_hints {
756 {h.push()}
757 }
758 for h in preimage_hints {
759 {h.push()}
760 }
761 {bitcom_scr}
762 {h_scr}
763 {hash_scr}
764 };
765 let res = execute_script(scr);
766 if res.final_stack.len() > 1 {
767 for i in 0..res.final_stack.len() {
768 println!("{i:} {:?}", res.final_stack.get(i));
769 }

Callers

nothing calls this directly

Calls 4

chunk_dense_dense_mulFunction · 0.85
execute_scriptFunction · 0.85
to_witnessMethod · 0.80
lenMethod · 0.80

Tested by

no test coverage detected