FRI low degree testing & FRI polynomial commitment using [VP19]'s trick. Implementation using arkworks libraries.
Note: done in my free time to learn about FRI, do not use in production.
Thanks to Vincenzo Iovino for explainations on FRI & [VP19].
FRI-LDT:
typeLDT = FRI_LDT<Fr,DensePolynomial<Fr>,Keccak256Hash<Fr>>;let deg = 31;let p = DensePolynomial::<Fr>::rand(deg,&mut ark_std::test_rng());let proof = LDT::prove(&p);let v = LDT::verify(proof, deg);assert!(v);FRI-PCS:
typePCS = FRI_PCS<Fr,DensePolynomial<Fr>,Keccak256Hash<Fr>>;let deg = 31;letmut rng = ark_std::test_rng();let p = DensePolynomial::<Fr>::rand(deg,&mut rng);let commitment = PCS::commit(&p);let r = Fr::rand(&mut rng);let(proof, claimed_y) = PCS::open(&p, r);let v = PCS::verify(commitment, proof, r, claimed_y);assert!(v);