mirror of
https://github.com/logos-storage/zk-benchmarks.git
synced 2026-01-07 08:13:07 +00:00
102 lines
3.6 KiB
Markdown
102 lines
3.6 KiB
Markdown
# RISC Zero Rust Starter Template
|
|
|
|
Welcome to the RISC Zero Rust Starter Template! This template is intended to
|
|
give you a starting point for building a project using the RISC Zero zkVM.
|
|
Throughout the template (including in this README), you'll find comments
|
|
labelled `TODO` in places where you'll need to make changes. To better
|
|
understand the concepts behind this template, check out the [zkVM
|
|
Overview][zkvm-overview].
|
|
|
|
## Quick Start
|
|
|
|
First, make sure [rustup] is installed. The
|
|
[`rust-toolchain.toml`][rust-toolchain] file will be used by `cargo` to
|
|
automatically install the correct version.
|
|
|
|
To build all methods and execute the method within the zkVM, run the following
|
|
command:
|
|
|
|
```bash
|
|
cargo run
|
|
```
|
|
|
|
This is an empty template, and so there is no expected output (until you modify
|
|
the code).
|
|
|
|
### Running proofs remotely on Bonsai
|
|
|
|
_Note: The Bonsai proving service is still in early Alpha; an API key is
|
|
required for access. [Click here to request access][bonsai access]._
|
|
|
|
If you have access to the URL and API key to Bonsai you can run your proofs
|
|
remotely. To prove in Bonsai mode, invoke `cargo run` with two additional
|
|
environment variables:
|
|
|
|
```bash
|
|
BONSAI_API_KEY="YOUR_API_KEY" BONSAI_API_URL="BONSAI_URL" cargo run
|
|
```
|
|
|
|
## How to create a project based on this template
|
|
|
|
Search this template for the string `TODO`, and make the necessary changes to
|
|
implement the required feature described by the `TODO` comment. Some of these
|
|
changes will be complex, and so we have a number of instructional resources to
|
|
assist you in learning how to write your own code for the RISC Zero zkVM:
|
|
|
|
- The [RISC Zero Developer Docs][dev-docs] is a great place to get started.
|
|
- Example projects are available in the [examples folder][examples] of
|
|
[`risc0`][risc0-repo] repository.
|
|
- Reference documentation is available at [https://docs.rs][docs.rs], including
|
|
[`risc0-zkvm`][risc0-zkvm], [`cargo-risczero`][cargo-risczero],
|
|
[`risc0-build`][risc0-build], and [others][crates].
|
|
|
|
## Directory Structure
|
|
|
|
It is possible to organize the files for these components in various ways.
|
|
However, in this starter template we use a standard directory structure for zkVM
|
|
applications, which we think is a good starting point for your applications.
|
|
|
|
```text
|
|
project_name
|
|
├── Cargo.toml
|
|
├── host
|
|
│ ├── Cargo.toml
|
|
│ └── src
|
|
│ └── main.rs <-- [Host code goes here]
|
|
└── methods
|
|
├── Cargo.toml
|
|
├── build.rs
|
|
├── guest
|
|
│ ├── Cargo.toml
|
|
│ └── src
|
|
│ └── bin
|
|
│ └── method_name.rs <-- [Guest code goes here]
|
|
└── src
|
|
└── lib.rs
|
|
```
|
|
|
|
## Video Tutorial
|
|
|
|
For a walk-through of how to build with this template, check out this [excerpt
|
|
from our workshop at ZK HACK III][zkhack-iii].
|
|
|
|
## Questions, Feedback, and Collaborations
|
|
|
|
We'd love to hear from you on [Discord][discord] or [Twitter][twitter].
|
|
|
|
[bonsai access]: https://bonsai.xyz/apply
|
|
[cargo-risczero]: https://docs.rs/cargo-risczero
|
|
[crates]: https://github.com/risc0/risc0/blob/main/README.md#rust-binaries
|
|
[dev-docs]: https://dev.risczero.com
|
|
[discord]: https://discord.gg/risczero
|
|
[docs.rs]: https://docs.rs/releases/search?query=risc0
|
|
[examples]: https://github.com/risc0/risc0/tree/main/examples
|
|
[risc0-build]: https://docs.rs/risc0-build
|
|
[risc0-repo]: https://www.github.com/risc0/risc0
|
|
[risc0-zkvm]: https://docs.rs/risc0-zkvm
|
|
[rustup]: https://rustup.rs
|
|
[rust-toolchain]: rust-toolchain.toml
|
|
[twitter]: https://twitter.com/risczero
|
|
[zkvm-overview]: https://dev.risczero.com/zkvm
|
|
[zkhack-iii]: https://www.youtube.com/watch?v=Yg_BGqj_6lg&list=PLcPzhUaCxlCgig7ofeARMPwQ8vbuD6hC5&index=5
|