Installation

The only way to install powdr currently is to build it from source. There are two binaries,

  • powdr compiles powdr-asm files to powdr-PIL and generates witnesses and proofs.
  • powdr-rs compiles Rust crates to powdr-asm via RISCV, and executes powdr-asm code with given inputs.

Prerequisites

You will need the Rust compiler and Cargo, the Rust package manager. The easiest way to install both is with rustup.rs.

On Windows, you will also need a recent version of Visual Studio, installed with the "Desktop Development With C++" Workloads option.

If you want to enable the estark-polygon feature, you also need the following runtime dependencies:

  • gcc
  • nlohmann-json3-dev

You will also need the following build time dependencies:

  • make
  • pkg-config
  • libpqxx-dev (Ubuntu) | libpqxx (Arch Linux)
  • nasm

Building powdr

Using a single Cargo command, enabling the Halo2 and Plonky3 backends:

cargo install --git https://github.com/powdr-labs/powdr --features halo2,plonky3 powdr-cli

With SIMD support for the provers that support it:

RUSTFLAGS='-C target-cpu=native' cargo install --git https://github.com/powdr-labs/powdr --features halo2,plonky3,plonky3-simd powdr-cli

Or, by manually building from a local copy of the powdr repository:

# clone the repository
git clone https://github.com/powdr-labs/powdr.git
cd powdr
# install powdr-cli
cargo install --features halo2,plonky3 --path ./cli
# install powdr-cli with SIMD support (only for the crates that support it)
RUSTFLAGS='-C target-cpu=native' cargo install --features halo2,plonky3,plonky3-simd --path ./cli

Building powdr-rs

Using a single Cargo command:

cargo install --git https://github.com/powdr-labs/powdr powdr-rs-cli

Or, by manually building from a local copy of the powdr repository:

# clone the repository
git clone https://github.com/powdr-labs/powdr.git
cd powdr
# install powdr-rs-cli
cargo install --path ./cli-rs