Skip to main content
info

zkApp programmability is not yet available on the Mina Mainnet. You can get started now by deploying zkApps to the Berkeley Testnet.

zkApps Overview


Terminal screenshot of Mina’s zkApp CLI command-line interface.

What are zkApps?

zkApps (zero knowledge apps) are Mina Protocol 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.

Mina zkApp zero knowledge app architecture diagram

Learn more on How zkApps Work.

TypeScript

zkApps are written in TypeScript.

TypeScript provides an easy, familiar language (JavaScript), but with type safety, making it easy to get started writing zkApps. If you're new to using TypeScript, check out this helpful 12-min introductory video TypeScript - The Basics.

To learn more, see How to Write a zkApp.

Quickstart

To get started, deploy a zkApp in 5 steps:

  1. npm install -g zkapp-cli to install the zkApp CLI and make the zk command available on your system

  2. zk project <name>

  3. cd <name>

  4. zk config

    Follow the command prompts to your configure your project's config.json file.

  • name: berkeley (name can be anything)

  • Mina GraphQL API URL: https://proxy.berkeley.minaexplorer.com/graphql

  • transaction fee: 0.1

    Follow the prompts to request Testnet MINA (tMINA) to fund your fee payer account. Click the URL in your terminal to request tMINA on your address. Wait ~3 minutes for the next block so you have enough tMINA to send your deploy transaction.

  1. zk deploy berkeley

    The project you just created contains an example smart contract named 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:

Example zkApp zero knowledge applications.
zkApps are a great fit for applications that require proof that you have a secret without revealing it to anyone.

Learn more

To learn more about developing zkApps, see how zkApps work, how to write a zkApp and zkApps for Ethereum Developers.

Try the zkApps tutorials to learn by doing!

Get help and join the community

Join the #zkapps-developers channel on Mina Protocol Discord. Participate and ask questions in zkApps Developers Office Hours.