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