Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/microbecode/zk-languages
Introduction to various ZK languages
https://github.com/microbecode/zk-languages
Last synced: about 1 month ago
JSON representation
Introduction to various ZK languages
- Host: GitHub
- URL: https://github.com/microbecode/zk-languages
- Owner: microbecode
- License: mit
- Created: 2023-11-06T12:41:01.000Z (8 months ago)
- Default Branch: master
- Last Pushed: 2024-03-25T07:43:51.000Z (3 months ago)
- Last Synced: 2024-04-14T01:53:39.891Z (3 months ago)
- Language: Roff
- Homepage:
- Size: 148 KB
- Stars: 25
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Lists
- awesome-zk - zk-languages: A repo with basic example of most ZK languages
README
# Various ZK languages
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:
- It has two inputs: `a` and `b`. Of these, `a` is a private input (if the language supports privacy) and `b` is public
- It has one public output, which is the multiple of `a` 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`.
## Stand-alone and contracts
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.
### Folder structure
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.
## Differences
The languages folders have at least the following possible differences:
- Different technologies, so different required files and instructions
- Some languages generate proofs explicitly, some do things more in the background
- Some languages don't have local proving available at all, currently
- Some languages support privacy, while others don't
- Some languages require a trusted setup
- Some languages (or ecosystems around the language) support ZK smart contracts## Contact
Questions? Wanna see some language here? Other issues? Feel free to [get in touch](https://linktr.ee/lauripeltonen) or just open an issue / PR here.