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.
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.
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).
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.
Subscribe to the ZKM Blog
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
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.
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.
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).