OpenViSTAI · Agents · Blockchain · Crypto
Menu
ZK & Privacy

Picus

Picus is a Rust-based security analysis tool for zero-knowledge proof circuits. It accepts an R1CS constraint system and checks whether output signals are uniquely determined by public inputs, producing a concrete pair of distinct valid witnesses when it finds ambiguity. It is available as a CLI and Rust library, with a default native finite-field solver and optional cvc5 and z3 backends.

Independent OpenViST project profile, based on linked sources.

Picus — OpenViST project profile in ZK & Privacy.
OpenViST project illustration. See the linked sources for product details.
Understand the project

Practical overview

When it fits

Use Picus during zero-knowledge circuit security review when an R1CS representation is available and the team needs an automated uniqueness check or a concrete witness counterexample.

Who it is for

  • Zero-knowledge circuit developers
  • Security reviewers analyzing R1CS constraints
  • Teams building Circom or circomlib-based circuit workflows
  • Rust developers integrating circuit checks into tooling

Documented uses

  • Detect under-constrained signals in a zero-knowledge circuit
  • Verify witness uniqueness against public inputs
  • Generate concrete counterexamples for ambiguous R1CS assignments
  • Inspect R1CS metadata and expose results in machine-readable form
  • Embed circuit checking in a Rust application
Before you choose

Requirements & limits

The repository is public and released under the MIT license. Installation and local builds are documented through Cargo, with Docker also provided as a build and run path. The default native solver does not require an external solver.

  • Input format: the documented check operates on R1CS circuit files.
  • Default dependency profile: the native finite-field solver is built without an external solver.
  • Output integration: JSON output and a Rust API support automation.
  • Backend trade-offs: cvc5 and z3 require explicit feature opt-in and additional build requirements; cvc5 also carries GPLv3 licensing.
  • Result interpretation: the API distinguishes Safe, Unsafe with witness pairs, and Unknown.

Check current requirements in the official documentation. Source-based guidance does not mean OpenViST has run or independently tested this project.

Source-based practical guide

Check an R1CS circuit with Picus

Verify whether circuit outputs are uniquely determined by public inputs and obtain a counterexample when they are not.

Before you start

  • A Rust toolchain for the documented Cargo installation or build path, or Docker for the documented container path.
  • An R1CS circuit file such as circuit.r1cs.

Steps

  1. Install Picus with the command below, or build it with the command below.

    Documented command
    cargo install --path crates/picus-cli
    Documented command
    cargo build --release
  2. Run picus check --r1cs circuit.r1cs using the default native finite-field solver.

  3. For container-based use, build the image with the command below and run the documented Docker command with the circuit mounted at /data.

    Documented command
    docker build -t picus .
  4. Use --format json when machine-readable output is required, or inspect metadata with picus info --r1cs circuit.r1cs --constraints.

Expected outcome

Picus returns a uniqueness result; an unsafe result includes two distinct witness assignments, while the library API exposes Safe, Unsafe and Unknown result variants.

Guide limitations

  • This procedure checks an R1CS constraint system; it does not document circuit compilation from source languages.
  • The cvc5 and z3 backends are separate opt-in builds with additional requirements. The cvc5 option carries GPLv3 licensing.
  • A result may be Unknown, as represented by the library API.
COMPARE OPTIONS

Compare options for Zero-knowledge verification

These projects document a common task and share a project role. This is a source-based comparison, not an execution benchmark or a guarantee of interchangeability.

ProjectDocumented purposePlatformAccess and requirements
PicusDetect under-constrained signals in a zero-knowledge circuitCLIThe repository is public and released under the MIT license. Installation and local builds are documented through Cargo, with Docker also provided as a build and run path. The default native solver does not require an external solver.
ProvenZKRepresent circuit gates and vectors in LeanCLI, Linux, macOS, WindowsThe repository is publicly accessible, open source and licensed under Apache-2.0. It is presented as a Lean 4 library for projects using the lake tool.
Evidence and transparency

Sources & review

Source record details
Source availability
Active
Sources checked
3 October 2026
Original website title
chyanju/picus · Official homepage title · retained in its source language