A zkEVM is a virtual machine that runs on the Ethereum network and helps verify the correctness of smart contracts (programs stored on a blockchain) using zero-knowledge proofs.
A Zero-Knowledge proof (ZKP) is a way of showing that a data is true without revealing any extra information.
Why is it important?
Currently, every transaction on the Ethereum network must be verified by every node ( a computer running a software, connected to other computers, forming the Eth network) in the network, which can be burdensome.
A zk-rollup will help to create a proof-of-validity (proof that transactions are true) for each Ethereum block (set of transactions) reducing the node workload and making the network more efficient and scalable.
When zkRollups support smart contracts we call it a zkEVM.
Zk rollups use validity proofs (eg zksnark, zkStark ) to check transactions and know their legitimacy before sending them to the ETH chain.
Simply put a zkEVM is a zk-Rollup with the goal of bringing Ethereum experience to an L2.
Hence, devs can easily port their code without any major changes.
The truest form of a zkEVM is to be fully Ethereum equivalent.
@VitalikButerin grouped the zkEVM into 4 types:
Type 1 - fully equivalent to ETH (truest form)
- Type 2 - fully EVM equivalence
- @Scroll_ZKP @0xPolygonZK
Type 2.5 - almost EVM equivalence except for gas costs
Type3 - almost EVM equivalence
- Type 4 - high-level-language equivalence
- @zksync - devs will write codes in solidity whilst zksync will transpile (convert high-level language code to low-level language code) the code to Yul, which then gets interpreted to perform zk wonders.
zkEVMs can be equivalent or compatible.
EVM compatibility allows for blockchain compatibility with Ethereum, but the developer and user experiences may differ and require the rewriting of smart contracts and potentially the use of specialized wallets, while EVM equivalence ensures full compatibility with Ethereum.