@@ -1268,6 +1268,7 @@ impl<S: SpartanExtensionField + Send + Sync> SNARK<S> {
12681268 // create a multilinear polynomial using the supplied assignment for variables
12691269 let perm_poly_w0 = DensePolynomial :: new ( perm_w0. clone ( ) ) ;
12701270
1271+ let timer_tmp = Timer :: new ( "exec_gen" ) ;
12711272 // PERM_EXEC
12721273 // w2 is _, _, ZO, r * i1, r^2 * i2, r^3 * i3, ...
12731274 // where ZO * r^n = r^n * o0 + r^(n + 1) * o1, ...,
@@ -1324,32 +1325,9 @@ impl<S: SpartanExtensionField + Send + Sync> SNARK<S> {
13241325 }
13251326 ( perm_exec_w2, perm_exec_w3)
13261327 } ;
1328+ timer_tmp. stop ( ) ;
13271329
1328- /*
1329- let perm_exec_w3 = {
1330- let mut perm_exec_w3: Vec<Vec<S>> = vec![Vec::new(); consis_num_proofs];
1331- for q in (0..consis_num_proofs).rev() {
1332- perm_exec_w3[q] = vec![S::field_zero(); 8];
1333- perm_exec_w3[q][0] = exec_inputs_list[q][0];
1334- perm_exec_w3[q][1] = perm_exec_w3[q][0]
1335- * (comb_tau
1336- - perm_exec_w2[q][3..]
1337- .iter()
1338- .fold(S::field_zero(), |a, b| a + *b)
1339- - exec_inputs_list[q][2]);
1340- perm_exec_w3[q][4] = perm_exec_w2[q][0];
1341- perm_exec_w3[q][5] = perm_exec_w2[q][1];
1342- if q != consis_num_proofs - 1 {
1343- perm_exec_w3[q][3] = perm_exec_w3[q][1]
1344- * (perm_exec_w3[q + 1][2] + S::field_one() - perm_exec_w3[q + 1][0]);
1345- } else {
1346- perm_exec_w3[q][3] = perm_exec_w3[q][1];
1347- }
1348- perm_exec_w3[q][2] = perm_exec_w3[q][0] * perm_exec_w3[q][3];
1349- }
1350- perm_exec_w3
1351- };
1352- */
1330+ let timer_tmp = Timer :: new ( "exec_poly" ) ;
13531331 // commit the witnesses and inputs separately instance-by-instance
13541332 let ( perm_exec_poly_w2, perm_exec_poly_w3, perm_exec_poly_w3_shifted) = {
13551333 let perm_exec_poly_w2 = {
@@ -1394,13 +1372,15 @@ impl<S: SpartanExtensionField + Send + Sync> SNARK<S> {
13941372 perm_exec_poly_w3_shifted,
13951373 )
13961374 } ;
1375+ timer_tmp. stop ( ) ;
13971376
1377+ let timer_tmp = Timer :: new ( "block_gen" ) ;
13981378 // INPUT_BLOCK_W2 | PHY_MEM_BLOCK_W2 & VIR_MEM_BLOCK_W2
13991379 // BLOCK_W3
14001380 // INPUT PHY VIR
14011381 // w3 is [v, x, pi, D, pi, D, pi, D]
14021382 let mut block_w3: Vec < Vec < Vec < S > > > = Vec :: new ( ) ;
1403- let block_w2_prover = {
1383+ let block_w2 = {
14041384 let mut block_w2: Vec < Vec < Vec < S > > > = Vec :: new ( ) ;
14051385 let block_w2_size_list: Vec < usize > = ( 0 ..block_num_instances)
14061386 . map ( |i| {
@@ -1554,6 +1534,12 @@ impl<S: SpartanExtensionField + Send + Sync> SNARK<S> {
15541534 block_w3. push ( block_w3_p) ;
15551535 }
15561536
1537+ block_w2
1538+ } ;
1539+ timer_tmp. stop ( ) ;
1540+
1541+ let timer_tmp = Timer :: new ( "block_gen" ) ;
1542+ let ( block_poly_w2_list, block_poly_w3_list, block_poly_w3_list_shifted) = {
15571543 // commit the witnesses and inputs separately instance-by-instance
15581544 let mut block_poly_w2_list = Vec :: new ( ) ;
15591545
@@ -1567,12 +1553,7 @@ impl<S: SpartanExtensionField + Send + Sync> SNARK<S> {
15671553 } ;
15681554 block_poly_w2_list. push ( block_poly_w2) ;
15691555 }
1570-
1571- let block_w2_prover = ProverWitnessSecInfo :: new ( block_w2. clone ( ) , block_poly_w2_list) ;
1572-
1573- block_w2_prover
1574- } ;
1575- let ( block_poly_w3_list, block_poly_w3_list_shifted) = {
1556+
15761557 let mut block_poly_w3_list = Vec :: new ( ) ;
15771558 let mut block_poly_w3_list_shifted = Vec :: new ( ) ;
15781559
@@ -1605,8 +1586,9 @@ impl<S: SpartanExtensionField + Send + Sync> SNARK<S> {
16051586 block_poly_w3_list_shifted. push ( block_poly_w3_shifted) ;
16061587 }
16071588
1608- ( block_poly_w3_list, block_poly_w3_list_shifted)
1589+ ( block_poly_w2_list , block_poly_w3_list, block_poly_w3_list_shifted)
16091590 } ;
1591+ timer_tmp. stop ( ) ;
16101592
16111593 let perm_w0_prover = ProverWitnessSecInfo :: new ( vec ! [ vec![ perm_w0] ] , vec ! [ perm_poly_w0] ) ;
16121594 let perm_exec_w2_prover =
@@ -1618,6 +1600,7 @@ impl<S: SpartanExtensionField + Send + Sync> SNARK<S> {
16181600 let perm_exec_w3_prover =
16191601 ProverWitnessSecInfo :: new ( vec ! [ perm_exec_w3] , vec ! [ perm_exec_poly_w3] ) ;
16201602
1603+ let block_w2_prover = ProverWitnessSecInfo :: new ( block_w2, block_poly_w2_list) ;
16211604 let block_w3_shifted_prover = ProverWitnessSecInfo :: new (
16221605 block_w3
16231606 . iter ( )
0 commit comments