Please note that zkApp programmability is not yet available on Mina Mainnet, but zkApps can now be deployed to Berkeley Testnet.
What are zkApps?
zkApps ("zero-knowledge apps") are Mina Protocol’s smart contracts powered by zero-knowledge proofs, specifically using zk-SNARKs.
zkApps use an off-chain execution and mostly off-chain state model. This allows for private computation and state that can be either private or public.
zkApps can perform arbitrarily-complex computations off chain while incurring only a flat fee to send the resulting zero-knowledge proof to the chain for verification of this computation, as opposed to other blockchains that run computations on chain and use a variable gas-fee based model.
You can learn more on the How zkApps Work page.
zkApps are written in TypeScript.
See How to Write a zkApp page to learn more.
Deploy a zkApp in 5-steps, to see how easy it is to get started:
npm install -g zkapp-cli(This will make the
zkcommand available on your system.)
zk project <name>
Enter the details below when prompted:
berkeley(can be anything)
When finished, hold command (Mac) or control (Windows & Linux) and click the URL shown in your terminal to request Testnet MINA on your address from https://faucet.minaprotocol.com/?address=yourAddress. Then wait ~3min for the next block so you'll have Testnet MINA to send your deploy transaction.
zk deploy berkeley
The project you just created contains an example smart
Add.ts that stores a number as on-chain state and adds
2 to it
whenever a transaction is received by the zkApp account.
You just deployed a zkApp!
Next, go further with Tutorial 1: Hello World.
Examples of zkApps
Play around with a few example zkApps to see what’s possible:
Try the zkApps tutorials to learn by doing!