arnaucube
arnaucube/fri-commitmentPublic Self-hosted repository
fri-commitment/README.md
README.mdRaw
 1# fri-commitment [![Test](https://github.com/arnaucube/fri-commitment/workflows/Test/badge.svg)](https://github.com/arnaucube/fri-commitment/actions?query=workflow%3ATest)
 2
 3FRI low degree testing & FRI polynomial commitment using [[VP19]](https://eprint.iacr.org/2019/1020)'s trick. Implementation using arkworks libraries.
 4
 5> *Note*: done in my free time to learn about FRI, do not use in production.
 6
 7
 8Thanks 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).
 9
10## Usage
11
12FRI-LDT:
13```rust
14type LDT = FRI_LDT<Fr, DensePolynomial<Fr>, Keccak256Hash<Fr>>;
15
16let deg = 31;
17let p = DensePolynomial::<Fr>::rand(deg, &mut ark_std::test_rng());
18
19let proof = LDT::prove(&p);
20
21let v = LDT::verify(proof, deg);
22assert!(v);
23```
24
25FRI-PCS:
26```rust
27type PCS = FRI_PCS<Fr, DensePolynomial<Fr>, Keccak256Hash<Fr>>;
28
29let deg = 31;
30let mut rng = ark_std::test_rng();
31let p = DensePolynomial::<Fr>::rand(deg, &mut rng);
32
33let commitment = PCS::commit(&p);
34
35let r = Fr::rand(&mut rng);
36
37let (proof, claimed_y) = PCS::open(&p, r);
38
39let v = PCS::verify(commitment, proof, r, claimed_y);
40assert!(v);
41```