RISC Zero is a zero-knowledge verifiable general computing platform based on zk-STARKs and the RISC-V microarchitecture.
APACHE-2.0 License
Bot releases are hidden (Show)
Published by flaub about 1 year ago
docs
directory by @pdg744 in https://github.com/risc0/risc0/pull/881
Full Changelog: https://github.com/risc0/risc0/compare/v0.18.0...v0.19.0-alpha.1
Published by flaub about 1 year ago
Our 0.18 release upgrades the Bonsai SDK with Groth16 SNARK seals for better on-chain verification, better error handling, and more. In the zkVM, this release separates host and guest build toolchains and also supports reproducibly building the same ImageID for the same zkVM code by using a consistent Docker environment.
Thank you to community members @austinabell and @winor30 for their contributions to this release!
rustc
for host and guest code. This has allowed us to move the default host toolchain to the stable
channel. The guest toolchain remains on a nightly release of 1.69.cargo risczero build
command to build zkVM guest programs using a Docker container, which enables ImageIDs to remain consistent across builds. See #799 for details.upload_img
and upload_img_file
no longer return ImageIdExists
errors. Instead they return a boolean, true
if the image exists on the server.post_state_digest
for easy on-chain verification.SystemState
root in the ReceiptMetadata
was not guaranteed to be a hiding commitment.host::api::Connector
to users by @tzerrell in https://github.com/risc0/risc0/pull/864
factors
-->hello-world
; moving tutorial out of readme by @pdg744 in https://github.com/risc0/risc0/pull/765
--po2
flag to loop.rs
by @mothran in https://github.com/risc0/risc0/pull/858
Full Changelog: https://github.com/risc0/risc0/compare/v0.17.0...v0.18.0
Published by flaub about 1 year ago
With our 0.17 release, we have expanded our Bonsai content and updated the installation process. The latter change means existing users will have to install again when upgrading, by running cargo install cargo-risczero
and cargo risczero install
. See the Getting Started section of our README for prerequisites and more details. We've also added a developer mode for more rapid development and continued to streamline the proof and receipt APIs, among other changes.
Thank you to community members @criadoperez, @austinabell, and @roseiliend for their contributions to this release!
cargo risczero install
tool for setting up the RISC Zero toolchain. Fixes in this release require a "risc0
" rustup toolchain; the cargo risczero install
command will install this toolchain and do other RISC Zero setup. All users, new and old, will need to run this command to install the RISC Zero zkVM. Full details are available in the Getting Started section of our README.RISC0_DEV_MODE
environment variable controls whether developer mode is enabled, and this feature can be fully disabled at build time, regardless of environment, by using the disable-dev-mode
feature flag on the risc0-zkvm
crate.let receipt = default_prover().prove_elf(env, SOME_ELF).unwrap();
. Receipt implementation details are encapsulated in an InnerReceipt object which most users will not need to interact with. The Prover now has additional high level methods, included prove
and prove_elf
. See the Executor, Receipt, and Prover sections of our docs for the current API, and this PR for details about the changes.risc0-binfmt
crate. See its docs for details.cc
crate to a specific version as a workaround to build problems when using its latest version.Published by flaub over 1 year ago
Full Changelog: https://github.com/risc0/risc0/compare/v0.16.0...v0.16.1
Published by flaub over 1 year ago
The 0.16 release contains slight modifications to the zkVM API with the goal of allowing the zkVM to generate proofs either locally or remotely using Bonsai. Most changes are internal and only a few breaking changes are present, though they will require updates for most programs.
We've made significant changes to the Executor
. The executor was previously created and run using the following code:
let exec = Executor::from_elf(env, METHOD_ID);
let session = exec.run().unwrap();
As of 0.16, you will need to replace
use risc0_zkvm::Executor;
with
use risc0_zkvm::default_executor_from_elf;
and
let exec = Executor::from_elf(env, METHOD_ID);
with
let exec = default_executor_from_elf(env, METHOD_ID);
Note that the default executor used depends on whether you have (correctly) set environment variables BONSAI_API_URL
and BONSAI_API_KEY
. If these are present and valid, you'll be working remotely using Bonsai; otherwise, you'll be running locally.
https://github.com/risc0/risc0/pull/559 When using std
on the guest, note that you no longer need to include #![no_main]
or risc0_zkvm::entry!(...)
; just a standard pub fn main
will do. (Note: the risc0 zkvm crate must still be included with use risc0_zkvm as _
if nothing else from it is used.)
examples/evm
to examples/zkevm-demo
by @flaub in https://github.com/risc0/risc0/pull/611
revm
and use radium
from git by @intoverflow in https://github.com/risc0/risc0/pull/604
metal
to 0.25 by @flaub in https://github.com/risc0/risc0/pull/661
num-derive
requirement from 0.3 to 0.4 by @dependabot in https://github.com/risc0/risc0/pull/663
bstr
to fix build issue by @flaub in https://github.com/risc0/risc0/pull/580
bincode
and use serde
crate by @rlukata in https://github.com/risc0/risc0/pull/647
Executor
and ExecutorEnv
by @3lkn in https://github.com/risc0/risc0/pull/572
session_limit
optional by @intoverflow in https://github.com/risc0/risc0/pull/608
SystemState
for mocking ReceiptMeta
instances in tests by @hashcashier in https://github.com/risc0/risc0/pull/617
unused Once
type by @austinabell in https://github.com/risc0/risc0/pull/660
SessionReceipt
trait by @SchmErik in https://github.com/risc0/risc0/pull/616
SessionReceipt
by @flaub in https://github.com/risc0/risc0/pull/666
methods.rs
contents that enables dynamic lookup of elfs/ids/paths by @hashcashier in https://github.com/risc0/risc0/pull/585
Full Changelog: https://github.com/risc0/risc0/compare/v0.15.0...v0.16.0
Published by flaub over 1 year ago
Full Changelog: https://github.com/risc0/risc0/compare/v0.15.2...v0.15.3
Published by flaub over 1 year ago
This release primarily fixes a bug (#597) where the prover would sometimes generate invalid receipts (which would therefore not verify). See the changelog below for the full list of what has changed since v0.15.1.
For more details on how this release differs from v0.14, see the v0.15.0 release notes.
methods.rs
contents by @hashcashier (#585)Full Changelog: https://github.com/risc0/risc0/compare/v0.15.1...v0.15.2
Published by flaub over 1 year ago
This is a bugfix and documentation release for v0.15. In particular, this fixes a problem installing cargo risczero
as described in https://github.com/risc0/risc0/issues/579.
For more details on how this release differs from v0.14, see the v0.15.0 release notes.
Full Changelog: https://github.com/risc0/risc0/compare/v0.15.0...v0.15.1
Published by flaub over 1 year ago
This release includes continuations, a mechanism for splitting a large program into several smaller segments that can be computed and proven independently. We’re excited about the benefits continuations provide in terms of features (such as adding the ability to pause & resume a guest), in terms of performance (such as capping the memory requirements for long-running guests), and in terms of functionality (such as the elimination of the cycle count limit on guest programs — you can now run a guest for as long as you are willing to wait).
Along with continuations 0.15 is bringing substantial changes to the zkVM API. We have done our best to highlight key breaking changes in the “Breaking Changes” section below, and we’ve put together a Migration Guide to help developers upgrade from 0.14 to 0.15. If you run into problems while upgrading, we invite you to reach out to us on Discord or open an issue!
Because this release includes many breaking API changes, we have also published a migration guide for updating 0.14 code to 0.15.
rust-toolchain
to channel = "nightly-2023-03-06"
from channel = "nightly-2022-10-28"
risc0_zkvm::Prover
has been replaced with risc0_zkvm::Executor
risc0_zkvm::ProverOpts
has been replaced with risc0_zkvm::ExecutorEnv
Prover::add_input_u8_slice
and Prover::add_input_u32_slice
with ExecutorEnvBuilder::add_input
ProverOpts::with_send_recv_callback
, consider ExecutorEnvBuilder::io_callback
. For some cases, you may instead want to consider ExecutorEnvBuilder::stdin
and ExecutorEnvBuilder::stdout
. There are other options as well, see the ExecutorEnvBuilder documentation.risc0_zkvm::Receipt
is replaced with risc0_zkvm::SessionReceipt
which contains a Vec<risc0_zkvm::SegmentReceipt>
risc0_zkvm::serde
replaces the functionality of risc0-zeroio
and so the latter has been removed.ExecState::segmentize
creates execution segments against which proofs may be generated by @shkoo in https://github.com/risc0/risc0/pull/482
cargo risczero
tool by @flaub in https://github.com/risc0/risc0/pull/490
risc0-build
into cache_dir
by @mothran in https://github.com/risc0/risc0/pull/497
risc0-build
deadlocks on large outputs by @mothran in https://github.com/risc0/risc0/pull/498
RISC0_GUEST_LOGFILE
and fixed clippy warns by @mothran in https://github.com/risc0/risc0/pull/499
zeroio
in favor of risc0_zkvm::serde
by @shkoo in https://github.com/risc0/risc0/pull/502
stdio
through ProverOpts
. by @shkoo in https://github.com/risc0/risc0/pull/506
serde
derives to MemoryImage
by @spaugh in https://github.com/risc0/risc0/pull/511
Session
and Segment
by @tzerrell in https://github.com/risc0/risc0/pull/509
templ_subdir
flag to cargo risczero new
by @mothran in https://github.com/risc0/risc0/pull/517
rust-starter
template to match new API by @mothran in https://github.com/risc0/risc0/pull/519
default_hal
with default_prover
by @flaub in https://github.com/risc0/risc0/pull/520
Segment
by @spaugh in https://github.com/risc0/risc0/pull/523
Segment
/ SegmentReceipt
by @mothran in https://github.com/risc0/risc0/pull/525
bench-trend
workflow by @mothran in https://github.com/risc0/risc0/pull/526
risc0/benchmarks
to ghpages
by @mothran in https://github.com/risc0/risc0/pull/537
db-dump
in crate-validator
to fix nightly CI by @mothran in https://github.com/risc0/risc0/pull/542
block_numb
arg by @mothran in https://github.com/risc0/risc0/pull/544
risc0_zkvm::guest
module for easier analyzing, even when not on target=zkvm
by @shkoo in https://github.com/risc0/risc0/pull/546
wordle
". by @choongng in https://github.com/risc0/risc0/pull/550
crypto-bigint
instead of num-bigint
by @nategraf in https://github.com/risc0/risc0/pull/547
FileSegmentRef
by @tzerrell in https://github.com/risc0/risc0/pull/560
image_id
to be the hash of (merkle_root, pc)
by @flaub in https://github.com/risc0/risc0/pull/566
sys_sha_buffer
available as extern and add RustCrypto sha2 patching example by @nategraf in https://github.com/risc0/risc0/pull/567
Full Changelog: https://github.com/risc0/risc0/compare/v0.14.0...v0.15.0
Published by flaub over 1 year ago
As with all our pre-1.0 versions, our codebase and APIs remain under heavy development. Take a look at the "Breaking Changes" section below for the changes we think are likely to affect your projects. That said, we've probably missed some things. If you run into problems, we invite you to open an issue or reach out to us on Discord.
We've created a cargo risczero tool for creating, managing, and testing RISC Zero projects. Check out cargo risczero new
the next time you start a new project!
Thanks to community members @kubaplas, @KaiGeffen, and @justinFrevert for their contributions to this release!
risc0_zkvm::Prover
no longer takes an image_id
parameter. The Image ID is instead calculated from the supplied ELF binary.risc0-rust-examples
and risc0-rust-starter
repositories are deprecated.env::read
will generally still work without adjustment. Check out the new env::stderr
, env::stdin
, and env::stdout
! See the guest::env
documentation and the prove::io
documentation for more details.risc0_zkvm::MemoryImage::root
with risc0_zkvm::MemoryImage::get_root()
.VerificationError::SealJournalLengthMismatch
and renamed VerificationError::JournalSealRootMismatch
to VerificationError::JournalDigestMismatch
.risc0_zkvm
by @tzerrell in https://github.com/risc0/risc0/pull/425
risc0-core
by @tzerrell in https://github.com/risc0/risc0/pull/429
rust guest workarounds
tag by @tzerrell in https://github.com/risc0/risc0/pull/451
prod
label to workflows by @mothran in https://github.com/risc0/risc0/pull/475
risczero new
template by @mothran in https://github.com/risc0/risc0/pull/477
Full Changelog: https://github.com/risc0/risc0/compare/v0.13.0...v0.14.0
Published by flaub over 1 year ago
We have some breaking changes in v0.13. If you are migrating code from v0.12, please see the Breaking Changes section below for updates you will need to make to your code. We expect our APIs to continue to undergo substantial changes prior to the v1.0 release.
Thanks to community member @austinabell for their contributions to this release!
receipt.verify(&IMAGE_ID)
where you would previously have used receipt.verify(IMAGE_ID)
. (Where receipt
is a risc0_zkvm::receipt::Receipt
.)risc0_zkvm::sha::Impl
instead of risc0_zkvm::sha::sha
. For example, where you would previously have called risc0_zkvm::sha::sha().hash_bytes(&bytes)
in v0.12, now you instead call risc0_zkvm::sha::Impl::hash_bytes(&bytes)
in v0.13.risc0_zkvm::sha
and risc0_zkvm::guest::sha
modules for details.Full Changelog: https://github.com/risc0/risc0/compare/v0.12.0...v0.13.0
Published by flaub over 1 year ago
We have made a number of breaking changes in v0.12. If you are migrating code from v0.11, please see the Breaking Changes section below for updates you will need to make to your code. We expect our APIs to continue to undergo substantial changes prior to the v1.0 release.
Thanks to community members @Vesnica, @stskeeps and @0xkrabbypatty for their contributions to this release!
(If you still have trouble migrating your code after applying the updates in this section, take a look at our 0.12 migration FAQ.)
rust-toolchain
to channel = "nightly-2022-10-28"
(instead of 2022-06-20)risc0_build::link
function is no longer necessary and has been removed.
risc0_build::link
from build files.methods/guest/build.rs
which was only used for this link
function. This file should now be deleted altogether, as should analogous files in your own repositories.risc0_zkvm_guest
crate no longer exists, and its contents have been moved to the guest
module of the risc0_zkvm
crate.
use risc0_zkvm_guest
with use risc0_zkvm::guest
Cargo.toml
files from risc0-zkvm-guest = "0.11"
to instead depend on risc0-zkvm = { version = "0.12", default_features = false }
(guest code must not include default features, as those features include host-specific code).features = [ "std" ]
.host
module in risc0_zkvm
, and Prover
and Receipt
are now at the top level.
risc0_zkvm::Prover
instead of risc0_zkvm::host::Prover
risc0_zkvm::Receipt
instead of risc0_zkvm::host::Receipt
risc0_zkvm::guest::sha::digest
function instead of the old risc0_zkvm_guest::sha_digest_u8_slice
function.risc0_zkvm::guest::sha
and risc0_zkvm::sha
modules for details on other parts of the SHA API.risc0_zkvm::Prover::add_input
function
add_input_u32_slice
(or add_input_u8_slice
) instead.risc0_zkvm::Receipt
’s journal
and seal
fields, and the corresponding get_*
functions have been removed.
rec.get_journal_vec()
with rec.journal
rec.get_seal()
with rec.seal
rec.get_journal()
with rec.get_journal_bytes()
(or rec.journal
if you don’t specifically need the journal formatted as a u8
slice)Receipt::get_output
now returns a &[u8]
Vec<u32>
, use Receipt::get_output_u32_vec
(Full Changelog: v0.11.1...v0.12.0)
nightly-2022-10-28
(#248, #320)insecure_skip_seal
feature, allowing faster turnaround for development at the cost of security. WARNING: If you turn on this feature when running the verifier, it no longer verifies that the proof is correct. (#293)poly_ext
(#317, #309)$HOME/.risc0
for tmpdir for downloads (#327)Published by flaub about 2 years ago
This patch release updates internal crate dependencies to 0.11
(instead of 0.11.0-rc.4
)
Full Changelog: https://github.com/risc0/risc0/compare/v0.11.0...v0.11.1
Published by flaub about 2 years ago
Thanks to community members @cemozerr, @ianklatzco, and @hcho1989 for their contributions to this release!
Crates have been simplified:
risc0-zkp
risc0-zkp-core
risc0-zkvm
risc0-zkvm-host
risc0-zkvm-core
risc0-zkvm-serde
risc0-zkvm-verify
Look at this password checker Cargo.toml file for an example. Previously, the listed dependencies were:
risc0-zkvm-host = "0.10"
risc0-zkvm-core = "0.10"
risc0-zkvm-serde = "0.10"
Now, the dependencies are:
risc0-zkp = "0.11"
risc0-zkvm = "0.11"
If your project uses our in-house SHA implementation (optimized for the zkVM), you'll want to refer to risc0_zkp::core::sha
rather than risc0_zkvm_core::sha
. As an example, see our changes to the digital signature Rust example:
pub fn get_identity(&self) -> Result<risc0_zkp::core::sha::Digest> {...}
Projects that need to use risc0-zkp
in the guest should set default-features = false
. See our digital signatures Rust example:
risc0-zkp = { version = "0.11.0-rc.4", default-features = false }
risc0-zkvm-verify/zkp
has also been moved into risc0-zkp
by @flaub in #183DEFAULT_METHOD_ID_LIMIT
by @flaub in #203Clone
and PartialEq
methods by @flaub in #186cargo-risc0
tool to manage the risc0 toolchain by @shkoo in https://github.com/risc0/risc0/pull/198
rules_rust
0.7.0 by @flaub in https://github.com/risc0/risc0/pull/206
cargo check —benches
by @flaub in https://github.com/risc0/risc0/pull/225
Published by flaub over 2 years ago
We've made quite a few changes this time! This release includes improvements to the guest zkVM, progress towards a pure Rust implementation, work on the Receipt object, an API improvement, and expanded documentation.
Improvements have been made to the guest zkVM:
We've also made progress towards a pure Rust zkVM implementation:
The following improvements have been made to Receipts and verification:
Our API can now take in-memory buffers:
Lastly, we've improved our documentation:
Full Changelog: https://github.com/risc0/risc0/compare/v0.9.0...v0.10.0
Published by flaub over 2 years ago
Full Changelog: https://github.com/risc0/risc0/compare/v0.8.0...v0.9.0
Published by flaub over 2 years ago
Published by flaub over 2 years ago
Full Changelog: https://github.com/risc0/risc0/compare/v0.7.1...v0.7.2