Crate sindri

Source
Expand description

Sindri Rust SDK

A library for generating zero-knowledge proofs with Sindri.

§Overview

The main entry point of this library is the client::SindriClient struct, which encapsulates all methods for interacting with the Sindri API. The client handles request/response management and includes built-in robustness features like automatic retries for transient errors.

§Quick Start

Generate your first zero-knowledge proof in just a few lines of code:

use std::collections::HashMap;
use sindri::{client::SindriClient, CircuitInfo};

let client = SindriClient::default();
// Use tags and project metadata to organize and annotate your project builds
let tags: Option<Vec<String>> = None;
let project_metadata: Option<HashMap<String, String>> = None;
let circuit = client.create_circuit_blocking(
    "../cli/tests/factory/circuit.tar.gz".to_string(),
    tags,
    project_metadata
).unwrap();

// Use proof metadata to annotate proofs with additional information and
// pass conditional flags to control whether server-side verification is enabled
let input = r#"{"a": 1, "b": 2}"#;
let proof_metadata: Option<HashMap<String, String>> = None;
let verify: Option<bool> = None;
let proof = client.prove_circuit_blocking(
    circuit.id(),
    input,
    proof_metadata,
    verify,
    None, // The default prover implementation is generally recommended
).unwrap();

§Key Features

  • Project Management: Create circuits and proofs with methods like create_circuit and prove_circuit

  • Collaboration: Share and reuse public circuits using clone_circuit

  • Seamless Integration: Works with popular Rust-based DSLs and zkVMs including:

    • Halo2
    • Plonky2
    • Jolt
    • Sp1

For more detailed documentation, refer to the client::SindriClient struct.

Modules§

client
The primary module for interacting with Sindri’s API.
integrations
vendor

Structs§

BoojumCircuitInfoResponse
BoojumCircuitInfoResponse : Response for getting Boojum circuit info.
CircomCircuitInfoResponse
CircomCircuitInfoResponse : Response for getting Circom circuit info.
GnarkCircuitInfoResponse
GnarkCircuitInfoResponse : Response for getting Gnark circuit info.
Halo2CircuitInfoResponse
Halo2CircuitInfoResponse : Response for getting Halo2 circuit info.
HermezCircuitInfoResponse
HermezCircuitInfoResponse : Response for getting Polygon Hermez circuit info.
JoltCircuitInfoResponse
JoltCircuitInfoResponse : Response for getting Jolt circuit info.
NoirCircuitInfoResponse
NoirCircuitInfoResponse : Response for getting Noir circuit info.
Plonky2CircuitInfoResponse
Plonky2CircuitInfoResponse : Response for getting Plonky2 circuit info.
ProofInfoResponse
ProofInfoResponse : Response for getting proof info.
ProofInput
A wrapper type around InternalProofInput that provides convenient conversions from various input formats for circuit proofs.
SnarkvmCircuitInfoResponse
SnarkvmCircuitInfoResponse : Response for getting SnarkVM circuit info.
Sp1CircuitInfoResponse
Sp1CircuitInfoResponse : Response for getting SP1 circuit info.
TeamDetail
TeamDetail : Details about a team.

Enums§

CircuitInfoResponse
CircuitInfoResponse : Response for getting circuit info.
CircuitType
CircuitType : CircuitType choices CircuitType choices
InternalProofInput
ProofInput : An object mapping proof input variable names to their values. Can be a raw JSON object or a string serialized as JSON or TOML.
JobStatus
JobStatus : JobStatus choices JobStatus choices

Traits§

CircuitInfo
Helper trait to extract common fields from CircuitInfoResponse
ProofInfo