Skip to main content

Reserved Capacity

Reserved capacity is available on the Succinct Prover Network with guaranteed service levels, operated by Succinct and trusted proving partners.

If your application demands strict service level guarantees, ultra-low latency, or sustained high throughput, we offer a tailored solution by provisioning reserved capacity for your usecase. This managed proving option allows you to establish a direct offchain agreement with Succinct or other trusted proving partners.

Through this service, you gain access to contractual SLAs covering uptime, latency, and throughput, as well as infrastructure optimized to meet specific performance targets, such as generating proofs in under 30 seconds or sustaining a minimum proving rate of 10 MPGUs/s. Additionally, the offering supports custom configurations and provides direct technical support to align with your business and compliance requirements.

Getting Started

Step 1: Contact Succinct Labs

To get started with Reserved Capacity, contact Succinct to discuss your requirements and set up your account.

Step 2: Key Setup

If you don't already have a requester key pair, follow the key setup. This requester account is used to request proofs and manage your network balance.

Step 3: Check Code Dependencies

Make sure you're using sp1-sdk >= v5.2.2 with default features enabled.

Step 4: Request Proofs

To request proofs, you must set up a ProverClient and specify NetworkMode::Reserved in your proof requester script.

In your proof requester script, make sure to specify NetworkMode::Reserved when setting up the ProverClient, and use FulfillmentStrategy::Reserved when requesting proofs.

note

To specify your requester private key, you can either use the NETWORK_PRIVATE_KEY environment variable or the .private_key() method when setting up the ProverClient.

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

/// The ELF of the program you 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::builder()
.network_for(NetworkMode::Reserved)
.build();

// Generate the proof for the given program and input.
let (pk, vk) = client.setup(ELF);
let mut proof = client.prove(&pk, &stdin)
.compressed()
.strategy(FulfillmentStrategy::Reserved)
.run()
.unwrap();
}

Support

For more support, contact Succinct.