⚠️ Disclaimer ⚠️
This version serves as the foundation for the production release and is currently undergoing security and correctness audits.
Although extensive testing and validation have been performed, additional bugs or vulnerabilities may still be discovered. Users should evaluate the software according to their own requirements and use it at their own discretion and responsibility.
Feedback and bug reports are highly appreciated and help improve the reliability of the project.
Summary
- Improved distributed proving robustness and fault tolerance
- Improved proving performance and GPU utilization
- Porting critical parts of memory arithmetization (mops) to GPU
- More efficient Main and Binary state machine arithmetization
- Improved RISC-V support and guest runtime safety
- New standalone
libziskosstatic library - Improved SDK, toolchain and developer experience
- Enhanced setup generation and proving infrastructure
- New EVM JUMPDEST precompile
- Improved cryptographic operations and accelerator handling
- Soundness and correctness fixes
- Emulator Profiling and Statistics
Distributed Proving Robustness
Several improvements were introduced to increase stability, fault tolerance and correctness in distributed proving environments.
- Improved coordinator and worker lifecycle management.
- Improved worker recovery, cancellation and reconnection handling.
- Prevented duplicate job dispatches and race conditions.
- Added validation of worker responses against the current job phase and assignment.
- Improved aggregation task handling and recurser validation.
- Improved handling of failed worker setup.
- Reduced unnecessary data copies between coordinator and workers.
- Improved distributed proving diagnostics and testing.
Proving Performance
Significant improvements have been made to proving throughput and resource utilization.
- Reworked BLAKE2b arithmetization from 24 to 8 rows per round, significantly increasing the number of operations that can be proved per AIR instance.
- Optimized modular exponentiation.
- Introduced more efficient Binary state machine planning and AIR selection.
- Added indexed packing for Main traces to reduce trace size.
- Improved GPU memory planning and utilization.
- Added GPU support for memory count and planning.
- Improved GPU stream scheduling and reduced unnecessary synchronization.
- Overlapped Main witness computation with ongoing ASM execution.
- Added GPU memory usage reporting for better resource management.
- Added a tool to analyse execution traces and propose or regenerate the FROPS.
State Machine and Arithmetization Improvements
The release introduces several changes aimed at reducing proving costs and improving AIR efficiency.
- Added indexed Main trace packing with instruction-table reconstruction.
- Added the
BinaryAddHiAIR for more efficient low-limb additions. - Split
BinaryExtensioninto reduced and full variants. - Reduced Binary lookup table sizes.
- Improved cost-driven AIR instance selection.
- Improved
ArithEqand arithmetic planning. - Improved memory planning and range-check efficiency.
- Increased Keccak-f trace capacity.
- Added modular ArithEq instances, reducing the cost.
RISC-V and Guest Runtime Improvements
Guest execution support has been expanded and made more robust.
- Added initial support for RISC-V bit-manipulation extensions (Zbb, Zbkb, Zbs)
- Improved RISC-V instruction decoding and transpilation.
- Improved ELF loading and validation.
- Added
.sbsssupport to the ZisK linker script, improving compatibility with C/C++ toolchains. - Added stack overflow protection using an unmapped guard region.
- Improved emulator tracing and debugging capabilities.
- Improved support for dynamic jumps and RISC-V instruction edge cases.
ziskos and Developer Experience
The guest environment and developer tooling have been improved.
- Added a standard-compliant standalone
libziskosstatic library. - Added support for linking ZisK guest functionality from C, C++ and Rust host applications.
- Added an isolated allocator for static library builds.
- Added C++ constructor/destructor support.
- Added optional allocator usage statistics.
- Added keccak cache fcall to improves the Keccak cache.
- Improved the ZisK Rust toolchain packaging.
- Included
cargoin distributed ZisK toolchains. - Improved SDK and CLI diagnostics.
- Improved documentation and examples.
- Improved developer statistics and proving reports.
Setup Generation and Proving Infrastructure
Setup generation and proving infrastructure have been improved to simplify deployment and improve reliability.
- Improved setup caching and cache invalidation.
- Added better integration with CUDA setup generation.
- Improved proving-key management.
- Improved setup artifact generation and distribution.
- Updated Proofman integration and generated proving artifacts.
- Improved automated distributed proving environment provisioning.
- Improved toolchain and build reproducibility.
Cryptography and EVM
Cryptographic operations and EVM-related functionality have been improved.
- Improved BLS12-381 and BN254 elliptic-curve operations.
- Added complete elliptic-curve operations for subgroup checks and cofactor clearing.
- Improved hash-to-curve handling.
- Improved cryptographic accelerator diagnostics.
- Added an EVM
JUMPDESTprecompile. - Improved modular arithmetic and exponentiation.
- Improved BLAKE2b proving efficiency.
- Improved handling of BLS12-381 variable-length operations.
Soundness fixes
This release includes several soundness and correctness fixes across the proving system.
- Fixed soundness issues in
MemAlignfor non-aligned memory operations. - Fixed narrow unsigned loads allowing unconstrained high bytes.
- Fixed signed division zero-result handling in the Arith state machine.
- Fixed arithmetic and modular-operation edge cases.
- Fixed BLAKE2b message permutation and boundary conditions.
- Fixed DMA transpilation correctness when dynamic jumps enter a DMA sequence.
- Fixed invalid empty BLS12-381 variable-length precompile inputs.
- Fixed jump and address-related constraints.
- Strengthened validation of distributed worker responses.
- Improved selector constraints and memory permutation validation.
Emulator Profiling and Statistics
- Added statistics snapshots and run-to-run comparison.
- Added a HTML report, for a single run or for the comparison of two runs.
- Added a detailed memory cost breakdown.
- Added operand pattern analysis.
- Added precompile duplicate analysis.
- Added register step-distance analysis against the proof's distance limit.
- Improved call-stack reconstruction, which now resynchronizes on GCC/C++ tail recursion instead of disabling tracking.
Upgrade Notes
This release changes the interface of several precompiles and updates the ZisK toolchain accordingly. Update the ZisK toolchain and rebuild your guest programs to regenerate the ELF files. Running a previously generated ELF against this release will fail or produce incorrect results.