zkEVM, or Zero-knowledge Ethereum Virtual Machine. A virtual machine that generates zero-knowledge evidence to verify programs. What it is, how it works and its connection to Layer 2 Ethereum is the topic of our lesson today. Here we go!
Definition of zkEVM
ZkEVM is part of Zero-knowledge rollups – solutions that scale to layer 2 of Ethereum. They improve throughput by moving calculations and storing them off the main chain. Zk-rollups send transaction data to Ethereum along with zero-knowledge evidence, while verifying the validity of transactions in off-chain mode. Importantly, zkEVM has the ability to build intelligent contracts in a way that supports zero-knowledge technology. Earlier zk-rollup did not have this capability. They were limited and mainly used for token exchange and payments. However, with technological developments and the introduction of virtual machines compatible with zkEVM, zk-rollup began to support Ethereum dApps.
ZkEVM is compatible with EVM. To understand exactly how they work, we need to explain what EVM is. EVM, or Ethereum Virtual Machine – the runtime environment in which intelligent contracts are created, deployed on the Ethereum network.
You can imagine that EVM`s are the kind of world computer that powers dApps that run on the Ethereum blockchain. All EVM-compatible technologies are those that can run programs created to run in an EVM environment. zkEVMs are one such technology because they can run intelligent contracts in an Ethereum environment without modifying the underlying logic.
How do EVM and zkEVM work?
To understand how the zkEVM works, we must first look at the operation of the EVM itself. Ethereum Virtual Machine – a state machine that transitions from an “old state” to a new state based on input data. By executing an intelligent contract in this ecosystem, we trigger a change in the EVM. In industry terms, we call this a “state transition.” So, what happens during a transaction executed with an intelligent contract in EVM? Let’s take a look.
- The byte code of a given intelligent contract goes to EVM and is executed by a peer-to-peer node. The nodes use identical input data for the transaction. So, we have a guarantee that each node will achieve the same result and reach consensus.
- EVM Opcodes (a.k.a. bytecodes) can interact with the memory, storage, and stack of the EVM ecosystem. They perform read and write operations.
- EVM opcodes perform accurate calculations, based on the input data obtained from the state store. As a result, the EVM transitions to a new state (the so-called state transition we wrote about earlier).
Given the above information, it will be easier for you to understand zkEVM. They, too, are a virtual machine (just like an EVM) that transitions between states, referring to the operations that the program performs. The difference, however, is that zkEVM goes further – it produces a proof, which is for us a certification of the correctness of the calculations made. It proves that the operations performed earlier followed the input data and the rules adopted in the protocol. To summarize:
- zkEVM generates a zero-knowledge proof for us to verify the elements at different stages of calculation.
- It has access to the bytecode and answers us whether the corresponding program code was loaded correctly and from which address it came.
- The zkEVM tells you whether the program has patched the correct values from the appropriate state before making any calculations.
- And finally – whether the opcodes were executed one by one, without skipping any stage.
How is zkEVM structured?
In the zkEVM environment, we distinguish as many as three parts:
- The execution part, where intelligent contracts, are run in the zkEVM environment. At this stage, zkEVM retrieves the initial states and current transactions to enter the current state at the final stage.
- Proving circuit. It is here that the production of zero-knowledge proofs takes place, which verify the validity of the transactions calculated in the execution part.
- Verification. That is, our last part, in which zk-rollups submit proofs of validity to intelligent contracts, implemented on L1 Ethereum for verification. The verifier then runs the calculations one more time and confirms that they are correct.
Interesting fact: Operating codes zkEVM are low-level machine instructions that we use to execute programs in zk-rollup. They are indispensable because EVM operating codes are ineffective for zero-knowledge proofs.
zkEVM as an important part of the EVM ecosystem
A fully functional zkEVM will encourage the development of projects, built on zk-rollup, which will be compatible with EVM. And it already carries with it a stack of other benefits. These will include:
- It will increase throughput and scalability.
- It will reduce costs.
- Furthermore, it will speed up finalization on the blockchain and increase its efficiency.
- It will help increase the use of network effects provided by Ethereum.
Types of zkEVM
It is worth knowing that currently zkEVM projects fall into two categories.
- zkVM that supports native EVM operating codes.
- zkVM, which uses custom EVM operating codes to operate.
Below we will explain what the different zkEVM protocols are and how they work.
Polygon zkEVM
Polygon Hermez, or Polygon zk-rollup, with built-in zero-knowledge virtual machine. It is supposed to support EVM compatibility. To achieve this, the EVM byte code must be compatible with microcode and be executed in uVM (also a virtual machine, using SNARK and STARK proofs). The Polygon Hermez zkEVM uses STARK proofs to generate validity proofs for state transitions. STARK verifies the validity of the STARK proofs and forwards them to Ethereum for re-verification.
zkSync EVM
It is nothing but a compatible EVM zk-rollup. It was developed by Matter Labs and is powered by its own zkEVM. Furthermore, it achieves compatibility with Ethereum at the level of the programming language used, not bytecode.
Scroll zkEVM
It is still under development. According to the developers, Scroll zkEVM will use the so-called cryptographic accumulator to fully verify the correctness of storage. As a result, it will prove that the byte code of the contract has been correctly loaded from the previously specified address.
AppliedZKp zkEVM
AppliedZKP is to develop a zk-rollup compatible with EVM, as well as a mechanism to generate validity proofs for Ethereum blocks. The Ethereum Foundation funds the entire project.
Summary
Most zkEVMs are still at the stage of research, production, and search for optimal solutions. However, the growing demand for zero-knowledge proofs is sure to accelerate the whole process.