Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Write Applications

To utilize the ProverNet, you must first develop your application logic and compile it for the Pico zkVM to generate its unique identifier.


1. Install Pico CLI

The Pico CLI is required to build programs and manage zkVM artifacts. Please use version v1.2.2.

Option 1: Install via Cargo

cargo +nightly-2025-08-04 install --git https://github.com/brevis-network/pico --tag v1.2.2 pico-cli

Option 2: Install from a Local Checkout

git clone https://github.com/brevis-network/pico
cd pico
git checkout v1.2.2
cd sdk/cli
cargo install --locked --force --path .

Verify the installation:

cargo pico --version

2. Build the Application (ELF Artifact)

Pico applications are compiled into a RISC-V Executable and Linkable Format (ELF) file.

To build your program into an ELF, run:

cd <app-name>
cargo pico build
cd ..

3. Generate the Verification Key (App ID)

Every program ELF has a unique, deterministic Verification Key (VK), which serves as the App ID on ProverNet. This key is static for a specific version of your code.

Use the helper tool in the evm-pico-apps repository to extract it:

VK_VERIFICATION=true cargo run -r --bin gen-app-id -- --elf <app-name>/elf/riscv32im-pico-zkvm-elf

Example (Fibonacci app):

VK_VERIFICATION=true cargo run -r --bin gen-app-id -- --elf fibonacci/elf/riscv32im-pico-zkvm-elf

Sample output:

Generated app_id: 0x00399db87f8d0d43e1795c4aebffe8cc58486e41b98371bdf667f3d29ce4476b

This app_id (the vk) along with the ELF is what you will use in your proof requests to tell the network exactly which program logic needs to be executed.