@@ -1574,11 +1574,23 @@ impl<E: ExtensionField + Send + Sync, Pcs: PolynomialCommitmentScheme<E>> SNARK<
15741574 let ( perm_exec_w2_prover, perm_exec_w2_v_comm) = Self :: mat_to_prove_wit_sec ( perm_exec_w2, & poly_pp) ;
15751575 let ( perm_exec_w3_prover, perm_exec_w3_v_comm) = Self :: mat_to_prove_wit_sec ( perm_exec_w3, & poly_pp) ;
15761576 let ( perm_exec_w3_shifted_prover, perm_exec_w3_shifted_v_comm) = Self :: mat_to_prove_wit_sec ( perm_exec_w3_shifted_mat, & poly_pp) ;
1577-
15781577 let ( block_w2_prover, block_w2_v_comm) = Self :: mats_to_prove_wit_sec ( block_w2, & poly_pp) ;
15791578 let ( block_w3_prover, block_w3_v_comm) = Self :: mats_to_prove_wit_sec ( block_w3, & poly_pp) ;
15801579 let ( block_w3_shifted_prover, block_w3_shifted_v_comm) = Self :: mats_to_prove_wit_sec ( block_w3_shifted_mat, & poly_pp) ;
15811580
1581+ // Append commmitments to transcript
1582+ for comm in vec ! [
1583+ perm_exec_w2_v_comm,
1584+ perm_exec_w3_v_comm,
1585+ perm_exec_w3_shifted_v_comm,
1586+ ]
1587+ . into_iter ( )
1588+ . chain ( block_w2_v_comm. into_iter ( ) )
1589+ . chain ( block_w3_v_comm. into_iter ( ) )
1590+ . chain ( block_w3_shifted_v_comm. into_iter ( ) ) {
1591+ Pcs :: write_commitment ( comm, transcript) ;
1592+ }
1593+
15821594 (
15831595 comb_tau,
15841596 comb_r,
@@ -1728,6 +1740,10 @@ impl<E: ExtensionField + Send + Sync, Pcs: PolynomialCommitmentScheme<E>> SNARK<
17281740 let timer_commit = Timer :: new ( "input_commit" ) ;
17291741 let ( block_vars_prover, block_vars_v_comm_list) = Self :: mats_to_prove_wit_sec ( block_vars_mat, & poly_pp) ;
17301742 let ( exec_inputs_prover, exec_inputs_v_comm) = Self :: mat_to_prove_wit_sec ( exec_inputs_list, & poly_pp) ;
1743+ for comm in block_vars_v_comm_list. into_iter ( ) . chain ( vec ! [ exec_inputs_v_comm] . into_iter ( ) ) {
1744+ Pcs :: write_commitment ( comm, transcript) ;
1745+ }
1746+
17311747 let init_phy_mems_prover = if total_num_init_phy_mem_accesses > 0 {
17321748 Self :: mat_to_prover_wit_sec_no_commit ( init_phy_mems_list)
17331749 } else {
@@ -1744,6 +1760,14 @@ impl<E: ExtensionField + Send + Sync, Pcs: PolynomialCommitmentScheme<E>> SNARK<
17441760 let addr_phy_mems_shifted_list = vec ! [ addr_phy_mems_list[ 1 ..] . to_vec( ) , vec![ vec![ E :: ZERO ; PHY_MEM_WIDTH ] ] ] . concat ( ) ;
17451761 let ( addr_phy_mems_prover, addr_phy_mems_v_comm) = Self :: mat_to_prove_wit_sec ( addr_phy_mems_list, & poly_pp) ;
17461762 let ( addr_phy_mems_shifted_prover, addr_phy_mems_shifted_v_comm) = Self :: mat_to_prove_wit_sec ( addr_phy_mems_shifted_list, & poly_pp) ;
1763+
1764+ for comm in vec ! [
1765+ addr_phy_mems_v_comm,
1766+ addr_phy_mems_shifted_v_comm,
1767+ ] {
1768+ Pcs :: write_commitment ( comm, transcript) ;
1769+ }
1770+
17471771 ( addr_phy_mems_prover, Some ( addr_phy_mems_v_comm) , addr_phy_mems_shifted_prover, Some ( addr_phy_mems_shifted_v_comm) )
17481772 } else {
17491773 ( ProverWitnessSecInfo :: dummy ( ) , None , ProverWitnessSecInfo :: dummy ( ) , None )
@@ -1756,6 +1780,15 @@ impl<E: ExtensionField + Send + Sync, Pcs: PolynomialCommitmentScheme<E>> SNARK<
17561780 let ( addr_vir_mems_prover, addr_vir_mems_v_comm) = Self :: mat_to_prove_wit_sec ( addr_vir_mems_list, & poly_pp) ;
17571781 let ( addr_vir_mems_shifted_prover, addr_vir_mems_shifted_v_comm) = Self :: mat_to_prove_wit_sec ( addr_vir_mems_shifted_list, & poly_pp) ;
17581782 let ( addr_ts_bits_prover, addr_ts_bits_v_comm) = Self :: mat_to_prove_wit_sec ( addr_ts_bits_list, & poly_pp) ;
1783+
1784+ for comm in vec ! [
1785+ addr_vir_mems_v_comm,
1786+ addr_vir_mems_shifted_v_comm,
1787+ addr_ts_bits_v_comm,
1788+ ] {
1789+ Pcs :: write_commitment ( comm, transcript) ;
1790+ }
1791+
17591792 (
17601793 addr_vir_mems_prover,
17611794 Some ( addr_vir_mems_v_comm) ,
@@ -2730,6 +2763,19 @@ impl<E: ExtensionField + Send + Sync, Pcs: PolynomialCommitmentScheme<E>> SNARK<
27302763 )
27312764 } ;
27322765
2766+ // Append commmitments to transcript
2767+ for comm in vec ! [
2768+ self . perm_exec_w2_comm,
2769+ self . perm_exec_w3_comm,
2770+ self . perm_exec_w3_shifted_comm,
2771+ ]
2772+ . into_iter ( )
2773+ . chain ( self . block_w2_comm_list . into_iter ( ) )
2774+ . chain ( self . block_w3_comm_list . into_iter ( ) )
2775+ . chain ( self . block_w3_shifted_comm_list . into_iter ( ) ) {
2776+ Pcs :: write_commitment ( comm, transcript) ;
2777+ }
2778+
27332779 let ( init_phy_mem_w2_verifier, init_phy_mem_w3_verifier, init_phy_mem_w3_shifted_verifier) = {
27342780 if total_num_init_phy_mem_accesses > 0 {
27352781 (
@@ -2808,6 +2854,10 @@ impl<E: ExtensionField + Send + Sync, Pcs: PolynomialCommitmentScheme<E>> SNARK<
28082854 )
28092855 } ;
28102856
2857+ for comm in self . block_vars_comm_list . into_iter ( ) . chain ( vec ! [ self . exec_inputs_comm] ) {
2858+ Pcs :: write_commitment ( comm, transcript) ;
2859+ }
2860+
28112861 let init_phy_mems_verifier = {
28122862 if input_stack. len ( ) > 0 {
28132863 assert_eq ! (
@@ -2879,6 +2929,12 @@ impl<E: ExtensionField + Send + Sync, Pcs: PolynomialCommitmentScheme<E>> SNARK<
28792929
28802930 let ( addr_phy_mems_verifier, addr_phy_mems_shifted_verifier) = {
28812931 if total_num_phy_mem_accesses > 0 {
2932+ for comm in vec ! [
2933+ self . addr_phy_mems_comm,
2934+ self . addr_phy_mems_shifted_comm,
2935+ ] {
2936+ Pcs :: write_commitment ( comm, transcript) ;
2937+ }
28822938 (
28832939 VerifierWitnessSecInfo :: new ( vec ! [ PHY_MEM_WIDTH ] , & vec ! [ total_num_phy_mem_accesses] ) ,
28842940 VerifierWitnessSecInfo :: new ( vec ! [ PHY_MEM_WIDTH ] , & vec ! [ total_num_phy_mem_accesses] ) ,
@@ -2893,6 +2949,12 @@ impl<E: ExtensionField + Send + Sync, Pcs: PolynomialCommitmentScheme<E>> SNARK<
28932949
28942950 let ( addr_vir_mems_verifier, addr_vir_mems_shifted_verifier, addr_ts_bits_verifier) = {
28952951 if total_num_vir_mem_accesses > 0 {
2952+ for comm in vec ! [
2953+ self . addr_vir_mems_comm,
2954+ self . addr_vir_mems_shifted_comm,
2955+ ] {
2956+ Pcs :: write_commitment ( comm, transcript) ;
2957+ }
28962958 (
28972959 VerifierWitnessSecInfo :: new ( vec ! [ VIR_MEM_WIDTH ] , & vec ! [ total_num_vir_mem_accesses] ) ,
28982960 VerifierWitnessSecInfo :: new ( vec ! [ VIR_MEM_WIDTH ] , & vec ! [ total_num_vir_mem_accesses] ) ,
0 commit comments