Lurk Beta: The Zero-Knowledge Proof Programming Language
Today, we are thrilled to announce the Beta Release of Lurk, marking a significant milestone in our journey to create the premier Zero-Knowledge Proof Programming Language. This post will recap Lurk’s evolution, showcase its current capabilities, and give a glimpse into its promising future.
Past (Alpha)
With the Lurk Alpha release, we introduced a Turing-complete programming language designed for zero-knowledge proofs. It allowed developers to escape the confines of manually written circuits and embrace a high-level, expressive alternative. Central to Alpha was a universal verifier, capable of handling any computation expressible in Lurk’s language. This version laid the foundation for what Lurk is today, providing a robust, audited platform for early adopters.
Present (Beta)
Correctness
In the Beta version, we have significantly enhanced the correctness of Lurk’s reduction circuit by transitioning from hand-written circuits to procedurally generated ones. This advancement is made possible through our Lurk Evaluation Model (LEM) DSL, which also facilitates the implementation of the Lurk reduction step.
Customization
Lurk Beta introduces Coprocessors, a major leap in customization. These allow for seamless integration of domain-specific instructions, enhancing program expressiveness and efficiency, especially in cryptographic functions. Additionally, with Circom Scotia, integrating Lurk-compatible Circom circuits into your projects has never been easier.
- Custom instructions are now possible through Coprocessors, enabling applications to define and implement domain-specific instructions that integrate as seamlessly as Lurk’s built-in operators.
- User-defined Coprocessor circuits facilitate efficient proofs for a variety of functions, particularly cryptographic ones.
- With Circom Scotia, defining Lurk-compatible circuits in Circom becomes straightforward, and Lurk’s support for Circom Coprocessors enhances this integration.
Performance
The Beta release transforms Lurk’s performance profile. While in an IVC proof, the addition of coprocessors to the Lurk evaluation circuit could bloat the cost of every folding step, with the integration of SuperNova, this is no longer a concern. Our hybrid model provides a balance between general-purpose programming and optimized arithmetic circuits, ensuring optimal performance.
- The NIVC support in Lurk Beta ensures that the cost of external circuits is only incurred during actual use, effectively eliminating the performance penalty of Lurk Alpha’s single universal circuit.
- The hybrid performance model equips Lurk with the versatility of a fully general, expressive, data-centric programming language, combined with the efficiency of custom arithmetic circuits authored in Circom or Bellpepper.
Ecosystem and Stack
Lurk Beta benefits from the full-stack support of Lurk Lab for the proving pipeline. Our commitment to open-source, community-focused projects enhances the agility and responsiveness of our stack, allowing us to quickly adapt and innovate in response to the needs of the ZK and Folding communities.
Lurk is designed to be blockchain-friendly, particularly for efficient verificationperformance on Ethereum. This is evident in its development of low-level components, such as the switch from Pasta to Bn256/Grumpkin curve cycle, enabling the use of Ethereum precompiles for on-chain verification.
Arecibo
- Our friendly fork of Nova, Arecibo, plays a crucial role in our ecosystem. Detailed in yesterday’s blog post, Arecibo serves as an incubator for new ideas, allowing for API finalization and design reviews, as seen with the adoption and refinement of SuperNova.
Bellpepper
- Bellpepper, a fork of Bellperson, focuses on providing a common library for specifying arithmetic circuits, underpinning Neptune, Arecibo/Nova, and Lurk itself. Its development emphasizes broad utility, as seen in Bellpepper’s Community-Maintained Cryptographic Gadgets Library.
Neptune
- We continue to maintain and optimize Neptune, our Poseidon hashing and circuit library, leveraging Bellpepper’s advancements for significant improvements in synthesis time.
- Taking advantage of Bellpepper’s optimized witness-generation circuit, we implemented optimized witness-generation.
- This led to optimizations yielding 16x improvements in synthesis time.
Future (1.0 and beyond)
Lurk 1.0
-
ZeroMorph Integration: We’re integrating the ZeroMorph polynomial commitment scheme into Nova, promising faster verification processes. This integration, coupled with the CycleFold protocol, aims to produce smaller proofs and enhanced efficiency.
-
LEM-Driven Development: LEM ensures the equivalence between the Lurk interpreter’s description and the enforcing circuit. It enables faster iterations on algorithmic improvements to reduce Lurk iterations (e.g., more efficient data structures) and the introduction of new language features beyond Alpha’s core (e.g., exception management, or new operators such as the list and apply operators from Common Lisp, and type assertions)
-
Parallel Folding: Inspired by Privacy Scaling Explorations’ ParaNova and Lagrange’s contributions, we’re exploring parallel folding to integrate these insights into Lurk. This includes work on Arecibo Paranova Integration and expanding to encompass Binary PCD.
Concurrent Lurk (Lurk 2.0?)
- We are envisioning an Actor Model Concurrency for Lurk, enabling proofs of truly distributed computation and opening new horizons in zero-knowledge proof programming.