FRI low degree testing & FRI polynomial commitment using [[VP19]](https://eprint.iacr.org/2019/1020)'s trick. Implementation using arkworks libraries.
> *Note*: done in my free time to learn about FRI, do not use in production.
> *Note*: done in my free time to learn about FRI, do not use in production.
Thanks to [Vincenzo Iovino](https://sites.google.com/site/vincenzoiovinoit/) for explainations on [FRI](https://eccc.weizmann.ac.il/report/2017/134/).
Thanks to [Vincenzo Iovino](https://sites.google.com/site/vincenzoiovinoit/) for explainations on [FRI](https://eccc.weizmann.ac.il/report/2017/134/) & [[VP19]](https://eprint.iacr.org/2019/1020).
## Usage
FRI-LDT:
```rust
type LDT = 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:
```rust
type PCS = FRI_PCS<Fr,DensePolynomial<Fr>, Keccak256Hash<Fr>>;
let deg = 31;
let mut 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);