Hello, Keelung!
We are thrilled to announce the alpha release of Keelung, a domain-specific language (DSL) designed for fast, private, and secure application development. After a year of intensive research and development focused on post-quantum zero-knowledge cryptography, we have created Keelung to empower developers to create secure and reliable post-quantum zero-knowledge proofs without requiring specialized cryptography skills. Both Keelung and its compiler have been implemented in Haskell, enabling developers to produce high-level zero-knowledge proofs protected by Haskell's cutting-edge type system while leveraging Haskell's extensive ecosystem and tooling.
We are delighted to share that Keelung will be 100% open-source as we remain committed to our values of transparency, collaboration, and community-driven development. We believe that by making Keelung available to everyone, we can create a more open and inclusive zero-knowledge ecosystem that benefits all stakeholders.
If you're interested in understanding the mechanics of how Keelung works, we have an earlier blog post that provides an in-depth explanation. Check out our blog post titled "Keelung - A Toolkit For Fast, Private and Secure Applications" on our website or by using the following link here.
What Are Zero-Knowledge Proofs?
Zero-knowledge proofs are a method of proving the authenticity of a statement without revealing any other information beyond what is necessary to verify the statement's truthfulness. In other words, a zero-knowledge proof allows one party to convince another party that they know a secret without revealing the secret itself.
For example, let's say you want to prove to someone that you know the solution to a mathematical problem, without actually revealing the solution. A zero-knowledge proof could allow you to do this by generating a series of steps that show you have the solution, without revealing what the solution is. The other person can then verify the steps to confirm that you do indeed know the solution. For an intuitive example of how zero-knowledge proofs work, a clever story using the Where's Waldo puzzle is provided here.
tl;dr - Zero-knowledge proofs are a powerful tool in the field of cryptography, providing a way to authenticate information without revealing sensitive data.
Additional Learning Resources
If you're interested in learning more about zero-knowledge proofs, please see the following resources.
A New Approach To Protecting Secrets Is Discovered - Published by The New York Times.
Zero Knowledge Proofs: An illustrated primer by Mathew Green.
What are Zero Knowledge Proofs? - A simple 3-minute guide provided by Decrypt.
Unlocking the Potential: Real-World Use Cases of Zero-Knowledge Proofs
Zero-knowledge proofs are a powerful tool that have a wide range of applications in today's digital world. Here are three examples of how zero-knowledge proofs can be used to enhance security and privacy in everyday transactions:
Privacy-Preserving Analytics: Zero-knowledge proofs can be used to enable secure and private data analysis without revealing sensitive information with applications in business intelligence, data analytics and machine learning. For example, a company could use zero-knowledge proofs to prove that their revenue is above a certain threshold without revealing the actual revenue number.
Identity Verification: With the rise of online platforms, verifying identities has become increasingly important. Zero-knowledge proofs can enable secure identity verification without disclosing any unnecessary personal information. This can be particularly useful in cases where a user wants to prove their age or eligibility for a certain service without revealing sensitive personal details.
Supply Chain Management: In today's global marketplace, supply chains can be incredibly complex. Zero-knowledge proofs can help ensure the authenticity and integrity of products throughout the supply chain, from manufacturing to delivery. This can help prevent counterfeit products and ensure that consumers receive the products they paid for.
Anonymous Verifiable Voting: Anonymous verifiable voting can help to prevent voter fraud and ensure the integrity of election processes. By providing a transparent and secure system that allows voters to verify that their vote was counted correctly without compromising their privacy, this method of voting can help to promote trust in the electoral process and encourage greater participation from the public.
Machine Learning / Artificial Intelligence: Using zero-knowledge proofs, machine learning inference can be performed on edge devices without sending the input to centralized servers. Proofs enable hiding both sensitive input data and the model parameters from public view and allow downstream entities verify the input was correctly processed to yield the reported output.
Gaming: Zero-knowledge proofs (ZKPs) are an effective tool in gaming to enable players to prove that they have achieved certain in-game accomplishments or reached certain levels without revealing sensitive information about their game strategies or progress. This enhances the gaming experience by providing a secure and confidential way for players to earn rewards and recognition for their achievements without having to reveal any personal information or trade secrets.
Advantages Over Other Zero-Knowledge DSLs
Keelung sets itself apart from other zero-knowledge domain-specific languages (DSLs) by offering several unique features. First, it supports mobile witness and zero-knowledge proof generation, enabling zkApps to run on resource-constrained devices. Second, Keelung has a library of both pre- and post-quantum cryptographic primitives and proving systems, ensuring long-term security and flexibility for developers. Third, Keelung is designed to be developer-friendly, even to non-experts, thanks to its higher level of abstraction and its embedded support in Haskell. Lastly, Keelung is soon to offer tightly coupled hardware acceleration, which will provide even faster and more efficient zero-knowledge proof generation for developers.
Limitations of existing DSLs
Upcoming v1.0 Spec
- Optimizer improvements: We will further improve Keelung’s optimizer to reduce the number of constraints required to generate zero-knowledge proofs. This optimization is critical for efficient zkApp development.
A) Constraints reduction: The number of constraints used to generate a proof, allowing for faster proof generation.
B) Efficiency enhancement: The efficiency of the compiler, resulting in faster and more efficient zkApp development.
- Operators for big integers: Added range of operators for big integers, enabling developers to write more expressive and sophisticated zkApps.
- Compatibility with PLONKY proving systems: This compatibility ensures that Keelung can be integrated with existing tools and systems, making it easier for developers to adopt the language.
- Library and tooling improvements: This expansion will allow developers to implement complex cryptography solutions easily, using pre-built building blocks that can be mixed and matched as needed. Our library will expand on a wide range of pre- and post-quantum cryptographic primitives and algorithms, including hash functions, digital signatures, and encryption schemes.
- Hardware acceleration oriented optimizer: This feature will provide even faster and more efficient zero-knowledge proof generation by leveraging tightly coupled hardware acceleration.
#ETHDenver Release + Connecting With Developers
We had the privilege of announcing the alpha release of Keelung at #ETHDenver, the biggest Ethereum conference of the year, allowing us to showcase our innovation to a vast audience of developers. Throughout the conference, our team shared Keelung at multiple hacker houses where experienced developers provided us with invaluable hands-on feedback. We received an overwhelmingly positive response and interest in the project, further strengthening our belief in the potential of Keelung.
Start Building Your Privacy-Preserving Applications with Keelung
If you're interested in learning more about Keelung or are ready to begin developing your own privacy-preserving applications, please see the GitHub repository and documentation. You can browse through the code, try out the examples, and learn more about how Keelung works. Our documentation provides detailed information on how to use Keelung, including installation instructions, usage examples, and detailed tutorials. If you have any questions about Keelung or would like to contribute to the project, feel free to start a thread on our GitHub discussions page or reach out to us via e-mail at desk@btq.li. We're always happy to help and would love to hear from you!