Use casesResources

Keelung -
A Zero-Knowledge Toolkit for Fast, Private and Secure Applications

assertAllTobe420 :: Comp GF181 (ExprUnit GF181)
assertAllTobe420 = do
-- expects an input array of length 8
xs <-inputArray 8
-- iterate through the array with indices from 0 to 7
forM_ [0 ..7] $ \i -> do
-- read out the variable in array ‘xs’ at index ‘i’
x <- access xs i
-- assert ‘x’ to be ‘420’

return unit

How it works

Keelung raises the level of abstraction, allowing developers to focus on implementing business logic rather than complex ZK circuits.

card background
Write ZKPs in Haskell

Keelung is a domain-specific language (DSL) embedded in Haskell. This allows developers to write high-level ZKPs guarded by Haskell’s advanced type system while leveraging the ecosystem and toolings of Haskell.

card background
Flexible ZKPs

Easily transition to post-quantum. Keelung's modular design allows you to seamlessly move between pre-quantum and post-quantum cryptographic primitives.

card background
One R1CS circuit to rule them all

Keelung gives you the flexibility to adjust the downstream proving system targeted by the R1CS circuit. This means you only need to compile one R1CS circuit to take advantage of an entire ecosystem of proving systems.

card background
Maximal interoperability

Keelung provides the flexibility to change the target environment for proof verification. Deploy Keelung proofs in any environment capable of zero-knowledge proof verification.

Zero-Knowledge Use Cases

Privacy-Preserving Analytics: ZKPs 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.

Finance: ING bank uses ZKPs to prove that mortgage applicants incomes are within the admissible range without revealing their exact salary.

Anonymous verifiable voting: Eligible voters can prove the right to cast a ballot without revealing their identity. Voters may also request a verifiable proof that their vote was included in the final tally by the administration organizing the vote.




Learn more about how Keelung works, get started with the step-by-step tutorial and set up your own project.


Dive into Keelung whitepaper to uncover its distinctive capabilities and benefits.

Language reference

Read the reference of the language and documentation on the compiler.


Learn Keelung by some examples on a variety topics.

Standard library

Check out the standard library for Keelung.

Subscribe for updates

Sign up for our monthly newsletter, where we’ll keep you up-to-date with the latest Keelung updates.

Copyright © 2022-2023 BTQ. All Rights Reserved.Privacy PolicyTerms of Service