{
  "type": "option",
  "name": "SP1",
  "slug": "sp1",
  "section": {
    "id": "frameworks",
    "number": "02",
    "title": "Choosing a framework",
    "url": "https://zkpick.com/frameworks/"
  },
  "url": "https://zkpick.com/frameworks/sp1/",
  "markdown": "https://zkpick.com/md/frameworks/sp1.md",
  "category": "zkVM (RISC-V)",
  "summary": "SP1: zkVM (RISC-V). Kind: zkVM (RISC-V). Arithmetisation / backend: Multilinear / sumcheck + wrapper. Setup: Wrapper only. Maintained by: Succinct. Licence: MIT / Apache-2.0. Status: Production; deepest assurance evidence. Choose it when: Proving large existing Rust codebases — state transitions, consensus and EVM verification, bridges — where on-chain cost matters and published assurance evidence is a selection criterion.",
  "description": "A RISC-V zkVM proving execution of programs compiled from Rust. The current generation uses a multilinear proof system with sumcheck-based arguments; final proofs are wrapped in Groth16 or PLONK for on-chain verification.",
  "notes": [],
  "sections": [],
  "strengths": [
    "One of the two most substantial public formal-verification efforts among zkVMs, with core chip constraints verified against the official ISA specification",
    "Documented, concrete on-chain proof sizes and gas costs for both wrapper options",
    "Mainnet-deployed, with published security analysis and disclosed findings"
  ],
  "tradeoffs": [
    "Formal verification is scoped, not total: a specification-conformance bug was later found by conformance tests outside the verification effort's scope. Treat 'formally verified' as bounded by its stated hypotheses",
    "Unwrapped proofs are large; reaching on-chain size requires recursion plus a wrapper",
    "The Groth16 wrapper inherits a trusted setup — see §04"
  ],
  "bestFit": "Proving large existing Rust codebases — state transitions, consensus and EVM verification, bridges — where on-chain cost matters and published assurance evidence is a selection criterion.",
  "maintainers": "Succinct",
  "maturity": "Production, mainnet-deployed",
  "license": "https://creativecommons.org/licenses/by/4.0/",
  "source": "https://github.com/succinctlabs/sp1",
  "facts": [
    {
      "table": "Framework selection matrix",
      "url": "https://zkpick.com/frameworks/#frameworks-matrix-sp1",
      "name": "SP1",
      "kind": "zkVM (RISC-V)",
      "arith": "Multilinear / sumcheck + wrapper",
      "setup": "Wrapper only",
      "by": "Succinct",
      "license": "MIT / Apache-2.0",
      "status": "Production; deepest assurance evidence"
    }
  ],
  "relatedFailureModes": [],
  "sources": [
    {
      "title": "SP1 — RISC-V zkVM",
      "url": "https://github.com/succinctlabs/sp1",
      "kind": "project"
    },
    {
      "title": "SP1 on-chain verification — Solidity verifier and wrapper options",
      "url": "https://docs.succinct.xyz/docs/sp1/verification/solidity-sdk",
      "kind": "documentation"
    },
    {
      "title": "sp1-contracts — deployed verifier gateways and addresses per chain",
      "url": "https://github.com/succinctlabs/sp1-contracts",
      "kind": "project"
    },
    {
      "title": "SP1 security model — wrapper trusted setup provenance",
      "url": "https://docs.succinct.xyz/docs/sp1/security/security-model",
      "kind": "documentation"
    },
    {
      "title": "On formal verification and a bug in SP1 Hypercube (EF zkEVM)",
      "url": "https://zkevm.ethereum.foundation/blog/sp1-fv",
      "kind": "analysis"
    }
  ],
  "updated": "2026-09-12",
  "version": "1.3",
  "canonical": "https://zkpick.com/frameworks/sp1/",
  "authors": [
    "MarketComp"
  ]
}