arnaucube acff8a302b | 1 year ago | |
---|---|---|
.github/workflows | 1 year ago | |
src | 1 year ago | |
.gitignore | 1 year ago | |
Cargo.toml | 1 year ago | |
LICENSE | 1 year ago | |
README.md | 1 year ago |
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:
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:
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);
assert!(v);