Skip to main content
Version: v6 (Hypercube)

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 >= v6.0.0-beta.1
  • Set the NETWORK_PRIVATE_KEY environment variable to your requester account's private key (from Step 1)
use sp1_sdk::{
include_elf, network::NetworkMode, utils, Elf, ProveRequest, Prover, ProverClient, SP1Stdin,
};

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

#[tokio::main]
async fn main() {
// Setup logging.
utils::setup_logger();

// 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 to interact with the Succinct Prover Network.
let client = ProverClient::builder().network_for(NetworkMode::Mainnet).build().await;

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

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

2026-03-24T00:27:29.421648Z  INFO requesting proof from network mode=Compressed
2026-03-24T00:27:31.702617Z INFO Registered program 0x5252c4ad36f7242955971bee73dd21bc48adf9a34c220db06de4c4f562ba0cac
2026-03-24T00:32:34.328049Z INFO public_value_stream: [232, 3, 0, 0, 77, 23, 0, 0, 67, 14, 0, 0]
2026-03-24T00:32:34.328494Z INFO execute_program: close time.busy=2.09ms time.idle=3.55ms
2026-03-24T00:32:34.768097Z INFO Requesting proof:
2026-03-24T00:32:34.768150Z INFO ├─ Strategy: Auction
2026-03-24T00:32:34.768159Z INFO ├─ Proof mode: Compressed
2026-03-24T00:32:34.768163Z INFO ├─ Circuit version: v6.0.0
2026-03-24T00:32:34.768167Z INFO ├─ Timeout: 300 seconds
2026-03-24T00:32:34.768173Z INFO ├─ Public values hash: 0xeb61af091de14d64211b5f413bbb0da5a66e3de8cec2cb754b1fc56f8b0b2189
2026-03-24T00:32:34.768180Z INFO ├─ Base fee: 200000000000000000 (0.2000 $PROVE)
2026-03-24T00:32:34.768186Z INFO ├─ Max price per bPGU: 2000000000000000000 (2.0000 $PROVE)
2026-03-24T00:32:34.768190Z INFO ├─ Minimum auction period: 0 seconds
2026-03-24T00:32:34.768193Z INFO ├─ Prover Whitelist: Some([0xd4fcfce0dee91a9895c3ad71a6248d57c287a4f5, 0xb3780a2bbbc20a36c86da1bf4fa0b0d3c4b60dcf, 0x5a00604bf1832e79713aba108622c18a1f1a4349])
2026-03-24T00:32:34.768418Z INFO ├─ Cycle limit: 14619 cycles
2026-03-24T00:32:34.768436Z INFO └─ Gas limit: 16404 PGUs
2026-03-24T00:32:36.781092Z INFO Created request 0x0c641d1a0a4937ef4e6e59accfa3a59bfd193749f4b9db66a82d08737ab62f3b in transaction 0x85dd36ed9c0a42590cf7c28023b3f4d9d103c62cc631c09cd271b2285d6f0103
2026-03-24T00:32:36.781125Z INFO View request status at: https://explorer.succinct.xyz/request/0x0c641d1a0a4937ef4e6e59accfa3a59bfd193749f4b9db66a82d08737ab62f3b
2026-03-24T00:32:51.952417Z INFO Proof request assigned, proving...
note

The first time you request a proof for a specific ELF / proving-key pair, your program will be automatically registered on the prover network.

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.