The zkEVM wars have become one of the most heated debates in the L2 space. But after spending the past year researching ZK proving systems, I have come to a controversial conclusion: the obsession with “Type 1” Ethereum equivalence might be solving the wrong problem.
Vitalik’s Type Classification Explained
For those unfamiliar, Vitalik categorized zkEVMs into types based on their compatibility/performance tradeoff:
Type 1 (Fully Ethereum-Equivalent)
- Preserves EVERYTHING: storage structure, hash functions, all opcodes
- Can verify Ethereum blocks natively
- Slowest proof generation (hours to days historically)
- Examples: Taiko, Polygon Type 1 Prover
Type 2 (Fully EVM-Equivalent)
- Same bytecode compatibility, different internal representations
- Faster proofs by changing data structures
- Most apps work without modification
- Examples: Scroll, Polygon zkEVM (current)
Type 3 (Almost EVM-Equivalent)
- Removes ZK-unfriendly precompiles
- Some apps need rewrites
- Significantly faster proofs
Type 4 (High-Level Language Equivalent)
- Compiles Solidity/Vyper to ZK-friendly bytecode
- Not bytecode compatible, but source compatible
- Fastest proofs by far
- Examples: zkSync Era, StarkNet
The narrative has been: “Type 1 is the goal, everything else is a compromise.” But is that actually true?
The Real-World Compatibility Question
Here is what I have observed from actual deployment data:
-
99% of contracts work on Type 3/4 zkEVMs without modification - Most apps do not use exotic opcodes or rely on EVM edge cases
-
The contracts that break are usually doing something they should not - Gas-based conditionals, inline assembly tricks, bytecode introspection
-
Developer tooling compatibility matters more than opcode compatibility - Can I use Hardhat? Foundry? My existing CI/CD? That is what developers ask first.
Why Most Developers Do Not Need Type 1
Let me be blunt: Unless you are building infrastructure that needs to verify Ethereum blocks, you probably do not need Type 1 equivalence.
What actually matters for DeFi apps:
- Solidity/Vyper source compatibility (Type 4 has this)
- Standard library support (OpenZeppelin works everywhere)
- Toolchain compatibility (all major zkEVMs support Hardhat/Foundry)
- Oracle integrations (Chainlink is on all of them)
What rarely matters:
- Byte-for-byte storage compatibility
- Identical gas costs for every opcode
- Precompile availability (most apps use 3-4 precompiles max)
The Performance Numbers Tell a Story
Recent benchmarks from production zkEVMs:
| zkEVM | Type | Proving Time | Cost/TX | TPS |
|---|---|---|---|---|
| zkSync Era | 4 | ~1 min | $0.001 | 100k+ (claimed) |
| Polygon zkEVM | 2/3 | ~5 min | $0.01 | 2,000 |
| Scroll | 2 | ~10 min | $0.02 | 1,000 |
| Taiko | 1 | ~30 min | $0.05 | 500 |
(Note: Polygon’s new Type 1 prover claims $0.002-0.003/tx, but limited deployment)
The Type 4 advantage is massive. zkSync Era generates proofs 30x faster than Type 1 systems. In a world where users expect sub-minute finality, that matters.
The Contrarian Take: Type 4 Might Win
Here is my prediction: In 3 years, the market will converge on Type 3/4 systems for application chains, while Type 1/2 systems survive only for:
- L1 equivalence layers (proving Ethereum itself)
- Bridges requiring native verification
- Regulatory compliance requiring Ethereum-identical execution
Why? Because:
- Proof costs dominate L2 economics - Faster proofs = cheaper transactions = more users
- Most apps are Solidity, not bytecode - Source compatibility is sufficient
- Type 4 is evolving - zkSync is adding more EVM compatibility over time, converging toward Type 3
The Counterargument I Take Seriously
The strongest argument for Type 1/2 is audit reusability. If your contract has been audited on Ethereum, it should behave identically on a Type 1 zkEVM. On Type 4, you technically need a re-audit because compilation is different.
This is legitimate. But in practice:
- Auditors audit source code, not bytecode
- Major protocols do fresh audits for each chain anyway
- The cost savings from cheaper proofs often exceed re-audit costs
Questions for Discussion
- Have you deployed the same contract on both Type 2 and Type 4 zkEVMs? What broke (if anything)?
- For infrastructure builders: Does Type 1 equivalence unlock use cases that Type 4 cannot serve?
- What is the minimum equivalence level your app needs?
I am genuinely curious if the market agrees with my contrarian take or if I am missing something fundamental.
zk_proof_zoe