Cargo extension to help create, manage, and test RISC Zero projects. The default template generated from the cargo risczero new
command supports both local and remote proving. Refer to the README in the rust-starter template for more information.
To install this Cargo subcommand, first you'll want to install Rust and then you'll execute:
bash
cargo install cargo-risczero
After that you can verify it works via:
bash
cargo risczero --version
In order to use the build
command, you will need docker
available in your PATH. For developer machines, this is simple with Docker Desktop.
The install
command installs the latest RISC Zero toolchain. This toolchain is needed to compile guest programs into ELF binaries that the zkVM can execute.
bash
cargo risczero install
You can verify it was installed correctly by running:
bash
rustup toolchain list --verbose | grep risc0
Note that the following pre-built host targets are available:
aarch64-apple-darwin
x86_64-apple-darwin
x86_64-unknown-linux-gnu
If you'd like to install the toolchain on a host not listed above, you can use the build-toolchain
command to build the toolchain locally.
The new
command will create a new project from an existing template. It defaults to the [rust-starter template] but can be used with other templates locally or hosted on github.
```bash
cargo risczero new my_project
cargo risczero new my_project --std
cargo risczero new my_project --no-git
cargo risczero new my_project --template https://github.com/risc0/risc0-rust-starter ```
Use the build-toolchain
command to build the toolchain locally for your host. Warning: this may take a long time. The resulting toolchain will be automatically installed via rustup toolchain link
.
Use the build
command to build guest code for the zkVM target riscv32im-risc0-zkvm-elf
deterministically.
The compiled ELF is saved in: ./target/riscv-guest/riscv32im-risc0-zkvm-elf/docker/
With this containerized build process, we ensure that all builds of your guest code, regardless of the machine or local environment, will produce the same ImageID. The ImageID, and its importance to security, is explained in more detail in our developer FAQ.
Note: The build command requires the docker CLI installed and in your PATH.
```bash
cargo risczero build --manifest-path risc0/zkvm/methods/guest/Cargo.toml
ELFs ready at: ImageID: 417778745b43c82a20db33a55c2b1d6e0805e0fa7eec80c9654e7321121e97af - "target/riscv-guest/riscv32im-risc0-zkvm-elf/docker/risc0zkvmmethodsguest/multitest" ImageID: c7c399c25ecf26b79e987ed060efce1f0836a594ad1059b138b6ed2f123dad38 - "target/riscv-guest/riscv32im-risc0-zkvm-elf/docker/risc0zkvmmethodsguest/hellocommit" ImageID: a51a4b747f18b7e5f36a016bdd6f885e8293dbfca2759d6667a6df8edd5f2489 - "target/riscv-guest/riscv32im-risc0-zkvm-elf/docker/risc0zkvmmethodsguest/sliceio" ```