Picus
Picus is a tool to determine if a ZK-circuit is underconstrained or not.
Picus takes as input either a .circom
file or a .r1cs
file.
The tool then returns one of the following status
safe
(exit code 8): the circuit is guaranteed to not be underconstrained.unknown
(exit code 0): the tool can't make any guarantee, but also can't find any counterexample.unsafe
(exit code 9): the circuit is underconstrained. In this case, Picus can additional output two witness files (.wtns
) as counterexamples.
Picus is based on a research paper Automated Detection of Under-Constrained Circuits in Zero-Knowledge Proofs (PLDI 2023).
Getting Started
For instructions on how to get started with running Picus, checkout the guide here.