@@ -214,8 +214,12 @@ struct VerifierIndexCached {
214214 mul_comm : PolyComm < Pallas > ,
215215 emul_comm : PolyComm < Pallas > ,
216216 endomul_scalar_comm : PolyComm < Pallas > ,
217+ range_check0_comm : Option < PolyComm < Pallas > > ,
218+ range_check1_comm : Option < PolyComm < Pallas > > ,
217219 foreign_field_add_comm : Option < PolyComm < Pallas > > ,
220+ foreign_field_mul_comm : Option < PolyComm < Pallas > > ,
218221 xor_comm : Option < PolyComm < Pallas > > ,
222+ rot_comm : Option < PolyComm < Pallas > > ,
219223 shift : [ BigInt ; PERMUTS ] , // Fq
220224 zkpm : DensePolynomialCached ,
221225 w : BigInt , // Fq
@@ -275,56 +279,117 @@ where
275279
276280impl From < & VerifierIndex < Pallas > > for VerifierIndexCached {
277281 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+
278311 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) ,
300337 }
301338 }
302339}
303340
304341impl From < & VerifierIndexCached > for VerifierIndex < Pallas > {
305342 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+
306371 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) ,
328393 powers_of_alpha : {
329394 // `Alphas` contains private data, so we can't de/serialize it.
330395 // Initializing an `Alphas` is cheap anyway (for block verification).
@@ -339,10 +404,10 @@ impl From<&VerifierIndexCached> for VerifierIndex<Pallas> {
339404 powers_of_alpha. register ( ArgumentType :: Permutation , permutation:: CONSTRAINTS ) ;
340405 powers_of_alpha
341406 } ,
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 ( ) ,
346411 }
347412 }
348413}
0 commit comments