info
zkApp programmability is not yet available on the Mina Mainnet. You can get started now by deploying zkApps to the Berkeley Testnet.
zkApps Roadmap
High-level overview of features available now, next, and later
Now
Mina zkApp CLI
- Scaffold projects and files
- Example projects
- Deployment
- Create a project with an accompanying UI — SvelteKit, NextJS, or NuxtJS
To install the Mina zkApp CLI:
npm install -g zkapp-cli
To view all of the commands and start building, run zk --help
.
SnarkyJS
- Built-in data types — Field, Bool, UInt32, UInt64, PublicKey, PrivateKey, Signature, Group, Scalar, and CircuitString
- Custom data types — a.k.a. Struct
- Composability
- Recursion — a.k.a. ZkProgram
- Events — writing events and reading them from an archive node
- Actions & reducer
- Encryption & decryption — using Mina’s curves
- Merkle tree
- Custom tokens
- Using on-chain values — a.k.a. protocol & account preconditions
- Local blockchain
- And more...
Data Availability
- On-chain state — 8 x 32 bytes of arbitrary data per zkApp account
- Off-chain storage — for Merkle tree data; see Tutorial 6
Other
Next
SnarkyJS
- Remove need for a dev to use a service worker for their UI — ETA H1 2023
- Reduce KB file size, for aspects needed for UIs — ETA H1 2023
- Improve error messages — ETA H1 2023
Data Availability
- Off-chain storage for Merkle tree data with better guarantees — WIP; two teams awarded grants by Mina Foundation
Other
- Archive Node API — Phase I; ETA Q1 2023
Later
Mina zkApp CLI
SnarkyJS
- Dynamic array access — awaiting support in proof system for extended lookup tables
- Dynamic-length strings — awaiting dynamic array access
- JSON parsing — awaiting dynamic-length strings
- secp256k1 — awaiting support in Kimchi
- keccak256 — awaiting support in Kimchi
- ECDSA — awaiting support in Kimchi
- sha256 — awaiting support in Kimchi
Other
- Archive Node API — Phase II; for serverless hosts!
- zkOracles — with robust privacy guarantees