MCPcopy Create free account
hub / github.com/docknetwork/crypto / amortization

Function amortization

compressed_sigma/src/amortized_linear_form.rs:294–389  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

292
293 #[test]
294 fn amortization() {
295 fn check(max_size: u32) {
296 let mut rng = StdRng::seed_from_u64(0u64);
297 let linear_form_1 = TestLinearForm1 {};
298 let linear_form_2 = TestLinearForm2 {
299 constants: (0..max_size)
300 .map(|_| Fr::rand(&mut rng))
301 .collect::<Vec<_>>(),
302 };
303
304 let x1 = (0..max_size - 2)
305 .map(|_| Fr::rand(&mut rng))
306 .collect::<Vec<_>>();
307 let gamma1 = Fr::rand(&mut rng);
308 let x2 = (0..max_size - 1)
309 .map(|_| Fr::rand(&mut rng))
310 .collect::<Vec<_>>();
311 let gamma2 = Fr::rand(&mut rng);
312 let x3 = (0..max_size)
313 .map(|_| Fr::rand(&mut rng))
314 .collect::<Vec<_>>();
315 let gamma3 = Fr::rand(&mut rng);
316
317 let g = (0..max_size)
318 .map(|_| <Bls12_381 as Pairing>::G1::rand(&mut rng).into_affine())
319 .collect::<Vec<_>>();
320 let h = <Bls12_381 as Pairing>::G1::rand(&mut rng).into_affine();
321
322 let comm1 = (<Bls12_381 as Pairing>::G1::msm_unchecked(&g, &x1)
323 + h.mul_bigint(gamma1.into_bigint()))
324 .into_affine();
325 let eval1 = linear_form_1.eval(&x1);
326 let eval12 = linear_form_2.eval(&x1);
327
328 let comm2 = (<Bls12_381 as Pairing>::G1::msm_unchecked(&g, &x2)
329 + h.mul_bigint(gamma2.into_bigint()))
330 .into_affine();
331 let eval2 = linear_form_1.eval(&x2);
332 let eval22 = linear_form_2.eval(&x2);
333
334 let comm3 = (<Bls12_381 as Pairing>::G1::msm_unchecked(&g, &x3)
335 + h.mul_bigint(gamma3.into_bigint()))
336 .into_affine();
337 let eval3 = linear_form_1.eval(&x3);
338 let eval32 = linear_form_2.eval(&x3);
339
340 let rand_comm =
341 RandomCommitment::new(&mut rng, &g, &h, max_size, &linear_form_1, None).unwrap();
342 assert_eq!(rand_comm.r.len(), max_size as usize);
343 let challenge = Fr::rand(&mut rng);
344 let response = rand_comm
345 .response(vec![&x1, &x2, &x3], &[gamma1, gamma2, gamma3], &challenge)
346 .unwrap();
347 assert_eq!(response.z_tilde.len(), max_size as usize);
348 response
349 .is_valid(
350 &g,
351 &h,

Callers

nothing calls this directly

Calls 1

checkFunction · 0.70

Tested by

no test coverage detected