@@ -214,8 +214,12 @@ struct VerifierIndexCached {
214
214
mul_comm : PolyComm < Pallas > ,
215
215
emul_comm : PolyComm < Pallas > ,
216
216
endomul_scalar_comm : PolyComm < Pallas > ,
217
+ range_check0_comm : Option < PolyComm < Pallas > > ,
218
+ range_check1_comm : Option < PolyComm < Pallas > > ,
217
219
foreign_field_add_comm : Option < PolyComm < Pallas > > ,
220
+ foreign_field_mul_comm : Option < PolyComm < Pallas > > ,
218
221
xor_comm : Option < PolyComm < Pallas > > ,
222
+ rot_comm : Option < PolyComm < Pallas > > ,
219
223
shift : [ BigInt ; PERMUTS ] , // Fq
220
224
zkpm : DensePolynomialCached ,
221
225
w : BigInt , // Fq
@@ -275,56 +279,117 @@ where
275
279
276
280
impl From < & VerifierIndex < Pallas > > for VerifierIndexCached {
277
281
fn from ( v : & VerifierIndex < Pallas > ) -> Self {
282
+ let VerifierIndex {
283
+ domain,
284
+ max_poly_size,
285
+ srs,
286
+ public,
287
+ prev_challenges,
288
+ sigma_comm,
289
+ coefficients_comm,
290
+ generic_comm,
291
+ psm_comm,
292
+ complete_add_comm,
293
+ mul_comm,
294
+ emul_comm,
295
+ endomul_scalar_comm,
296
+ range_check0_comm,
297
+ range_check1_comm,
298
+ foreign_field_add_comm,
299
+ foreign_field_mul_comm,
300
+ xor_comm,
301
+ rot_comm,
302
+ shift,
303
+ zkpm,
304
+ w,
305
+ endo,
306
+ lookup_index,
307
+ linearization,
308
+ powers_of_alpha : _, // ignored
309
+ } = v;
310
+
278
311
Self {
279
- domain : ( & v. domain ) . into ( ) ,
280
- max_poly_size : v. max_poly_size ,
281
- srs : ( & * * v. srs . get ( ) . unwrap ( ) ) . into ( ) ,
282
- public : v. public ,
283
- prev_challenges : v. prev_challenges ,
284
- sigma_comm : v. sigma_comm . clone ( ) ,
285
- coefficients_comm : v. coefficients_comm . clone ( ) ,
286
- generic_comm : v. generic_comm . clone ( ) ,
287
- psm_comm : v. psm_comm . clone ( ) ,
288
- complete_add_comm : v. complete_add_comm . clone ( ) ,
289
- mul_comm : v. mul_comm . clone ( ) ,
290
- emul_comm : v. emul_comm . clone ( ) ,
291
- endomul_scalar_comm : v. endomul_scalar_comm . clone ( ) ,
292
- foreign_field_add_comm : v. foreign_field_add_comm . clone ( ) ,
293
- xor_comm : v. xor_comm . clone ( ) ,
294
- shift : std:: array:: from_fn ( |i| v. shift [ i] . into ( ) ) ,
295
- zkpm : v. zkpm . get ( ) . unwrap ( ) . into ( ) ,
296
- w : ( * v. w . get ( ) . unwrap ( ) ) . into ( ) ,
297
- endo : v. endo . into ( ) ,
298
- lookup_index : v. lookup_index . clone ( ) ,
299
- linearization : conv_linearization ( & v. linearization ) ,
312
+ domain : domain. into ( ) ,
313
+ max_poly_size : * max_poly_size,
314
+ srs : ( & * * srs. get ( ) . unwrap ( ) ) . into ( ) ,
315
+ public : * public,
316
+ prev_challenges : * prev_challenges,
317
+ sigma_comm : sigma_comm. clone ( ) ,
318
+ coefficients_comm : coefficients_comm. clone ( ) ,
319
+ generic_comm : generic_comm. clone ( ) ,
320
+ psm_comm : psm_comm. clone ( ) ,
321
+ complete_add_comm : complete_add_comm. clone ( ) ,
322
+ mul_comm : mul_comm. clone ( ) ,
323
+ emul_comm : emul_comm. clone ( ) ,
324
+ endomul_scalar_comm : endomul_scalar_comm. clone ( ) ,
325
+ range_check0_comm : range_check0_comm. clone ( ) ,
326
+ range_check1_comm : range_check1_comm. clone ( ) ,
327
+ foreign_field_add_comm : foreign_field_add_comm. clone ( ) ,
328
+ foreign_field_mul_comm : foreign_field_mul_comm. clone ( ) ,
329
+ xor_comm : xor_comm. clone ( ) ,
330
+ rot_comm : rot_comm. clone ( ) ,
331
+ shift : std:: array:: from_fn ( |i| shift[ i] . into ( ) ) ,
332
+ zkpm : zkpm. get ( ) . unwrap ( ) . into ( ) ,
333
+ w : ( * w. get ( ) . unwrap ( ) ) . into ( ) ,
334
+ endo : endo. into ( ) ,
335
+ lookup_index : lookup_index. clone ( ) ,
336
+ linearization : conv_linearization ( & linearization) ,
300
337
}
301
338
}
302
339
}
303
340
304
341
impl From < & VerifierIndexCached > for VerifierIndex < Pallas > {
305
342
fn from ( v : & VerifierIndexCached ) -> Self {
343
+ let VerifierIndexCached {
344
+ domain,
345
+ max_poly_size,
346
+ srs,
347
+ public,
348
+ prev_challenges,
349
+ sigma_comm,
350
+ coefficients_comm,
351
+ generic_comm,
352
+ psm_comm,
353
+ complete_add_comm,
354
+ mul_comm,
355
+ emul_comm,
356
+ endomul_scalar_comm,
357
+ range_check0_comm,
358
+ range_check1_comm,
359
+ foreign_field_add_comm,
360
+ foreign_field_mul_comm,
361
+ xor_comm,
362
+ rot_comm,
363
+ shift,
364
+ zkpm,
365
+ w,
366
+ endo,
367
+ lookup_index,
368
+ linearization,
369
+ } = v;
370
+
306
371
Self {
307
- domain : ( & v . domain ) . into ( ) ,
308
- max_poly_size : v . max_poly_size ,
309
- srs : OnceCell :: with_value ( Arc :: new ( ( & v . srs ) . into ( ) ) ) ,
310
- public : v . public ,
311
- prev_challenges : v . prev_challenges ,
312
- sigma_comm : v . sigma_comm . clone ( ) ,
313
- coefficients_comm : v . coefficients_comm . clone ( ) ,
314
- generic_comm : v . generic_comm . clone ( ) ,
315
- psm_comm : v . psm_comm . clone ( ) ,
316
- complete_add_comm : v . complete_add_comm . clone ( ) ,
317
- mul_comm : v . mul_comm . clone ( ) ,
318
- emul_comm : v . emul_comm . clone ( ) ,
319
- endomul_scalar_comm : v . endomul_scalar_comm . clone ( ) ,
320
- foreign_field_add_comm : v . foreign_field_add_comm . clone ( ) ,
321
- xor_comm : v . xor_comm . clone ( ) ,
322
- shift : std:: array:: from_fn ( |i| v . shift [ i] . to_field ( ) ) ,
323
- zkpm : OnceCell :: with_value ( ( & v . zkpm ) . into ( ) ) ,
324
- w : OnceCell :: with_value ( v . w . to_field ( ) ) ,
325
- endo : v . endo . to_field ( ) ,
326
- lookup_index : v . lookup_index . clone ( ) ,
327
- linearization : conv_linearization ( & v . linearization ) ,
372
+ domain : domain. into ( ) ,
373
+ max_poly_size : * max_poly_size,
374
+ srs : OnceCell :: with_value ( Arc :: new ( srs. into ( ) ) ) ,
375
+ public : * public,
376
+ prev_challenges : * prev_challenges,
377
+ sigma_comm : sigma_comm. clone ( ) ,
378
+ coefficients_comm : coefficients_comm. clone ( ) ,
379
+ generic_comm : generic_comm. clone ( ) ,
380
+ psm_comm : psm_comm. clone ( ) ,
381
+ complete_add_comm : complete_add_comm. clone ( ) ,
382
+ mul_comm : mul_comm. clone ( ) ,
383
+ emul_comm : emul_comm. clone ( ) ,
384
+ endomul_scalar_comm : endomul_scalar_comm. clone ( ) ,
385
+ foreign_field_add_comm : foreign_field_add_comm. clone ( ) ,
386
+ xor_comm : xor_comm. clone ( ) ,
387
+ shift : std:: array:: from_fn ( |i| shift[ i] . to_field ( ) ) ,
388
+ zkpm : OnceCell :: with_value ( zkpm. into ( ) ) ,
389
+ w : OnceCell :: with_value ( w. to_field ( ) ) ,
390
+ endo : endo. to_field ( ) ,
391
+ lookup_index : lookup_index. clone ( ) ,
392
+ linearization : conv_linearization ( & linearization) ,
328
393
powers_of_alpha : {
329
394
// `Alphas` contains private data, so we can't de/serialize it.
330
395
// Initializing an `Alphas` is cheap anyway (for block verification).
@@ -339,10 +404,10 @@ impl From<&VerifierIndexCached> for VerifierIndex<Pallas> {
339
404
powers_of_alpha. register ( ArgumentType :: Permutation , permutation:: CONSTRAINTS ) ;
340
405
powers_of_alpha
341
406
} ,
342
- range_check0_comm : None ,
343
- range_check1_comm : None ,
344
- foreign_field_mul_comm : None ,
345
- rot_comm : None ,
407
+ range_check0_comm : range_check0_comm . clone ( ) ,
408
+ range_check1_comm : range_check1_comm . clone ( ) ,
409
+ foreign_field_mul_comm : foreign_field_mul_comm . clone ( ) ,
410
+ rot_comm : rot_comm . clone ( ) ,
346
411
}
347
412
}
348
413
}
0 commit comments