Skip to main content

Quickstart

The Succinct Prover Network enables seamless proof generation with zero setup, providing instant access to GPU clusters for the lowest latency and cost.

Step 1: Requester Key Setup

The Succinct Network uses Secp256k1 key pairs for authentication, similar to Ethereum wallets. You can either generate a new key pair or use an existing one. Foundry and Metamask are two easy ways to generate a new key pair.

For simplicity, we will refer to this key pair as your requester account.

Prerequisites

Install the Foundry CLI if you haven't already:

curl -L https://foundry.paradigm.xyz | bash
foundryup

Create a New Key Pair

You can generate a new Secp256k1 key pair by running:

cast wallet new

This command will give you an output similar to this:

Successfully created new keypair.
Address: 0x7594cF2161dC345B300A5Ac87e2473c7bF25D9fe
Private key: <PRIVATE_KEY>

In Step 4, you will set the NETWORK_PRIVATE_KEY environment variable to this private key value.

Step 2: Acquire PROVE

When requesting proofs on the Succinct Prover Network, you must pay for them with the PROVE token using your requester account.

You can get PROVE on Ethereum Mainnet through any of the options listed in the Token Overview.

Step 3: Deposit PROVE

Next, you need to make sure your requester account has a sufficient PROVE balance in the Succinct Prover Network to pay for proofs.

Option 1: Deposit with Requester Account

If you used your requester account to get PROVE on Ethereum Mainnet, you can connect it to the Succinct Explorer and deposit PROVE into the Succinct Prover Network.

To deposit:

  1. Go to the Account page on the explorer.
  2. Click on the "Deposit" button and confirm the amount of PROVE to deposit.

Deposit Input

  1. Complete the deposit by confirming the permit and transaction signatures in your wallet:

Deposit Wallet Confirmation

After the deposit is indexed (which can take up to 5 minutes), you will see your network PROVE balance update in the Account page, and are now ready to request proofs on the network.

Funded Account

Option 2: Deposit and Transfer to Requester Account

If you have PROVE on an account that is not your requester account, you can leverage the network's "Transfer" functionality:

  1. First, deposit PROVE with your account that has PROVE on Ethereum Mainnet (similar to Option 1).
  2. Wait for the deposit to be indexed (which can take up to 5 minutes).
  3. Click the "Transfer" button. Then, enter the address of your requester account and the amount of PROVE to transfer.

Transfer Input

Once the transfer completes, you're ready to request proofs on the network.

Step 4: Request Proofs

To request proofs on the Succinct Prover Network:

  • Make sure to use sp1-sdk >= v5.2.1
  • Set the following two environment variables:
    • SP1_PROVER=network
    • NETWORK_PRIVATE_KEY=<PRIVATE_KEY> (from Step 1)
  • Disable default features and enable the network feature on sp1-sdk in script/Cargo.toml:
[dependencies]
sp1-sdk = { version = "...", default-features = false, features = ["network"] }

You're now ready to request proofs:

use sp1_sdk::{include_elf, utils, ProverClient, SP1ProofWithPublicValues, SP1Stdin};

/// The ELF we want to execute inside the zkVM.
const ELF: &[u8] = include_elf!("fibonacci-program");

fn main() {
// Create an input stream and write '500' to it.
let n = 1000u32;

// The input stream that the program will read from using `sp1_zkvm::io::read`. Note that the
// types of the elements in the input stream must match the types being read in the program.
let mut stdin = SP1Stdin::new();
stdin.write(&n);

// Create a `ProverClient` method.
let client = ProverClient::from_env();

// Generate the proof for the given program and input.
let (pk, _vk) = client.setup(ELF);
let _proof = client.prove(&pk, &stdin).compressed().run().unwrap();
}

The output should look something like this if you run the code above:

2025-08-03T04:33:46.055353Z  INFO Registered program 0x1d6d196c1323d9411fa45a8f37268807343573f52a324c845f4aa26873310d63
2025-08-03T04:33:46.056304Z INFO execute: clk = 0 pc = 0x201d98
2025-08-03T04:33:46.058941Z INFO execute: gas: 1003634
2025-08-03T04:33:46.058953Z INFO execute: close time.busy=3.54ms time.idle=1.21µs
2025-08-03T04:33:46.544214Z INFO Requesting proof:
2025-08-03T04:33:46.544225Z INFO ├─ Strategy: Auction
2025-08-03T04:33:46.544227Z INFO ├─ Proof mode: Compressed
2025-08-03T04:33:46.544228Z INFO ├─ Circuit version: v5.0.0
2025-08-03T04:33:46.544229Z INFO ├─ Timeout: 300 seconds
2025-08-03T04:33:46.544231Z INFO ├─ Public values hash: 0xeb61af091de14d64211b5f413bbb0da5a66e3de8cec2cb754b1fc56f8b0b2189
2025-08-03T04:33:46.544233Z INFO ├─ Base fee: 200000000000000000 (0.2000 $PROVE)
2025-08-03T04:33:46.544234Z INFO ├─ Max price per bPGU: 2000000000000000000 (2.0000 $PROVE)
2025-08-03T04:33:46.544235Z INFO ├─ Minimum auction period: 0 seconds
2025-08-03T04:33:46.544236Z INFO ├─ Prover Whitelist: None
2025-08-03T04:33:46.544237Z INFO ├─ Cycle limit: 13528 cycles
2025-08-03T04:33:46.544238Z INFO └─ Gas limit: 1003634 PGUs
2025-08-03T04:33:48.471022Z INFO Created request 0x59f7cf1359d86f073cb6324bc6acb47a77bb33c459aeb21d5bce14fd2a3ee8e6 in transaction 0x91e392b0d615a1b90f760295125f5923c8f8cf65e7fa2ddf02c6245a7bb7d8c9
2025-08-03T04:33:48.471036Z INFO View request status at: https://explorer.sepolia.succinct.xyz/request/0x59f7cf1359d86f073cb6324bc6acb47a77bb33c459aeb21d5bce14fd2a3ee8e6
2025-08-03T04:34:00.941642Z INFO Proof request assigned, proving...
2025-08-03T04:35:24.197709Z Successfully generated proof!

View Proof Status

Monitor your proofs on the explorer. Each proof page shows:

  • Current stage and status
  • Cycle count used
  • Verification key details
  • Prover assignment information

Screenshot from the Succinct Explorer showing the details of a proof

Proof Request Configuration

In the above example, we used the compressed proof mode, but you can specify any of the supported proof types based on your use case.

There are other configuration options, like auction parameters and timeouts, that use default values when not specified. Please see the Advanced Usage section for details on how to configure these parameters.

Support

Need help getting started? Join the Telegram for assistance with onboarding.