zkEVM is an implementation of the Ethereum Virtual Machine (EVM) that allows for the execution of Ethereum smart contracts in a zero-knowledge (private) manner. It was developed as part of the Zokrates project, which is a toolkit for building zero-knowledge proofs.

## What is it?

It is a modified version of the EVM that allows users to perform certain operations on the blockchain in a private and confidential manner, without revealing the input or output of those operations to the rest of the network.

Users can perform operations on the blockchain using zero-knowledge proofs, which are mathematical constructs that allow one party (the prover) to prove to another party (the verifier) that they know the value of a certain statement, without revealing the actual value of that statement. This allows users to prove the correctness of their computations without revealing the actual inputs or outputs of those computations to the network.

## How does zkEVM work?

For example, suppose a user wants to perform a computation on the blockchain that involves sensitive data, such as a medical record or a financial transaction. Using zkEVM, the user can create a zero-knowledge proof that demonstrates the correctness of their computation to the network, without revealing the actual data involved in the computation.

This allows the user to maintain the privacy of their data while still allowing the network to validate the correctness of the computation. To create a zero-knowledge proof in zkEVM, a user typically needs to perform the following steps:

### 1) Define the computation to be performed

The user must define the computation they want to perform on the blockchain, as well as the inputs and outputs of that computation.

### 2) Create a zkSNARK

The user must create a zkSNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge), which is a type of zero-knowledge proof that can be used to prove the correctness of a computation. This involves generating a proving key and a verification key, which are used to create and verify the zero-knowledge proof, respectively.

### 3) Generate a proof

Using the proving key, the user generates a proof that demonstrates the correctness of their computation to the network. This proof can be verified using the verification key.

### 4) Submit the proof to the network

The user submits the proof to the Ethereum blockchain, along with the inputs and outputs of their computation.

### 5) Verify the proof

The network verifies the proof using the verification key to ensure that the computation is correct. If the proof is valid, the computation is executed and the results are recorded on the blockchain.

Overall, zkEVM allows users to perform private and confidential computations on the Ethereum blockchain, while still allowing the network to verify the correctness of those computations. This has the potential to enable a wide range of new use cases on the Ethereum blockchain, such as private financial transactions, confidential medical records, and more.

## Types of zkEVMS

### 1) Zether

This is a zero-knowledge protocol that allows users to send transactions to each other privately, without revealing their identities or the amounts being transferred.

### 2) Zk-Starks

This is a zero-knowledge proof system that allows users to prove the correctness of computations without revealing the inputs or outputs of the computation.

### 3) Zk-Rollup

Zk-rollup is a layer-2 scalability solution that allows users to perform transactions off-chain, while still being secured by the main Ethereum blockchain.

### 4) Zk-Sync

This is a zero-knowledge proof system that allows users to perform fast, low-cost transactions on the Ethereum network without revealing the details of the transaction.

## The importance of zkEVM

A zk-EVM (Zero-Knowledge Ethereum Virtual Machine) is important because it allows users to conduct transactions on the Ethereum blockchain with privacy and anonymity. In a traditional blockchain, all transactions are publicly recorded and can be traced back to the sender and recipient. This can be problematic for users who want to keep their financial activity private, or for businesses that want to protect sensitive data.

By using a zk-EVM, users can prove that a transaction has taken place without revealing any information about the transaction itself, such as the identity of the sender or recipient, or the amount being transferred. This can help to protect the privacy and anonymity of users, and can also help to prevent fraud and identity theft.

—