As part of the ZKProof standardization effort, the Plonkish Constraint System Working Group is developing a specification, a reference implementation written in Rust, and test vectors for Plonkish arithmetization.
See also Mary's presentation about the Plonkish Working Group.
Plonkish arithmetization is a means of expressing circuits for probabilistic and/or zero-knowledge proving systems. This arithmetization was originally developed in the context of the PLONK proving system, and refined for use in the Halo 2 proving system. The variant of Plonkish used by Halo 2 is the initial focus for this standardization effort.
The software and specifications in this repository are currently under development and have not been fully reviewed.
cargo install mdbook
cargo install mdbook-katexmdbook buildThe rendered documents can be viewed at docs/index.html.
The Markdown files can also be previewed using the Markdown All in One extension. This is often faster and more convenient to use because it updates automatically on non-macro changes.
This extension does not automatically read the src/macros.txt file
used by mdbook for macro definitions; it instead uses .vscode/settings.json,
which is in a different format. To regenerate this file from src/macros.txt,
run
util/gen-settings.shTo use the Lean formalization, we recommend VS Code. Instructions on setting up VS Code for Lean 4 are here.
All files in this repository are licensed under any of:
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
- Creative Commons Attribution 4.0 International (LICENSE-CC-BY-4.0 or https://creativecommons.org/licenses/by/4.0/legalcode.en)
at your option.
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 triple-licensed as above, without any additional terms or conditions.