The Ethereum Foundation classifies zkEVMs into five main types based on how closely they replicate Ethereum’s existing infrastructure and execution semantics.
Type 1 – Fully Ethereum-equivalent:
This is the most faithful form of zkEVM, proving the entire Ethereum execution stack — including the EVM, state transitions, and gas accounting — exactly as it is today. It offers perfect compatibility, meaning any Ethereum client or smart contract runs unmodified. However, this accuracy comes at a high cost: Type 1 zkEVMs are extremely complex and slow to prove, making them difficult to optimize. Examples include Scroll and Taiko, both aiming for full Ethereum equivalence.
Type 2 – EVM-equivalent:
Type 2 zkEVMs execute Ethereum’s EVM bytecode exactly the same way, but simplify or omit certain parts of the environment, such as the full state tree or gas metering details. This preserves full Solidity compatibility while making proving somewhat easier. The trade-off is minor differences in gas costs and precompiles. Projects like Polygon zkEVM and the current stage of Scroll fall into this category.
Type 2.5 – EVM-equivalent but optimized:
Type 2.5 zkEVMs make selective optimizations to improve proving speed. They stay mostly EVM-equivalent but tweak or remove rare opcodes and heavy operations that slow down proof generation. This results in much faster proofs and simpler circuits, with the small downside that some edge cases may behave differently from the EVM spec. Notable examples are zkSync Era and Linea.
Type 3 – High-level-language equivalent:
Rather than reproducing EVM bytecode, Type 3 zkEVMs recompile smart contracts written in high-level languages like Solidity or Vyper into a custom VM that is functionally equivalent to the EVM. This approach is easier to optimize and results in significantly faster proving times, but it is not bytecode-compatible with Ethereum. Contracts need to be recompiled for this environment. StarkNet and early versions of zkSync are examples of Type 3 zkEVMs.
Type 4 – ZK-VM (custom VM):
Finally, Type 4 systems are not tied to Ethereum or the EVM at all. They are general-purpose zk virtual machines capable of running arbitrary code written in languages like Rust, C++, or WASM. These zkVMs are extremely flexible and powerful but require special compiler layers to support Ethereum compatibility. Examples include Risc0, SP1, Miden, and Powdr.