Ziren v1.2.0

Share on

Ziren v1.2.0 is a major update focused on interoperability and developer experience, introducing compressed-to-Groth16 proof conversion, a no-std STARK verifier, enhanced network prover capabilities, and a new CLI tool to initialize the Ziren project template.

Golang guest program support is the first step for Ziren to implement Linux ABI, which can bridge the gap between a normal high-level language program and the zkVM program significantly.

To support Bitcoin and BitVM3, we provide general static compilation and linking in Ziren, and allow it to prove the BitVM2 Bitcoin Headerchain. We implement Poseidon2 and AES-128 precompiles for the garbling in verifiable garbled circuits. This benchmark shows Poseidon2 is slightly faster than AES-128.

Proving & Verification Enhancements

  • Compressed to Groth16 Conversion: Functionality to convert compressed proofs into Groth16 format (#220), improving interoperability with widely adopted verification systems.
  • No-Std STARK Verifier: Introduced a lightweight verifier implementation that works in no-std environments (#262), expanding applicability for off-chain proof verification in resource-constrained systems.
  • New verify_proof() API: Extended STARK verifier with a direct proof verification function (#280), streamlining developer integration.
  • Verification Key Updates: Refreshed Groth16 and Plonk verification keys (#270, #289, #297) and enforced default VERIFY_VK flag (#295) for safer verification defaults.
  • Proof Aggregation: Documentation additions highlight aggregation capabilities (#302)

Network Prover Upgrades

  • Cycle Retrieval: Added support for retrieving cycle counts directly from the network prover (#227, #243), allowing performance evaluation and benchmarking.
  • Prove-with-Cycles API: Refactored proving interface into a generic form that returns cycle data (#242, #243).
  • Prover Configuration: Introduced a maximum prover number field for tuning distributed proving (#241).
  • ELF-Based Proving: Network prover now supports ELF identifiers as entry points (#240).
  • Adaptation to Proof Network: Extended compatibility with evolving proof network (#239).

Tooling & CLI Improvements

  • ZKM CLI: New command-line interface (zkm cli) was introduced (#226), allowing developers to implement proving (network and local) and verification directly on the command line
  • Build & Environment Integration: Build system updated to fetch zkm-build CC from OS environment variables (#288), improving portability and reproducibility.

zkVM & Execution Features

  • Embedded Allocator: Added allocator support inside the zkVM (#247), enabling more flexible memory management for guest programs.
  • Bitcoin Guest Support: Added initial Bitcoin guest program and instruction support (madd/msub) (#286), for the Bitcoin example
  • Go Program Support: Added support for Go language guest execution (#254), and implement partial Linux ABI. Cycles of go guest program(Geth keeper) and rust guest program(Reth) for block 23498500 are as follows:
  • Poseidon2 Precompile: Integrated Poseidon2 hash precompile (#255), with updated documentation (#258), expanding cryptographic primitives available to contracts.
  • AES NI Precompile: https://github.com/ProjectZKM/Ziren/pull/314AES Precompile: Integrated AES128 encryption precompile(#314), the benchmark shows that AES NI is slight slower than Poseidon2.
  • DV-SNARK proof system with BitVM2-GC enabled on GOAT Network

Stability, Fixes & Maintenance

  • Dependency & Security Fixes: Patched vulnerable dependencies (#249), bumped Rust toolchain version (#278), and refreshed example deps (#291).
  • Core Executor & Machine Module Fixes: Corrected typos, improved comments, and fixed unimplemented test behaviors (#215, #217, #238, #256, #268, #273, #281, #300).
  • Proof System Adjustments: Fixed vk_map (#294), updated Groth16 public values test (#299), and fixed page count limits (#251).
  • Documentation expansion for both new and existing features:
    • Quickstart Guide (#228)
    • Prover Architecture (#260)
    • Verifier Section (#296)
    • Proof Aggregation (#302)
    • Independent Evaluations (#308)

Where v1.1 focused heavily on raw performance improvements, v1.2 prioritizes interoperability and the developer experience with improved developer tooling and compatibility.

  • Broader proof system support (Groth16 conversion, no-std STARK verifier, updated VKs).
  • Richer network prover capabilities (cycle introspection, ELF IDs, config options).
  • Developer usability improvements (CLI, Quickstart, extensive documentation).
  • Expanded application support (Bitcoin guest, Go program compatibility support, new precompiles e.g., Poseidon2).
  • Ongoing stability and security maintenance (deps, toolchain, docs, tests).

Learn about Ziren: docs.zkm.io

Build with Ziren: github.com/projectzkm/ziren  

More articles
Hello World: January Newsletter
We’re ecstatic to move into the New Year with everything that’s coming in 2024. ZKM ended 2023 with tremendous gratitude and appreciation for our community — we couldn’t have had such a successful year without you!
House of ZK, Brussels: A Showcase of Zero Knowledge Excellence
The House of ZK event, which coincided with ETHCC week in Brussels on July 11, 2024, proved to be the central hub for blockchain developers, scholars, and industry leaders dedicated to the exploration and advancement of ZK-based technologies. This one-day event was packed with educational keynotes, engaging panels, and in-depth discussions, focusing on the profound potential and diverse applications of ZK in blockchain.
Ziren v1.2.0

Ziren v1.2.0 is a major update focused on interoperability and developer experience, introducing compressed-to-Groth16 proof conversion, a no-std STARK verifier, enhanced network prover capabilities, and a new CLI tool to initialize the Ziren project template.

Golang guest program support is the first step for Ziren to implement Linux ABI, which can bridge the gap between a normal high-level language program and the zkVM program significantly.

To support Bitcoin and BitVM3, we provide general static compilation and linking in Ziren, and allow it to prove the BitVM2 Bitcoin Headerchain. We implement Poseidon2 and AES-128 precompiles for the garbling in verifiable garbled circuits. This benchmark shows Poseidon2 is slightly faster than AES-128.

Proving & Verification Enhancements

  • Compressed to Groth16 Conversion: Functionality to convert compressed proofs into Groth16 format (#220), improving interoperability with widely adopted verification systems.
  • No-Std STARK Verifier: Introduced a lightweight verifier implementation that works in no-std environments (#262), expanding applicability for off-chain proof verification in resource-constrained systems.
  • New verify_proof() API: Extended STARK verifier with a direct proof verification function (#280), streamlining developer integration.
  • Verification Key Updates: Refreshed Groth16 and Plonk verification keys (#270, #289, #297) and enforced default VERIFY_VK flag (#295) for safer verification defaults.
  • Proof Aggregation: Documentation additions highlight aggregation capabilities (#302)

Network Prover Upgrades

  • Cycle Retrieval: Added support for retrieving cycle counts directly from the network prover (#227, #243), allowing performance evaluation and benchmarking.
  • Prove-with-Cycles API: Refactored proving interface into a generic form that returns cycle data (#242, #243).
  • Prover Configuration: Introduced a maximum prover number field for tuning distributed proving (#241).
  • ELF-Based Proving: Network prover now supports ELF identifiers as entry points (#240).
  • Adaptation to Proof Network: Extended compatibility with evolving proof network (#239).

Tooling & CLI Improvements

  • ZKM CLI: New command-line interface (zkm cli) was introduced (#226), allowing developers to implement proving (network and local) and verification directly on the command line
  • Build & Environment Integration: Build system updated to fetch zkm-build CC from OS environment variables (#288), improving portability and reproducibility.

zkVM & Execution Features

  • Embedded Allocator: Added allocator support inside the zkVM (#247), enabling more flexible memory management for guest programs.
  • Bitcoin Guest Support: Added initial Bitcoin guest program and instruction support (madd/msub) (#286), for the Bitcoin example
  • Go Program Support: Added support for Go language guest execution (#254), and implement partial Linux ABI. Cycles of go guest program(Geth keeper) and rust guest program(Reth) for block 23498500 are as follows:
  • Poseidon2 Precompile: Integrated Poseidon2 hash precompile (#255), with updated documentation (#258), expanding cryptographic primitives available to contracts.
  • AES NI Precompile: https://github.com/ProjectZKM/Ziren/pull/314AES Precompile: Integrated AES128 encryption precompile(#314), the benchmark shows that AES NI is slight slower than Poseidon2.
  • DV-SNARK proof system with BitVM2-GC enabled on GOAT Network

Stability, Fixes & Maintenance

  • Dependency & Security Fixes: Patched vulnerable dependencies (#249), bumped Rust toolchain version (#278), and refreshed example deps (#291).
  • Core Executor & Machine Module Fixes: Corrected typos, improved comments, and fixed unimplemented test behaviors (#215, #217, #238, #256, #268, #273, #281, #300).
  • Proof System Adjustments: Fixed vk_map (#294), updated Groth16 public values test (#299), and fixed page count limits (#251).
  • Documentation expansion for both new and existing features:
    • Quickstart Guide (#228)
    • Prover Architecture (#260)
    • Verifier Section (#296)
    • Proof Aggregation (#302)
    • Independent Evaluations (#308)

Where v1.1 focused heavily on raw performance improvements, v1.2 prioritizes interoperability and the developer experience with improved developer tooling and compatibility.

  • Broader proof system support (Groth16 conversion, no-std STARK verifier, updated VKs).
  • Richer network prover capabilities (cycle introspection, ELF IDs, config options).
  • Developer usability improvements (CLI, Quickstart, extensive documentation).
  • Expanded application support (Bitcoin guest, Go program compatibility support, new precompiles e.g., Poseidon2).
  • Ongoing stability and security maintenance (deps, toolchain, docs, tests).

Learn about Ziren: docs.zkm.io

Build with Ziren: github.com/projectzkm/ziren