Daniel Lubarov 23f0e49c87
Separate some circuit logic from FRI code (#414)
My goal is to make the FRI code independent of circuit objects like `CommonCircuitData`, so that it can be reused by STARK code which won't involve those objects.

A few changes here:

- Move `rate_bits` and `cap_height` into `FriConfig`.
- Move `degree_bits` into `FriParameters` (since it's instance size specific).
- Make `FriParams` contain `FriConfig`, so FRI methods can take just the former and access fields in both.
- Replace `CommonCircuitConfig` with `FriParams` in FRI prover methods.

The FRI verifier methods still involve circuit objects, as they have PLONK logic in `fri_combine_initial`. Will think about how to deal with that after this.
2022-01-02 11:26:26 -08:00
2021-12-30 12:11:02 -08:00
2021-12-28 11:51:13 -08:00
2021-12-28 11:51:13 -08:00
2021-12-28 11:51:13 -08:00
2021-10-27 10:44:36 -07:00
2021-12-28 11:51:13 -08:00
2021-08-19 08:27:14 -07:00
2021-06-10 14:10:35 -07:00

plonky2

plonky2 is an implementation of recursive arguments based on Plonk and FRI. It uses FRI to check systems of polynomial constraints, similar to the DEEP-ALI method described in the DEEP-FRI paper. It is the successor of plonky, which was based on Plonk and Halo.

plonky2 is largely focused on recursion performance. We use custom gates to mitigate the bottlenecks of FRI verification, such as hashing and interpolation. We also encode witness data in a ~64 bit field, so field operations take just a few cycles. To achieve 128-bit security, we repeat certain checks, and run certain parts of the argument in an extension field.

Running

To see recursion performance, one can run this test, which generates a chain of three recursion proofs:

RUST_LOG=debug RUSTFLAGS=-Ctarget-cpu=native cargo test --release test_recursive_recursive_verifier -- --ignored

Disclaimer

This code has not been thoroughly reviewed or tested, and should not be used in any production systems.

Description
the Plonky2 proof system
Readme
Languages
Rust 98.4%
JavaScript 0.6%
Python 0.6%
HTML 0.3%