Daniel Lubarov 5f79b9630e
Update division calls (#132)
We have two division methods: one "unsafe" one, which permits 0/0 = anything, and one "safe" one, for which 0/0 results in an unsatisfiable instance. The latter is slightly more expensive.

I switched a few calls over to safe division, where unsafe division didn't seem sound (or at least it wasn't obvious). For calls where unsafe division did seem sound, I added comments explaining why.

Closes #97.
2021-07-28 18:06:32 -07:00
2021-07-28 18:06:32 -07:00
2021-02-17 14:36:32 -08:00
2021-07-15 07:40:41 -07:00
2021-04-08 09:37:08 -07:00
2021-04-08 09:37:08 -07:00
2021-05-20 19:49:20 -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 run the recursion benchmark,

RUSTFLAGS=-Ctarget-cpu=native cargo run --release

Disclaimer

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

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

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