Background#
When EVM was designed, it did not consider supporting zero-knowledge proofs, making it difficult to build a zero-knowledge virtual machine compatible with EVM. This is also the reason why early "ZK-rollup" lacked the ability to execute smart contracts. However, with advancements in research, it is now possible to encapsulate EVM computations within zero-knowledge proofs.
What is ZK-EVM#
"Zero-Knowledge Ethereum Virtual Machine (ZK-EVM)" is a virtual machine that generates zero-knowledge proofs to verify program correctness. ZK-EVM is designed to execute smart contracts in a way that supports zero-knowledge technology.
Different ZK-EVM projects use different methods to combine EVM execution with zero-knowledge proof computation. Based on EVM equivalence, Vitalik Buterin categorizes ZK-EVM into 5 different types:
- Perfectly compatible with Ethereum (Type 1)
- Made minor changes to the Ethereum base layer without involving the application layer (Type 2)
- Modified GAS for certain operations in EVM (Type 2.5)
- Made minor changes involving the application layer in the Ethereum base layer (Type 3)
- High-level language equivalence, compiling applications written in high-level languages such as Solidity and Vyper into ZK-friendly languages (Type 4)
What is ZK-SNARK#
"ZK-SNARK" stands for Zero Knowledge Succinct Non-interactive Argument of Knowledge, which is a protocol for implementing zero-knowledge proofs. It allows one party (prover) to prove to another party (verifier) that they possess certain information, such as a key or a solution to a mathematical problem, without revealing the actual information itself.
"Zero-Knowledge Proof (ZK-SNARK)" and "Zero-Knowledge Ethereum Virtual Machine (ZK-EVM)" provide a complete solution for zk-rollup.