@@ -168,77 +168,82 @@ class HypernovaFoldingVerifierTests : public ::testing::Test {
168168 constexpr size_t frs_per_G = FrCodec::calc_num_fields<curve::BN254::AffineElement>();
169169 constexpr size_t NUM_SUMCHECK_UNIVARIATES = NativeFlavor::VIRTUAL_LOG_N; // 21
170170
171- // Round 0: Oink preamble + wires + ECC ops + databus
172- manifest.add_entry (0 , " vk_hash" , 1 );
171+ size_t round = 0 ;
172+
173+ // Round 0: Oink preamble + wires + ECC ops + databus -> eta challenges
174+ manifest.add_challenge (round, std::array{ " eta" , " eta_two" , " eta_three" });
175+ manifest.add_entry (round, " vk_hash" , 1 );
173176 for (size_t i = 0 ; i < 4 ; ++i) {
174- manifest.add_entry (0 , " public_input_" + std::to_string (i), 1 );
177+ manifest.add_entry (round , " public_input_" + std::to_string (i), 1 );
175178 }
176179 for (const auto & wire : { " W_L" , " W_R" , " W_O" }) {
177- manifest.add_entry (0 , wire, frs_per_G);
180+ manifest.add_entry (round , wire, frs_per_G);
178181 }
179182 for (const auto & wire : { " ECC_OP_WIRE_1" , " ECC_OP_WIRE_2" , " ECC_OP_WIRE_3" , " ECC_OP_WIRE_4" }) {
180- manifest.add_entry (0 , wire, frs_per_G);
183+ manifest.add_entry (round , wire, frs_per_G);
181184 }
182185 for (const auto & bus : { " CALLDATA" , " SECONDARY_CALLDATA" , " RETURN_DATA" }) {
183- manifest.add_entry (0 , bus, frs_per_G);
184- manifest.add_entry (0 , std::string (bus) + " _READ_COUNTS" , frs_per_G);
185- manifest.add_entry (0 , std::string (bus) + " _READ_TAGS" , frs_per_G);
186+ manifest.add_entry (round , bus, frs_per_G);
187+ manifest.add_entry (round , std::string (bus) + " _READ_COUNTS" , frs_per_G);
188+ manifest.add_entry (round , std::string (bus) + " _READ_TAGS" , frs_per_G);
186189 }
187- manifest. add_challenge ( 0 , std::array{ " eta " , " eta_two " , " eta_three " }) ;
188-
189- // Round 1: lookup + w_4
190- manifest.add_entry ( 1 , " LOOKUP_READ_COUNTS " , frs_per_G );
191- manifest.add_entry (1 , " LOOKUP_READ_TAGS " , frs_per_G);
192- manifest.add_entry (1 , " W_4 " , frs_per_G);
193- manifest.add_challenge ( 1 , std::array{ " beta " , " gamma " } );
194-
195- // Round 2: inverses + z_perm
196- manifest. add_entry ( 2 , " LOOKUP_INVERSES " , frs_per_G);
197- manifest.add_entry ( 2 , " CALLDATA_INVERSES " , frs_per_G );
198- manifest.add_entry ( 2 , " SECONDARY_CALLDATA_INVERSES " , frs_per_G );
199- manifest.add_entry (2 , " RETURN_DATA_INVERSES " , frs_per_G);
200- manifest.add_entry (2 , " Z_PERM " , frs_per_G);
201- manifest.add_challenge ( 2 , " alpha " );
202-
203- // Round 3: gate challenge
204- manifest. add_challenge ( 3 , " HypernovaFoldingProver:gate_challenge " ) ;
205-
206- // Rounds 4-24 : main sumcheck univariates
190+ round++ ;
191+
192+ // Round 1: lookup + w_4 -> beta, gamma challenges
193+ manifest.add_challenge (round, std::array{ " beta " , " gamma " } );
194+ manifest.add_entry (round , " LOOKUP_READ_COUNTS " , frs_per_G);
195+ manifest.add_entry (round , " LOOKUP_READ_TAGS " , frs_per_G);
196+ manifest.add_entry (round, " W_4 " , frs_per_G );
197+ round++;
198+
199+ // Round 2: inverses + z_perm -> alpha + gate_challenge (consecutive challenges in same round)
200+ manifest.add_challenge (round , " alpha " );
201+ manifest.add_challenge (round , " HypernovaFoldingProver:gate_challenge " );
202+ manifest.add_entry (round , " LOOKUP_INVERSES " , frs_per_G);
203+ manifest.add_entry (round , " CALLDATA_INVERSES " , frs_per_G);
204+ manifest.add_entry (round , " SECONDARY_CALLDATA_INVERSES " , frs_per_G );
205+ manifest. add_entry (round, " RETURN_DATA_INVERSES " , frs_per_G);
206+ manifest. add_entry (round, " Z_PERM " , frs_per_G);
207+ round++ ;
208+
209+ // Rounds 3-23 : main sumcheck univariates (21 rounds)
207210 for (size_t i = 0 ; i < NUM_SUMCHECK_UNIVARIATES; ++i) {
208- manifest.add_entry (4 + i, " Sumcheck:univariate_" + std::to_string (i), 8 );
209- manifest.add_challenge (4 + i, " Sumcheck:u_" + std::to_string (i));
211+ manifest.add_challenge (round, " Sumcheck:u_" + std::to_string (i));
212+ manifest.add_entry (round, " Sumcheck:univariate_" + std::to_string (i), 8 );
213+ round++;
210214 }
211215
212- // Round 25: evaluations + unshifted batching challenges
213- manifest.add_entry (25 , " Sumcheck:evaluations" , 60 );
216+ // Round 24: evaluations + all batching challenges (unshifted + shifted in same round)
214217 for (size_t i = 0 ; i < 55 ; ++i) {
215- manifest.add_challenge (25 , " unshifted_challenge_" + std::to_string (i));
218+ manifest.add_challenge (round , " unshifted_challenge_" + std::to_string (i));
216219 }
217-
218- // Round 26: shifted batching challenges
219220 for (size_t i = 0 ; i < 5 ; ++i) {
220- manifest.add_challenge (26 , " shifted_challenge_" + std::to_string (i));
221+ manifest.add_challenge (round , " shifted_challenge_" + std::to_string (i));
221222 }
223+ manifest.add_entry (round, " Sumcheck:evaluations" , 60 );
224+ round++;
222225
223- // Round 27: MLB accumulator data
224- manifest.add_entry (27 , " non_shifted_accumulator_commitment" , frs_per_G);
225- manifest.add_entry (27 , " shifted_accumulator_commitment" , frs_per_G);
226+ // Round 25: Sumcheck:alpha + MLB accumulator data (Sumcheck:alpha is consecutive challenge)
227+ manifest.add_challenge (round, " Sumcheck:alpha" );
228+ manifest.add_entry (round, " non_shifted_accumulator_commitment" , frs_per_G);
229+ manifest.add_entry (round, " shifted_accumulator_commitment" , frs_per_G);
226230 for (size_t i = 0 ; i < NUM_SUMCHECK_UNIVARIATES; ++i) {
227- manifest.add_entry (27 , " accumulator_challenge_" + std::to_string (i), 1 );
231+ manifest.add_entry (round , " accumulator_challenge_" + std::to_string (i), 1 );
228232 }
229- manifest.add_entry (27 , " accumulator_evaluation_0" , 1 );
230- manifest.add_entry (27 , " accumulator_evaluation_1" , 1 );
231- manifest. add_challenge ( 27 , " Sumcheck:alpha " ) ;
233+ manifest.add_entry (round , " accumulator_evaluation_0" , 1 );
234+ manifest.add_entry (round , " accumulator_evaluation_1" , 1 );
235+ round++ ;
232236
233- // Rounds 28-48 : MLB sumcheck univariates
237+ // Rounds 26-46 : MLB sumcheck univariates (21 rounds)
234238 for (size_t i = 0 ; i < NUM_SUMCHECK_UNIVARIATES; ++i) {
235- manifest.add_entry (28 + i, " Sumcheck:univariate_" + std::to_string (i), 4 );
236- manifest.add_challenge (28 + i, " Sumcheck:u_" + std::to_string (i));
239+ manifest.add_challenge (round, " Sumcheck:u_" + std::to_string (i));
240+ manifest.add_entry (round, " Sumcheck:univariate_" + std::to_string (i), 4 );
241+ round++;
237242 }
238243
239- // Round 49 : final evaluations + claim_batching_challenge
240- manifest.add_entry ( 49 , " Sumcheck:evaluations " , 6 );
241- manifest.add_challenge ( 49 , " claim_batching_challenge " );
244+ // Round 47 : final evaluations + claim_batching_challenge
245+ manifest.add_challenge (round , " claim_batching_challenge " );
246+ manifest.add_entry (round , " Sumcheck:evaluations " , 6 );
242247
243248 return manifest;
244249 }
0 commit comments