Keelung is a domain-specific language (DSL) embedded in Haskell that is designed for creating zero-knowledge proofs (ZKPs). With Keelung, developers can create high-quality and reliable ZKPs with ease, even without expertise in cryptography.
Keelung programs are compiled with the Keelung compiler.
Check out our GitBook for more information.
The language reference is now available on Hackage.
The standard library is available here.
Find us on Discord!
Get started using Keelung in GitHub codespaces by navigating to Code
-> Codespaces
in Keelung Examples!
- A more precise method of reference counting on unsigned integers
- Renaming of primitive datatype conversions
- Tons of bug fixes and stability improvements
- Operators for slicing and joining unsigned integers
- Internal: improvement of representation of polynomials with our new precise reference counter
- Internal: polynomial insertion is now 9x faster
- Snarkjs/Circom Integration: Snarkjs/Circom is currently the most popular ZK toolchain. We aim to tap into this ecosystem by integrating Keelung with Snarkjs/Circom.
- Standard Library Optimization: We plan to heavily optimize ciphers and hash functions such as AES and Blake2.
- PLONKish Backend Compilation Support: Supporting protocols like PLONK would allow Keelung programs to efficiently manage complex privacy-preserving computations, significantly enhancing their scalability and security across various applications.
- Quantitative Information Flow Analysis: We are working with Prof. Kohei Suenaga of Kyoto University to enable privacy leakage analysis of Keelung programs.
- DSL Refinement: We are transitioning statement operators (e.g.
performDivMod
, which is only allowed in theComp
monad) to pure operators to make these operations more versatile and easily integrated into different parts of our system. - Performance Improvement: We aim to speed up the compilation of operators on commonly used types such as Bytes, Word16, Word32, and Word64.
- Benchmarking CI/CD: We plan to include benchmarking in the CI/CD pipeline.