#zk-vm #sp1 #zero-knowledge #succinct #zk

bin+lib sp1-eval

A performance evaluation tool for SP1 programs

12 releases (stable)

3.4.0 Nov 29, 2024
3.3.0 Nov 19, 2024
3.1.0 Oct 30, 2024
3.0.0-rc1 Sep 16, 2024
1.2.0-rc2 Aug 29, 2024

#2593 in Cryptography

Download history 152/week @ 2024-08-24 141/week @ 2024-08-31 13/week @ 2024-09-07 295/week @ 2024-09-14 13/week @ 2024-09-21 18/week @ 2024-09-28 95/week @ 2024-10-05 187/week @ 2024-10-12 69/week @ 2024-10-19 111/week @ 2024-10-26 196/week @ 2024-11-02 37/week @ 2024-11-09 140/week @ 2024-11-16 17/week @ 2024-11-23 199/week @ 2024-11-30

490 downloads per month

MIT/Apache

6.5MB
12K SLoC

Contains (ELF exe/lib, 1MB) programs/tendermint/elf, (ELF exe/lib, 200KB) programs/ssz-withdrawals/elf, (ELF exe/lib, 130KB) programs/fibonacci/elf

SP1

SP1

SP1 is the fastest, most-feature complete zero-knowledge virtual machine (zkVM) that can prove the execution of arbitrary Rust (or any LLVM-compiled language) programs. SP1 makes ZK accessible to any developer, by making it easy to write ZKP programs in normal Rust code.

Install | Docs | Examples | Telegram Chat

Getting Started

Today, developers can write programs, including complex, large programs like a ZK Tendermint light client or type-1 zkEVM using Reth, in Rust (with std support), generate proofs and verify them. Most Rust crates should be supported and can be used seamlessly by your program. Example programs can be found in the examples folder.

To get started, make sure you have Rust installed. Then follow the installation guide in the SP1 book and read the getting started section.

Security

SP1 has undergone audits from Veridise, Cantina, and KALOS and is recommended for production use. The audit reports are available here.

For Contributors

Open-source is a core part of SP1's ethos and key to its advantages. We wish to cultivate a vibrant community of open-source contributors that span individuals, teams and geographies. If you want to contribute, or follow along with contributor discussion, you can use our main Telegram to chat with us. Our contributor guidelines can be found in CONTRIBUTING.md. A quick overview of development tips can be found in DEVELOPMENT.md.

We are always looking for contributors interested in tasks big and small, including minor chores across the codebase, optimizing performance, adding precompiles for commonly used cryptographic operations, adding documentation, creating new example programs and more. Please reach out in the Telegram chat if interested!

Acknowledgements

We would like to acknowledge the projects below whose previous work has been instrumental in making this project a reality.

  • Plonky3: The SP1's prover is powered by the Plonky3 toolkit.
  • Valida: The SP1 cross-table lookups, prover, borrow macro, and chip design, including constraints, are inspired by Valida.
  • RISC0: The SP1 rust toolchain, install/build scripts, and our RISCV runtime borrow code from RISC0.
  • Cairo: Cairo introduced the idea of "builtins" which allow zkVMs to accelerate certain operations. However, the complexity of "builtins" was embedded in the CPU, limiting their complexity. SP1 extends this idea by executing on a vision of easily extensible "precompiles" that can be added as additional tables alongside the CPU.

Dependencies

~55–93MB
~1.5M SLoC