Tóm tắt nhanh
ZK-EVM là ZK Rollup có thể chạy EVM smart contract và tạo ZK Proof cho execution. Vitalik Buterin phân loại thành 4 type dựa trên mức độ tương thích EVM — từ Type 1 (100% Ethereum-equivalent, chậm nhất) đến Type 4 (ngôn ngữ level, nhanh nhất nhưng ít compatible hơn).
Type 1 tương thích hoàn toàn với Ethereum nhưng proving chậm. Type 4 proving nhanh nhất nhưng cần recompile Solidity — đây là trade-off cơ bản của ZK-EVM.
1ZK-EVM Là Gì? — Thách Thức Kỹ Thuật
ZK-EVM là hệ thống có thể: (1) thực thi EVM smart contract, và (2) tạo ZK Proof chứng minh execution đó đúng. Nghe đơn giản nhưng thực ra cực kỳ khó vì EVM không được thiết kế để "provable".
EVM dùng 256-bit word size, các opcode như KECCAK256 (SHA-3) rất tốn kém để express trong ZK circuit. Việc prove một block EVM với hàng nghìn opcode đòi hỏi ZK circuit cực kỳ phức tạp. Đây là lý do tại sao ZK-EVM Type 1 (prove chính xác EVM) cực kỳ chậm và đắt.
2Type 1 — Fully Ethereum-Equivalent
Type 1 ZK-EVM prove chính xác Ethereum L1 block — kể cả hash function (Keccak), storage layout, và mọi behavior chi tiết. Một Ethereum node có thể verify proof mà không cần thay đổi gì.
- EVM compatibility: 100% — mọi contract Ethereum deploy ngay được
- Proving cost: Rất cao — proving một block mất hàng giờ trên hardware hiện tại
- Dự án: Taiko (đang build Type 1 based rollup)
- Use case: ZK-prove Ethereum L1 block — có thể dùng cho Ethereum light client, không chỉ L2
3Type 2 — EVM-Equivalent (không phải Ethereum)
Type 2 tương thích với EVM bytecode — mọi smart contract EVM deploy và chạy được. Nhưng có thể thay đổi một số hash function hoặc storage layout để dễ prove hơn (không còn prove chính xác Ethereum L1).
- EVM compatibility: ~99% — hầu hết contract chạy được, một số edge case không
- Proving cost: Cao — nhưng thấp hơn Type 1 đáng kể
- Dự án: Polygon zkEVM, Scroll, Linea (ConsenSys)
- Developer experience: Gần như dùng Ethereum — tooling standard hoạt động
4Type 3 — Near EVM-Equivalent
Type 3 bỏ một số feature EVM khó prove (ví dụ: precompile không phổ biến, memory padding behavior), nhưng phần lớn smart contract DeFi vẫn chạy được.
- EVM compatibility: ~90-95% — đủ cho phần lớn DeFi protocol
- Proving cost: Trung bình
- Thực tế: Nhiều dự án bắt đầu ở Type 3 rồi dần upgrade lên Type 2. Polygon zkEVM ra mắt ở Type 3.
- Trade-off: Vài contract cần minor adjustment — không phải drop-in replacement hoàn toàn
5Type 4 — High-Level Language Equivalent
Type 4 không prove EVM bytecode. Thay vào đó, Solidity/Vyper source code được compile sang bytecode riêng được thiết kế để provable dễ hơn. EVM bytecode không chạy trực tiếp.
- EVM compatibility: Hầu hết Solidity contract với minor adjustment — không phải EVM bytecode compatible
- Proving cost: Thấp nhất — proving nhanh và rẻ hơn Type 1/2 nhiều lần
- Dự án: zkSync Era (Matter Labs) — dùng zksolc compiler
- Trade-off: Developer cần dùng zksolc thay vì solc, một số opcode không support, behavior đôi khi khác nhỏ
6So Sánh 4 Loại ZK-EVM
| Type | EVM Compatibility | Proving Cost | Proving Speed | Dự án |
|---|---|---|---|---|
| Type 1 | 100% Ethereum-equivalent | Rất cao | Rất chậm (giờ) | Taiko |
| Type 2 | ~99% EVM bytecode compatible | Cao | Chậm (phút-giờ) | Scroll, Polygon zkEVM, Linea |
| Type 3 | ~90-95% (vài exception) | Trung bình | Trung bình | Polygon zkEVM (giai đoạn đầu) |
| Type 4 | Solidity level (cần recompile) | Thấp | Nhanh | zkSync Era |
Không có loại "tốt nhất" tuyệt đối — đây là trade-off giữa compatibility để migrate existing code và performance cho new application. Type 2 đang là sweet spot được nhiều dự án chọn: EVM compatible gần hoàn toàn mà proving cost không quá cao.
Phân tích đầy đủ về ZK Rollup và ZK-EVM tại ZK Rollup Là Gì? và bài chính về L2 Scaling & Interoperability.
7zkVM Không Phải EVM — RISC Zero, SP1, Jolt
Ngoài ZK-EVM (chứng minh EVM execution), một hướng khác đang phát triển mạnh: zkVM tổng quát — chứng minh execution của bất kỳ program nào viết bằng Rust, C++, hoặc bất kỳ ngôn ngữ compile được sang RISC-V.
| zkVM | ISA | Ngôn ngữ hỗ trợ | Điểm mạnh |
|---|---|---|---|
| RISC Zero | RISC-V | Rust, C, C++ | General-purpose, mature toolchain |
| SP1 (Succinct) | RISC-V | Rust natively | Developer experience tốt nhất, fast proving |
| Jolt (a16z) | RISC-V | Rust, LLVM | Lookup argument approach, proof generation nhanh |
| Valida | Custom ISA | Valida IR | Designed for ZK-friendly execution |
zkVM vs ZK-EVM — Khi nào dùng cái gì?
Dùng ZK-EVM khi cần tương thích với Solidity ecosystem hiện tại — smart contract không cần viết lại, tooling Ethereum (MetaMask, Ethers.js) hoạt động ngay. Type 2/Type 3 ZK-EVM (zkSync Era, Polygon zkEVM) là lựa chọn thực tế nhất cho dự án cần deploy nhanh.
Dùng zkVM tổng quát khi cần prove arbitrary computation — coprocessor cho L1, proof của off-chain logic phức tạp (AI inference, orderbook matching), hay build L2 không cần EVM compatibility. SP1 và RISC Zero đang được dùng nhiều cho light client proof (bridge) và zkCoprocessor.
8Trade-Off Thực Tế — Chọn ZK-EVM Nào?
Năm 2025, câu hỏi thực tế không phải "ZK-EVM là gì" mà là "deploy trên L2 nào":
- Muốn tương thích tuyệt đối với Ethereum: Chờ Ethereum L1 native ZK-EVM (Verge), hoặc dùng Scroll (Type 2, proving overhead cao hơn nhưng compatibility tốt nhất).
- Muốn performance tốt nhất: zkSync Era (Type 4) — phí thấp, finality nhanh, nhưng đôi khi có edge case incompatibility.
- Muốn EVM-equivalent với production maturity: Polygon zkEVM (Type 2) hoặc Linea — battle-tested nhiều hơn.
- Muốn tự build L2: zkSync Era's ZK Stack (Boojum prover) hoặc Polygon CDK cho ZK-EVM framework.