Skip to content

v1.1.0-alpha

Latest

Choose a tag to compare

@github-actions github-actions released this 18 Aug 00:57
9a5a1ac

⚠️ 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 libziskos static 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 BinaryAddHi AIR for more efficient low-limb additions.
  • Split BinaryExtension into reduced and full variants.
  • Reduced Binary lookup table sizes.
  • Improved cost-driven AIR instance selection.
  • Improved ArithEq and 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 .sbss support 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 libziskos static 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 cargo in 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 JUMPDEST precompile.
  • 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 MemAlign for 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.