@@ -134,7 +134,7 @@ pub fn challenge_polynomial_checked<F: FieldWitness>(
134
134
}
135
135
136
136
/// Note: Outdated URL
137
- /// Note: Same as `to_absorption_sequence`
137
+ /// Note: Different than `to_absorption_sequence`
138
138
/// https://github.com/MinaProtocol/mina/blob/4af0c229548bc96d76678f11b6842999de5d3b0b/src/lib/pickles_types/plonk_types.ml#L611
139
139
pub fn proof_evaluation_to_list < F : FieldWitness > (
140
140
e : & ProofEvaluations < PointEvaluations < Vec < F > > > ,
@@ -211,6 +211,85 @@ pub fn proof_evaluation_to_list<F: FieldWitness>(
211
211
list
212
212
}
213
213
214
+ pub fn proof_evaluation_to_absorption_sequence < F : FieldWitness > (
215
+ e : & ProofEvaluations < PointEvaluations < Vec < F > > > ,
216
+ ) -> Vec < & PointEvaluations < Vec < F > > > {
217
+ let ProofEvaluations {
218
+ public : _,
219
+ w,
220
+ coefficients,
221
+ z,
222
+ s,
223
+ generic_selector,
224
+ poseidon_selector,
225
+ complete_add_selector,
226
+ mul_selector,
227
+ emul_selector,
228
+ endomul_scalar_selector,
229
+ range_check0_selector,
230
+ range_check1_selector,
231
+ foreign_field_add_selector,
232
+ foreign_field_mul_selector,
233
+ xor_selector,
234
+ rot_selector,
235
+ lookup_aggregation,
236
+ lookup_table,
237
+ lookup_sorted,
238
+ runtime_lookup_table,
239
+ runtime_lookup_table_selector,
240
+ xor_lookup_selector,
241
+ lookup_gate_lookup_selector,
242
+ range_check_lookup_selector,
243
+ foreign_field_mul_lookup_selector,
244
+ } = e;
245
+
246
+ let mut list = vec ! [
247
+ z,
248
+ generic_selector,
249
+ poseidon_selector,
250
+ complete_add_selector,
251
+ mul_selector,
252
+ emul_selector,
253
+ endomul_scalar_selector,
254
+ ] ;
255
+
256
+ list. extend ( w. iter ( ) ) ;
257
+ list. extend ( coefficients. iter ( ) ) ;
258
+ list. extend ( s. iter ( ) ) ;
259
+
260
+ list. extend (
261
+ [
262
+ range_check0_selector,
263
+ range_check1_selector,
264
+ foreign_field_add_selector,
265
+ foreign_field_mul_selector,
266
+ xor_selector,
267
+ rot_selector,
268
+ lookup_aggregation,
269
+ lookup_table,
270
+ ]
271
+ . into_iter ( )
272
+ . filter_map ( |v| v. as_ref ( ) ) ,
273
+ ) ;
274
+
275
+ list. extend ( lookup_sorted. iter ( ) . filter_map ( |v| v. as_ref ( ) ) ) ;
276
+
277
+ list. extend (
278
+ [
279
+ runtime_lookup_table,
280
+ runtime_lookup_table_selector,
281
+ xor_lookup_selector,
282
+ lookup_gate_lookup_selector,
283
+ range_check_lookup_selector,
284
+ foreign_field_mul_lookup_selector,
285
+ ]
286
+ . into_iter ( )
287
+ . filter_map ( |v| v. as_ref ( ) ) ,
288
+ ) ;
289
+
290
+ list. iter ( ) . cloned ( ) . collect ( )
291
+ }
292
+
214
293
/// https://github.com/MinaProtocol/mina/blob/4af0c229548bc96d76678f11b6842999de5d3b0b/src/lib/pickles_types/plonk_types.ml#L611
215
294
pub fn proof_evaluation_to_list_opt < F : FieldWitness > (
216
295
e : & ProofEvaluations < PointEvaluations < Vec < F > > > ,
@@ -312,7 +391,98 @@ pub fn to_absorption_sequence_opt<F: FieldWitness>(
312
391
evals : & ProofEvaluations < PointEvaluations < Vec < F > > > ,
313
392
hack_feature_flags : OptFlag ,
314
393
) -> Vec < Opt < PointEvaluations < Vec < F > > > > {
315
- proof_evaluation_to_list_opt ( evals, hack_feature_flags)
394
+ let ProofEvaluations {
395
+ public : _,
396
+ w,
397
+ coefficients,
398
+ z,
399
+ s,
400
+ generic_selector,
401
+ poseidon_selector,
402
+ complete_add_selector,
403
+ mul_selector,
404
+ emul_selector,
405
+ endomul_scalar_selector,
406
+ range_check0_selector,
407
+ range_check1_selector,
408
+ foreign_field_add_selector,
409
+ foreign_field_mul_selector,
410
+ xor_selector,
411
+ rot_selector,
412
+ lookup_aggregation,
413
+ lookup_table,
414
+ lookup_sorted,
415
+ runtime_lookup_table,
416
+ runtime_lookup_table_selector,
417
+ xor_lookup_selector,
418
+ lookup_gate_lookup_selector,
419
+ range_check_lookup_selector,
420
+ foreign_field_mul_lookup_selector,
421
+ } = evals;
422
+
423
+ let mut list = vec ! [
424
+ Opt :: Some ( z. clone( ) ) ,
425
+ Opt :: Some ( generic_selector. clone( ) ) ,
426
+ Opt :: Some ( poseidon_selector. clone( ) ) ,
427
+ Opt :: Some ( complete_add_selector. clone( ) ) ,
428
+ Opt :: Some ( mul_selector. clone( ) ) ,
429
+ Opt :: Some ( emul_selector. clone( ) ) ,
430
+ Opt :: Some ( endomul_scalar_selector. clone( ) ) ,
431
+ ] ;
432
+
433
+ list. extend ( w. iter ( ) . cloned ( ) . map ( Opt :: Some ) ) ;
434
+ list. extend ( coefficients. iter ( ) . cloned ( ) . map ( Opt :: Some ) ) ;
435
+ list. extend ( s. iter ( ) . cloned ( ) . map ( Opt :: Some ) ) ;
436
+
437
+ let zero = || PointEvaluations {
438
+ zeta : vec ! [ F :: zero( ) ] ,
439
+ zeta_omega : vec ! [ F :: zero( ) ] ,
440
+ } ;
441
+ let to_opt = |v : & Option < PointEvaluations < Vec < F > > > | {
442
+ if let OptFlag :: Maybe = hack_feature_flags {
443
+ match v {
444
+ Some ( v) => Opt :: Maybe ( Boolean :: True , v. clone ( ) ) ,
445
+ None => Opt :: Maybe ( Boolean :: False , zero ( ) ) ,
446
+ }
447
+ } else {
448
+ match v {
449
+ Some ( v) => Opt :: Some ( v. clone ( ) ) ,
450
+ None => Opt :: No ,
451
+ }
452
+ }
453
+ } ;
454
+
455
+ list. extend (
456
+ [
457
+ range_check0_selector,
458
+ range_check1_selector,
459
+ foreign_field_add_selector,
460
+ foreign_field_mul_selector,
461
+ xor_selector,
462
+ rot_selector,
463
+ lookup_aggregation,
464
+ lookup_table,
465
+ ]
466
+ . iter ( )
467
+ . map ( |e| to_opt ( e) ) ,
468
+ ) ;
469
+
470
+ list. extend ( lookup_sorted. iter ( ) . map ( to_opt) ) ;
471
+
472
+ list. extend (
473
+ [
474
+ runtime_lookup_table,
475
+ runtime_lookup_table_selector,
476
+ xor_lookup_selector,
477
+ lookup_gate_lookup_selector,
478
+ range_check_lookup_selector,
479
+ foreign_field_mul_lookup_selector,
480
+ ]
481
+ . into_iter ( )
482
+ . map ( to_opt) ,
483
+ ) ;
484
+
485
+ list
316
486
}
317
487
318
488
pub fn sha256_sum ( s : & [ u8 ] ) -> String {
0 commit comments