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 key pair, follow the key setup section to generate one which will be used to request proofs and manage your balance.

Step 3: Request Proofs

Once your key has been configured, you're ready to request proofs from the network using your key.

In your proof requester script, you should be using ProverClient::builder().network().build() rather than ProverClient::from_env(), and you should use FulfillmentStrategy::Reserved or FulfillmentStrategy::Hosted, depending on your account's capacity configuration.

// Set environment variables
SP1_PROVER=network
NETWORK_PRIVATE_KEY=<PRIVATE_KEY>
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().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.