5 stable releases

Uses new Rust 2024

1.6.0 May 4, 2026
1.3.0 Apr 17, 2025
1.1.0 Feb 14, 2025
1.0.1 Jan 23, 2025
1.0.0 Jan 16, 2025

#9 in #dusk


Used in 2 crates

MPL-2.0 license

205KB
4K SLoC

📨 Rusk Prover

Local PLONK zero-knowledge prover for Phoenix (shielded) transactions

Overview

Rusk Prover generates PLONK zero-knowledge proofs for Phoenix transactions locally. It implements the dusk_core::transfer::phoenix::Prove trait and supports transaction circuits with 1 to 4 input notes (each producing 2 output notes). Prover keys are loaded lazily from rusk-profile.

How It Works

  1. Receives a serialized TxCircuitVec containing the transaction circuit data
  2. Selects the matching circuit variant based on the number of input notes:
    • 1-in / 2-out
    • 2-in / 2-out
    • 3-in / 2-out
    • 4-in / 2-out
  3. Loads the corresponding prover key from the profile directory (cached after first load)
  4. Generates and returns the PLONK proof

Features

Feature Description
no_random Use a seeded RNG for deterministic proofs (for testing)
debug Enable tracing and hex logging of proof data
  • dusk-core — defines the Prove trait and Phoenix circuit types
  • rusk-profile — stores and retrieves circuit prover keys
  • rusk — uses the prover in prover node mode (--features prover)
  • rusk-test — uses the prover with no_random + debug for deterministic test proofs

Dependencies

~21MB
~340K SLoC