|
1 |
| -# WP1 |
| 1 | +# Sphinx |
2 | 2 |
|
3 |
| - |
| 3 | + |
| 4 | +*[Natasha De Vere](https://www.flickr.com/photos/col_and_tasha/6060947569/in/photostream/), [Attribution (CC BY 2.0)](https://creativecommons.org/licenses/by/2.0/)* |
4 | 5 |
|
5 |
| -WP1 is a performant, 100% open-source, contributor-friendly zero-knowledge virtual machine (zkVM) that can prove the execution of arbitrary Rust (or any LLVM-compiled language) programs. WP1 democratizes access to ZKPs by allowing developers to use programmable truth with popular programming languages. |
6 |
| - |
7 |
| -WP1 is inspired by the open-source software movement and takes a collaborative approach towards building the best zkVM for rollups, coprocessors and other ZKP applications. We envision a diversity of contributors integrating the latest ZK innovations, creating a zkVM that is _performant_, _customizable_ and will stand the _test of time_. |
8 |
| - |
9 |
| -**[Install](https://succinctlabs.github.io/sp1/getting-started/install.html)** |
10 |
| -| [Docs](https://succinctlabs.github.io/sp1) |
11 |
| -| [Examples](https://github.com/wormhole-foundation/wp1/tree/main/examples) |
12 |
| - |
13 |
| -## For Developers: Build with WP1 |
14 |
| - |
15 |
| -**Note that WP1 is still in alpha and is not yet ready for production use.** |
16 |
| - |
17 |
| - |
18 |
| -Today, developers can write programs, including complex, large programs like a ZK Tendermint light client, 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](https://github.com/wormhole-foundation/wp1/tree/main/examples) folder. |
19 |
| - |
20 |
| -To get started, make sure you have [Rust](https://www.rust-lang.org/tools/install) installed. Then follow the [installation](https://succinctlabs.github.io/sp1/getting-started/install.html) guide in the WP1 book and read the [getting started](https://succinctlabs.github.io/sp1/getting-started/quickstart.html) section. |
21 |
| - |
22 |
| -For developers looking for inspiration on what to build, check out the open issues with the [showcase](https://github.com/wormhole-foundation/wp1/issues?q=is%3Aopen+is%3Aissue+label%3Ashowcase) label to see what sorts of programs that showcase the capabilities of WP1 are interesting to hack on. |
23 |
| - |
24 |
| -## For Contributors |
25 |
| - |
26 |
| -Open-source is a core part of WP1'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](./CONTRIBUTING.md). |
27 |
| - |
28 |
| -Find a list of [good first issues](https://github.com/wormhole-foundation/wp1/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22+) in the open issues of this repo. 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! |
29 |
| - |
30 |
| - |
31 |
| -## Roadmap |
32 |
| - |
33 |
| -Today, WP1 can generate and verify proofs for Rust programs that have been compiled to RISC-V. WP1 supports proving of programs of arbitrary length by using a unique "shared challenges" argument that allows the prover to shard a long computation into small shards, and then generate a global proof that these shards are properly connected together. |
34 |
| - |
35 |
| -The main priorities in the next few months are performance optimizations, getting the core zkVM constraint logic audited, as well as wrapping the WP1 STARK proof into a SNARK proof that is cheaply verifiable in the EVM (by adapting similar [previous work](https://github.com/succinctlabs/gnark-plonky2-verifier) done by the Succinct Team). |
| 6 | +Sphinx is an open-source zero-knowledge virtual machine (zkVM) that can prove |
| 7 | +the execution of [RISC-V](https://en.wikipedia.org/wiki/RISC-V) bytecode, with |
| 8 | +initial tooling support for programs written in |
| 9 | +[Rust](https://en.wikipedia.org/wiki/Rust_(programming_language)). Additionally, |
| 10 | +Sphinx aims to support other reduction engines, including the evaluator for the |
| 11 | +[Lurk programming language](https://www.lurk-lang.org) , which could be extended |
| 12 | +to other functional languages like JavaScript or Lean. |
36 | 13 |
|
37 | 14 | ## Acknowledgements
|
38 | 15 |
|
39 |
| -We would like to acknowledge the projects below whose previous work has been instrumental in making this project a reality: |
40 |
| - |
41 |
| -- [Plonky3](https://github.com/Plonky3/Plonky3): The WP1's prover is powered by the Plonky3 toolkit. |
42 |
| -- [Valida](https://github.com/valida-xyz/valida): The WP1 cross-table lookup architecture, prover, borrow macro, and chip design are inspired by Valida. |
43 |
| -- [RISC0](https://github.com/risc0/risc0): The WP1 Rust toolchain and install/build scripts for the toolchain borrow code from RISC0. |
44 |
| -- [SP1](https://github.com/succinctlabs/sp1): The SP1 ZKVM of which this repo is a fork of. |
45 |
| - |
46 |
| -## Tips |
47 |
| - |
48 |
| -We recommend you install the [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer) extension. |
49 |
| -Note that if you use `cargo prove new` inside a monorepo, you will need to add the manifest file to `rust-analyzer.linkedProjects` to get full IDE support. |
| 16 | +Sphinx builds on the work of many organizations who have supported and |
| 17 | +contributed to open-source software. These organizations, and many others not |
| 18 | +listed, exemplify the principle that zero-knowledge cryptography is not a |
| 19 | +zero-sum game, and that when we make our work freely available for others to |
| 20 | +build on, the whole world benefits: |
| 21 | + |
| 22 | +- [Wormhole Foundation](https://wormhole.foundation/) who has generously |
| 23 | + supported the project from the beginning both through awarding Lurk Lab a [contributor |
| 24 | + grant](https://wormhole.foundation/blog/wormhole-foundation-awards-contributor-grant-to-lurk-lab-to-bring-trustless-transfers-to-wormhole-with-zk-proofs), |
| 25 | + and through their broader ecosystem work. |
| 26 | +- [Succinct Labs](https://www.succinct.xyz), a fellow Wormhole ecosystem |
| 27 | + [contributor](https://wormhole.foundation/blog/wormhole-foundation-awards-contributor-grant-to-supranational-for-wormhole-zk-hardware-acceleration), |
| 28 | + whose [SP1](https://github.com/succinctlabs/sp1) zkVM developed a novel |
| 29 | + approach to integrating custom precompile acceleration and integrated this |
| 30 | + with work from Risc Zero, Valida, Polygon and others to create an excellent |
| 31 | + packaged developer experience. Sphinx is a fork of SP1 |
| 32 | +- [Risc Zero](https://www.risczero.com/), who developed and maintain the |
| 33 | + [riscv32im-risc0-zkvm-elf](https://doc.rust-lang.org/nightly/rustc/platform-support/riscv32im-risc0-zkvm-elf.html) |
| 34 | + Rust toolchain and related tooling. |
| 35 | +- [Delendum](https://delendum.xyz/writings/2023-05-10-zkvm-design.html) and [Lita Foundation](https://www.lita.foundation/), whose [Valida |
| 36 | + zkVM](https://github.com/valida-xyz/valida) influenced the cross-table lookup |
| 37 | + architecture, prover, borrow macro, and chip design of SP1. |
| 38 | +- [Polygon Zero](https://polygon.technology/about) whose |
| 39 | + [Plonky3](https://github.com/Plonky3/Plonky3) STARK toolkit powers much of the |
| 40 | + above projects. |
| 41 | + |
| 42 | +We sincerely thank all these teams and projects, and we are committed to |
| 43 | +upstreaming our contributions wherever possible. |
0 commit comments