info

Please note that zkApp programmability is not yet available on Mina Mainnet, but zkApps can now be deployed to Berkeley Testnet.

# Overview

### 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.

### 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.

### Quickstart​

Deploy a zkApp in 5-steps, to see how easy it is to get started:

1. npm install -g zkapp-cli (This will make the zk command available on your system.)

2. zk project <name>

3. cd <name>

4. zk config

Enter the details below when prompted:

• Name: berkeley (can be anything)
• URL: https://proxy.berkeley.minaexplorer.com/graphql
• Fee: 0.1

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.

5. 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: