← Protocols
Succinct
ZK / Privacy·EVM · Multi-chain

Succinct

01Description

SP1 zkVM lets you prove the execution of arbitrary Rust (or any LLVM-compiled) program. The Succinct Prover Network is a decentralized cloud that generates SP1 proofs for production workloads, including the Hypercube prover that targets real-time Ethereum proving.

02Best for
  • 01general-purpose ZK programs in Rust
  • 02rollup / bridge proofs
  • 03verifiable off-chain compute
  • 04production proving without GPU ops
  • 05Ethereum block proving
03Install
  • curl -L https://sp1up.succinct.xyz | bash
  • sp1up
  • cargo prove new my-program
  • cargo add sp1-sdk
04Environment variables
VariableScopeDescription
SP1_PROVERServerSet to `network` to use the Succinct Prover Network, or `cpu`/`cuda` for local proving.
NETWORK_PRIVATE_KEYServerPrivate key registered with the Succinct Prover Network for submitting proof requests.
NETWORK_RPC_URLServerOptional override for the Succinct Prover Network RPC endpoint.
05Prompt snippet
Use Succinct SP1 to prove arbitrary Rust programs. Scaffold with `cargo prove new` to get a `program` (the guest, compiled to RISC-V) and a `script` (the host that drives proving). In the host, build a `ProverClient` via `ProverClient::from_env()`, write inputs into `SP1Stdin`, then call `client.prove(&pk, &stdin).run()` for a core proof or `.compressed()` / `.groth16()` / `.plonk()` for an on-chain-verifiable proof. For production, set `SP1_PROVER=network` and `NETWORK_PRIVATE_KEY` so proving runs on the Succinct Prover Network instead of the local CPU/GPU. Verify on-chain by deploying the generated `SP1VerifierGateway` consumer contract and calling `verifyProof(programVKey, publicValues, proofBytes)`.
06Gotchas
  • Local proving is GPU/RAM-hungry (Hypercube targets 16x RTX 5090s for real-time blocks); use the Prover Network unless you have serious hardware.
  • Only Groth16/PLONK wrapped proofs are cheap to verify on-chain — core/compressed proofs are for off-chain or recursion only.
  • Prover Network is a paid service; budget USD-per-proof and rate-limit user-driven proof requests.
  • Pinning `sp1-sdk` and the toolchain version is critical — verifier vkeys change across SP1 releases and will reject proofs from a mismatched build.
  • Guest programs cannot use threads, system time, or non-deterministic syscalls; use precompiles (`sp1_lib::*`) for keccak/secp256k1 to avoid huge cycle counts.
07Alternatives