Releases: risc0/risc0
v1.0.1
v1.0.0
🔥 Prover Performance Improvements
- Witness generation has been parallelized by adding another preflight pass.
- Improved performance by minimizing data transfers when constructing merkle proofs.
- Parallelized
step_verify_bytes
function. - Changed
eval_check
to use precomputed powers for poly_mix.
🛠 Fixes
- Fixed a bug with unaligned short read.
- Commit globals in Fiat-Shamir transcript.
- Fixed an undefined behavior warning generated by rust 1.77.2 in guest.
- Addressed security vulnerabilities in the rv32im circuit.
- Fix clippy warnings in all published crates.
- Fix build issues arising from an undefined
_end
symbol.
⚡️ Features
- Generalized proof composition.
- Benchmarks have been improved.
- A new web app that can be used to display datasheets, prover benchmarks, application benchmarks and supported crates.
- Added the ability to compile Rust crates that bind to C code.
- Added a new
cargo risczero deploy
command to deploy ELF binaries to bonsai. ProverOpts
now has a newReceiptKind
field. This is used to select the
minimum compression level of receipt to be generated by theProver
and
ProverServer
traits. The kinds include composite (a receipt containing a
vector of segment receipts), succinct (a receipt where all segments have been
compressed into a single receipt via the lift and join recursion programs),
and compact (a snark receipt generated by compressing a succinct receipt using
a groth16 prover. This used for on-chain proving).- A
compress
function has been added to theProver
trait. This allows the users to more easily change receipts to a different kind in the host. - Rust's
alloc_zeroed
function has been optimized in the guest. - Export
NullSegmentRef
for use by host code. - Added a soundness error calculator.
- Bonsai SDK: added a method used to download receipts.
- Bonsai SDK: improved error messages.
- Bonsai SDK: added a new API to stop a proving session in Bonsai.
🚨 Breaking Changes
-
Change sys_cycle_count to return a
u64
instead of u32. -
The
Prover
trait'sprove()
function now returns aProveInfo
. Thisstruct
contains the receipt as well as cycle and segment information gathered during
the proof generation. The following is the definition ofProveInfo
and
SessionStats
structs:
/// Information returned by the prover including receipt as well as other information useful for debugging
pub struct ProveInfo {
/// receipt from the computation
pub receipt: Receipt,
/// stats about cycle counts of the execution
pub stats: SessionStats,
}
/// Struct containing information about a prover's cycle count after running the guest program
pub struct SessionStats {
/// Count of segments in this proof request
pub segments: usize,
/// Total cycles run within guest
pub total_cycles: u64,
/// User cycles run within guest
pub user_cycles: u64,
}
For those upgrading from v0.21.0, the following code change is necessary on the host side to retrieve the receipt.
- let receipt = prover.prove(env, BEVY_GUEST_ELF).unwrap();
+ let receipt = prover.prove(env, BEVY_GUEST_ELF).unwrap().receipt;
v1.0.0-rc.7
What's Changed
- Add new function to Groth16Receipt by @nategraf in #1905
- recursion circuit: create an empty zkr.zip file when building docs by @SchmErik in #1907
- Increase ZK_CYCLES by @tzerrell in #1910
- adding SECURITY.md by @kevinnassery in #1908
- Updates to zirgen generated code by @flaub in #1911
- Improve
SyscallName
by @nvzqz in #1912 - Updates to codegen files by @flaub in #1915
- Release v1.0.0-rc.7 by @flaub in #1916
New Contributors
- @kevinnassery made their first contribution in #1908
- @nvzqz made their first contribution in #1912
Full Changelog: v1.0.0-rc.6...v1.0.0-rc.7
v1.0.0-rc.6
Full Changelog: v1.0.0-rc.5...v1.0.0-rc.6
v1.0.0-rc.5
New Contributors
- @nuke-web3 made their first contribution in #1813
Full Changelog: v1.0.0-rc.4...v1.0.0-rc.5
v1.0.0-rc.4
New Contributors
- @nahoc made their first contribution in #1549
- @avocadodefi made their first contribution in #1332
- @Vap0RSh4wN made their first contribution in #1605
- @nazar-pc made their first contribution in #1638
- @NicoleCheng98 made their first contribution in #1687
- @tgolang made their first contribution in #1705
- @CobraLin made their first contribution in #1691
- @simlecode made their first contribution in #1739
- @MartinKong1990 made their first contribution in #1737
- @sukrucildirr made their first contribution in #1779
Full Changelog: v0.21.0...v1.0.0-rc.4
v1.0.0-rc.3
New Contributors
- @nahoc made their first contribution in #1549
- @avocadodefi made their first contribution in #1332
- @Vap0RSh4wN made their first contribution in #1605
- @nazar-pc made their first contribution in #1638
- @NicoleCheng98 made their first contribution in #1687
- @tgolang made their first contribution in #1705
- @CobraLin made their first contribution in #1691
- @simlecode made their first contribution in #1739
- @MartinKong1990 made their first contribution in #1737
Full Changelog: v0.21.0...v1.0.0-rc.3
v0.21.0
🛠 Fixes
-
Fix an issue where the temporary directory is not being removed when the
Session
goes out of scope. This helps prevent the depletion of disk space. -
Verification of groth16 receipts in rust that are compatible with Bonsai
⚡️ Features
- Add an improved Poseidon2 hashing function that replaces Poseidon for recursive proofs.
🚨 Breaking Changes
- For recursive proofs, the Poseidon hash function is replaced by the Poseidon2 hash function. Users can still create receipts using the older Poseidon hash function but these receipts will not be usable by Bonsai or any proof composition or rollup use cases.
v0.21.0-rc.2
What's Changed
Full Changelog: v0.21.0-rc.1...v0.21.0-rc.2
v0.21.0-rc.1
Full Changelog: v0.20.1...v0.21.0-rc.1