@@ -164,6 +164,7 @@ impl<E: ExtensionField, PCS: PolynomialCommitmentScheme<E>> ZKVMVerifier<E, PCS>
164164 for ( index, proof) in & vm_proof. chip_proofs {
165165 assert ! ( proof. num_instances > 0 ) ;
166166 let circuit_name = & self . vk . circuit_index_to_name [ index] ;
167+ println ! ( "verify circuit_name {circuit_name}" ) ;
167168 let circuit_vk = & self . vk . circuit_vks [ circuit_name] ;
168169
169170 // check chip proof is well-formed
@@ -356,9 +357,9 @@ impl<E: ExtensionField, PCS: PolynomialCommitmentScheme<E>> ZKVMVerifier<E, PCS>
356357 } = & composed_cs;
357358 let num_instances = proof. num_instances ;
358359 let ( r_counts_per_instance, w_counts_per_instance, lk_counts_per_instance) = (
359- cs. r_expressions . len ( ) ,
360- cs. w_expressions . len ( ) ,
361- cs. lk_expressions . len ( ) ,
360+ cs. r_expressions . len ( ) + cs . r_table_expressions . len ( ) ,
361+ cs. w_expressions . len ( ) + cs . w_table_expressions . len ( ) ,
362+ cs. lk_expressions . len ( ) + cs . lk_table_expressions . len ( ) * 2 ,
362363 ) ;
363364 let num_batched = r_counts_per_instance + w_counts_per_instance + lk_counts_per_instance;
364365
@@ -529,9 +530,8 @@ impl<E: ExtensionField, PCS: PolynomialCommitmentScheme<E>> ZKVMVerifier<E, PCS>
529530 "[prod_record] mismatch length"
530531 ) ;
531532
532- let input_opening_point = if next_pow2_instance_padding ( proof. num_instances )
533- == proof. num_instances
534- {
533+ let ram_bus_circuit = false ;
534+ let input_opening_point = if !ram_bus_circuit {
535535 // evaluate the evaluation of structural mles at input_opening_point by verifier
536536 let structural_evals = if with_rw {
537537 // only iterate r set, as read/write set round should match
@@ -620,73 +620,7 @@ impl<E: ExtensionField, PCS: PolynomialCommitmentScheme<E>> ZKVMVerifier<E, PCS>
620620 }
621621 rt_tower
622622 } else {
623- // TODO LocalFinalTable goes here, merge flow into gkr_iop
624- assert_eq ! ( cs. lk_table_expressions. len( ) , 0 ) ;
625- assert ! ( proof. main_sumcheck_proofs. is_some( ) ) ;
626- assert_eq ! ( cs. num_structural_witin, 1 ) ;
627- assert_eq ! ( prod_point_and_eval. len( ) , 1 ) ;
628-
629- // verify opening same point layer sumcheck
630- let alpha_pow = get_challenge_pows (
631- cs. r_table_expressions . len ( ) + cs. w_table_expressions . len ( ) ,
632- transcript,
633- ) ;
634-
635- // \sum_i alpha_{i} * (out_r_eval{i} - ONE)
636- // + \sum_i alpha_{i} * (out_w_eval{i} - ONE)
637- let claim_sum = prod_point_and_eval
638- . iter ( )
639- . zip_eq ( alpha_pow. iter ( ) )
640- . map ( |( point_and_eval, alpha) | * alpha * ( point_and_eval. eval - E :: ONE ) )
641- . sum :: < E > ( ) ;
642- let sel_subclaim = IOPVerifierState :: verify (
643- claim_sum,
644- & IOPProof {
645- proofs : proof. main_sumcheck_proofs . clone ( ) . unwrap ( ) ,
646- } ,
647- & VPAuxInfo {
648- max_degree : SEL_DEGREE ,
649- max_num_variables : expected_max_rounds,
650- phantom : PhantomData ,
651- } ,
652- transcript,
653- ) ;
654- let ( input_opening_point, sumcheck_eval) = (
655- sel_subclaim. point . iter ( ) . map ( |c| c. elements ) . collect_vec ( ) ,
656- sel_subclaim. expected_evaluation ,
657- ) ;
658- let structural_evals = vec ! [ eq_eval_less_or_equal_than(
659- proof. num_instances - 1 ,
660- & prod_point_and_eval[ 0 ] . point,
661- & input_opening_point,
662- ) ] ;
663-
664- let expected_evals = interleave (
665- & cs. r_table_expressions , // r
666- & cs. w_table_expressions , // w
667- )
668- . map ( |rw| & rw. expr )
669- . zip ( alpha_pow. iter ( ) )
670- . map ( |( expr, alpha) | {
671- * alpha
672- * eval_by_expr_with_instance (
673- & proof. fixed_in_evals ,
674- & proof. wits_in_evals ,
675- & structural_evals,
676- pi,
677- challenges,
678- expr,
679- )
680- . right ( )
681- . unwrap ( )
682- } )
683- . sum :: < E > ( ) ;
684- if expected_evals != sumcheck_eval {
685- return Err ( ZKVMError :: VerifyError (
686- "sel evaluation verify failed" . into ( ) ,
687- ) ) ;
688- }
689- input_opening_point
623+ unimplemented ! ( "shard ram bus circuit go here" ) ;
690624 } ;
691625
692626 // assume public io is tiny vector, so we evaluate it directly without PCS
0 commit comments