github 0xPolygonHermez/zisk v1.3.0-alpha

4 hours ago

⚠️ 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

  • New BabyJubJub, BLAKE3f and BLAKE2s precompiles
  • BLAKE3-based recursive proving available for testing
  • Improved trace packing and proving efficiency
  • Improved proof verification and security
  • Native RISC-V Zba support
  • Improved setup generation and proving infrastructure
  • Improved distributed proving and configuration safety
  • Enhanced SDK, CLI and reporting tools
  • Soundness and correctness fixes
  • GPU Proof Scheduling refactored

Cryptographic Precompiles

New precompiles extend ZisK's cryptographic capabilities while reducing the proving cost of commonly used operations.

  • Added a dedicated BabyJubJub point-add precompile compatible with circomlib.
  • Added a BLAKE3f precompile for the seven-round BLAKE3 compression permutation.
  • Added a BLAKE2s precompile for the full ten-round BLAKE2s compression permutation.

Recursive Proving and AIR Efficiency

The proving architecture has been optimized to reduce the number of AIR instances and improve recursive proving efficiency.

  • Added BLAKE3-based recursive proving as an alternative proving configuration. It is not the default configuration in this release, but is available for testing ahead of its planned official release in a future version.
  • Added larger AIR variants and updated planners to prioritize fewer instances before prover memory usage.
  • Resized several AIRs to use lanes, packing multiple operations per row.
  • Refactored witness generation to support variable-height AIRs and more efficient instance selection.
  • Optimized witness computation in the most critical AIRs, reducing copies and computing inverses in batch.
  • Increased Main trace capacity while maintaining bounded register range-check chains through flush windows.
  • Improved AIR selection across memory, binary, arithmetic and DMA state machines.

GPU Proof Scheduling and Prover Performance

Proof scheduling on the GPU has been refactored to keep the device busy end to end, with less host synchronization.

  • Traces for the next proof are prefetched on the device while the current proof runs.
  • Proofs are pipelined through a ring of completion slots, removing per-proof host synchronization.
  • One large stream per GPU, split into two halves for recursion and small proofs once the large instances complete.
  • Recursion overlaps the basic proofs throughout the proving phase.
  • Main trace commits can run in streaming slots concurrently with GPU memory planning.
  • Expressions are compiled per AIR into GPU kernels at setup time, replacing the runtime interpreter.
  • Fused circom witness solve and trace scatter into a single call, roughly halving recursive witness generation time on the CPU.

Trace Packing and Proving Performance

Execution traces now pack more work into each row, reducing the number of instances required for proving.

  • Added indexed Main trace packing and multi-lane execution support.
  • Multiple execution steps can now be packed into a single trace row.
  • Main and memory traces use lane packing to increase the amount of work covered by each instance.
  • Improved witness generation with parallel tallying and lazy memory-operation traversal.
  • Optimized Keccak-f witness generation using lane-native state representation and bulk trace-row packing.
  • Improved memory and GPU planning to better match actual AIR trace sizes.

Proof Verification and Security

Proof verification has been strengthened to ensure that proofs are checked against trusted verification parameters and the intended statement.

  • Bound verification to trusted setup and program verification keys rather than keys supplied by the proof.
  • Made committed public values the authoritative source for the verified statement.
  • Added hash-family information to serialized proofs.
  • Added generated native verifiers for BLAKE3, Poseidon1 and Poseidon2.
  • Improved proof wrapping and recursive proof-kind validation.
  • Added support for explicitly providing trusted PLONK and setup verification keys through the SDK and CLI.
  • Updated Solidity verifier parameters to match the current proving setup.

Native RISC-V Zba Support

ZisK now provides native support for the RISC-V Zba address-generation extension.

  • Added native sh1add, sh2add and sh3add operations.
  • Added native slli.uw support.
  • Enabled Zba native operations by default for guest builds.
  • Updated the Rust toolchain to enable the Zba extension for guest builds.
  • Reduced the number of generated ZisK instructions for Zba address-generation operations.
  • Updated the Binary and Binary Extension state machines and ASM backend to support the new operations.

Setup Generation and Proving Infrastructure

Setup and proving infrastructure have been updated to support the new proving configuration and improve deployment reliability.

  • Added support for BLAKE3-based recursive proving setups. The BLAKE3 setup is not the default in this release, but is available for testing ahead of its planned official release in a future version.
  • Added support for larger and variable-size AIR configurations.
  • Improved setup caching and proving-key handling.
  • Improved multi-GPU setup handling.

Distributed Proving and Operations

Distributed proving and cluster operations have been simplified and hardened.

  • Removed coordinator-side proof persistence; completed proofs are retrieved through the API or webhook.
  • Coordinator configuration files now reject unknown keys instead of silently ignoring them.
  • Improved coordinator and worker lifecycle handling around setup failures and job processing.
  • Improved consistency of distributed proving configuration and deployment.
  • Improved support for BLAKE3 proving setups in distributed environments.

SDK, CLI and Reporting

Developer tooling has been enhanced with improved verification, diagnostics and reporting capabilities.

  • Added trusted verification-key overrides to the SDK and CLI.
  • Added PDF generation for emulator reports.
  • Added CSV export for memory statistics.
  • Improved developer proving and statistics reporting.
  • Improved diagnostic and reporting workflows.
  • Improved toolchain and release configuration.

Soundness and Correctness Fixes

This release includes several soundness, verification and correctness fixes across the proving system and guest-facing APIs.

  • Fixed an opcode-mapping soundness issue caused by overlapping Binary and Binary Extension opcode shadow ranges.
  • Fixed an unsound register-chain helper and extended Main register flush handling to support larger instances safely.
  • Fixed verification paths that could rely on proof-supplied verification keys instead of trusted keys and committed statements.
  • Fixed incorrect handling of zero-count DMA operations with non-32-bit addresses. Reported in #1311 by @han0110.
  • Fixed multiple FFI issues in modular exponentiation, including potential output-buffer overruns, uninitialized output data and zero-length pointer handling. Reported in GHSA-344c-mmqf-m76w by @this-vishalsingh.
  • Fixed correctness issues in proof wrapping, public-value canonicalization and proof-kind handling.
  • Strengthened validation of verification and proving artifacts.
  • Fixed a recursive-proof soundness issue where public signals were not constrained to the committed witness trace, allowing a malicious prover to forge public outputs. Reported and fixed in 0xPolygonHermez/pil2-proofman#578 by @felix314159.

Don't miss a new zisk release

NewReleases is sending notifications on new releases.