This is a template for creating an end-to-end SP1 project that can generate a proof of any RISC-V program.
There are 3 main ways to run this project: execute a program, generate a core proof, and generate an EVM-compatible proof.
The program is automatically built through script/build.rs when the script is built.
To run the program without generating a proof:
cd script
cargo run --release -- --executeThis will execute the program and display the output.
To generate an SP1 core proof for your program:
cd script
cargo run --release -- --proveWarning
You will need at least 16GB RAM to generate a Groth16 or PLONK proof. View the SP1 docs for more information.
Generating a proof that is cheap to verify on the EVM (e.g. Groth16 or PLONK) is more intensive than generating a core proof.
To generate a Groth16 proof:
cd script
cargo run --release --bin evm -- --system groth16To generate a PLONK proof:
cargo run --release --bin evm -- --system plonkThese commands will also generate fixtures that can be used to test the verification of SP1 proofs inside Solidity.
To retrieve your programVKey for your on-chain contract, run the following command in script:
cargo run --release --bin vkeyWe highly recommend using the Succinct Prover Network for any non-trivial programs or benchmarking purposes. For more information, see the key setup guide to get started.
To get started, copy the example environment file:
cp .env.example .envThen, set the SP1_PROVER environment variable to network and set the NETWORK_PRIVATE_KEY
environment variable to your whitelisted private key.
For example, to generate an EVM-compatible proof using the prover network, run the following command:
SP1_PROVER=network NETWORK_PRIVATE_KEY=... cargo run --release --bin evm