This repository introduces various ZK languages via a simple program, which is as similar as possible for each language.
The used program has the following characteristics:
a
and b
. Of these, a
is a private input (if the language supports privacy) and b
is publica
and b
.The program, therefore, demonstrates how to write a ZK program where you can prove that you know a private a
so that a * b = c
.
ZK languages can usually be used at least as stand-alone. This means that proofs generated for ZK programs or for ZK-VM executions.
Some languages (or the ecosystems around them) support also ZK smart contracts (or zkApps). In this case, the same multiplication code is also expressed in a contract format, which typically differs from the stand-alone version.
Do note that especially the contract format evolves rapidly in all ecosystems. Anything written here may be outdated already the day after it's written.
All folders under the root folder are based on the language's name. Under that, there is a README and a multiply
folder, which contains the stand-alone programs with that language.
If the language has smart contract capabilities, they are demonstrated in a contract
folder.
The languages folders have at least the following possible differences:
Questions? Wanna see some language here? Other issues? Feel free to get in touch or just open an issue / PR here.