TL;DR – Tóm tắt
Zero-Knowledge Proof (ZKP) là kỹ thuật mật mã cho phép một bên (prover) chứng minh với bên kia (verifier) rằng một tuyên bố là đúng — mà không tiết lộ bất kỳ thông tin nào về tuyên bố đó. ZK-SNARK và ZK-STARK là hai implement phổ biến nhất trong blockchain. Ứng dụng chính: validity proof trong ZK Rollup, privacy transaction, identity verification.
IZero-Knowledge Proof là gì
Zero-Knowledge Proof (bằng chứng không tiết lộ) là khái niệm toán học được Goldwasser, Micali và Rackoff đề xuất năm 1985. Ý tưởng cốt lõi: có thể chứng minh sự thật của một tuyên bố mà không cần tiết lộ thông tin tạo ra tuyên bố đó.
Ví dụ trực quan: Bản đồ màu sắc
Alice tuyên bố có cách tô màu bản đồ sao cho không có hai vùng kề nhau cùng màu (3-coloring). Bob muốn kiểm tra mà không để Alice tiết lộ cách tô. Quy trình: Alice tô màu, che lại; Bob chỉ vào hai vùng kề nhau bất kỳ; Alice lật mở chỉ hai vùng đó — nếu khác màu, Bob tin một phần; lặp lại nhiều lần, xác suất gian lận tiệm cận 0.
Đây là interactive ZKP. Phiên bản non-interactive (không cần giao tiếp qua lại nhiều vòng) là nền tảng của ZK-SNARK và ZK-STARK.
IIBa Tính Chất Cơ Bản
- Completeness (Đầy đủ): Nếu tuyên bố đúng, prover trung thực luôn thuyết phục được verifier trung thực
- Soundness (Độ vững): Nếu tuyên bố sai, không có prover gian lận nào có thể thuyết phục verifier (trừ với xác suất negligible)
- Zero-knowledge: Verifier không học được bất kỳ thông tin nào ngoài việc tuyên bố là đúng
Trong ứng dụng blockchain, ZKP được dùng dưới dạng non-interactive: prover tạo một proof object, verifier (hoặc smart contract trên L1) kiểm tra proof mà không cần tương tác thêm.
IIIZK-SNARK
Succinct Non-interactive ARgument of Knowledge — Argument of Knowledge ngắn gọn, không tương tác.
- Succinct: Proof size rất nhỏ (~200 bytes), verify nhanh bất kể computation phức tạp
- Non-interactive: Không cần nhiều vòng tương tác giữa prover và verifier
- Argument of Knowledge: Prover phải thực sự biết witness (bằng chứng) để tạo proof hợp lệ
Trusted Setup — Điểm yếu của SNARK
Hầu hết ZK-SNARK yêu cầu "trusted setup ceremony" — một quá trình tạo ra các tham số công khai (CRS - Common Reference String). Nếu các tham số này bị compromise (ai đó giữ lại "toxic waste" từ ceremony), họ có thể tạo proof giả.
Giải pháp: multi-party computation ceremony (nhiều bên tham gia; chỉ cần 1 người trung thực là đủ). Ethereum sử dụng Hermez và Perpetual Powers of Tau ceremony. Tuy nhiên, trusted setup vẫn là điểm rủi ro lý thuyết không thể loại bỏ hoàn toàn.
Các biến thể SNARK phổ biến
| Hệ | Trusted Setup | Proof size | Verify time | Dùng bởi |
|---|---|---|---|---|
| Groth16 | Per-circuit | ~200 bytes | Rất nhanh | Zcash, nhiều rollup |
| PLONK | Universal | ~400 bytes | Nhanh | zkSync, Aztec |
| KZG (used by PLONK) | Universal | Nhỏ | Nhanh | Ethereum blobs |
| Halo2 | Không cần | Trung bình | Trung bình | Zcash Orchard, Scroll |
IVZK-STARK
Scalable Transparent ARgument of Knowledge — Transparent (không cần trusted setup), Scalable (prover time scale tốt hơn với input lớn).
STARK được phát triển bởi StarkWare (Eli Ben-Sasson et al.) và là nền tảng của Starknet và StarkEx. STARK dùng hash functions (như Poseidon, Keccak) thay vì elliptic curve pairing — điều này mang lại hai lợi thế lớn:
- Không cần trusted setup: Không có toxic waste, không có ceremony risk
- Post-quantum resistance: Hash functions được cho là an toàn trước quantum computer; elliptic curve (dùng trong SNARK) thì không
Đánh đổi của STARK
- Proof size lớn hơn nhiều (~50KB–1MB) so với SNARK
- Verify cost on-chain cao hơn (nhiều gas hơn)
- Prover time cũng chậm hơn SNARK với circuit nhỏ, nhưng scale tốt hơn với circuit lớn
VSo Sánh ZK-SNARK vs ZK-STARK
| Tiêu chí | ZK-SNARK | ZK-STARK |
|---|---|---|
| Trusted setup | Cần (trừ một số biến thể) | Không cần |
| Proof size | Nhỏ (~200–500 bytes) | Lớn (~50KB+) |
| Verify cost (gas) | Thấp (~300K gas) | Cao hơn (~3–5M gas) |
| Prover speed | Nhanh hơn (circuit nhỏ) | Chậm hơn, scale tốt hơn |
| Quantum-resistant | Không | Có |
| Toán học nền | Elliptic curve pairing | Hash functions |
| Audit/tooling | Nhiều hơn (lâu đời hơn) | Ít hơn (mới hơn) |
| Dùng bởi | zkSync, Scroll, Polygon zkEVM | Starknet, StarkEx |
VIỨng Dụng trong Blockchain
1. ZK Rollup — Validity Proof
Ứng dụng lớn nhất hiện nay. Prover tạo validity proof cho mỗi batch giao dịch trên L2. Smart contract trên L1 verify proof — nếu hợp lệ, state root mới được chấp nhận mà không cần execute lại từng giao dịch.
2. Privacy Transaction
Zcash dùng ZK-SNARK (Groth16) để ẩn sender, receiver và amount trong shielded transaction. Aztec Protocol đang xây dựng privacy DeFi trên Ethereum dùng PLONK. Người dùng chứng minh có đủ balance để chuyển mà không tiết lộ số dư thực.
3. Identity và Credential
ZKP cho phép chứng minh "tôi trên 18 tuổi" mà không tiết lộ ngày sinh; "tôi là công dân của quốc gia X" mà không tiết lộ hộ chiếu. Polygon ID, WorldCoin Semaphore, và các dự án zkKYC đang xây dựng hướng này.
4. Blockchain Bridge
ZK bridge (ZK light client) dùng validity proof để xác minh state của một chain khi bridge sang chain khác — bảo mật hơn multisig bridge truyền thống. Succinct Labs và Polyhedra đang xây dựng ZK bridge.
VIIZK-EVM — Thách Thức Kỹ Thuật
EVM không được thiết kế để "proving-friendly". Nhiều opcode của EVM (đặc biệt là precompiles như keccak256, modular exponentiation) rất tốn kém khi express trong ZK circuit.
Hai hướng tiếp cận chính:
- Prove EVM bytecode trực tiếp: tương thích cao nhưng proof rất nặng (Type 1–2 ZK-EVM)
- Compile Solidity sang circuit riêng: proof nhẹ hơn nhưng không tương thích bytecode EVM (Type 4 như Starknet Cairo, zkSync)
VIIIGiới Hạn Hiện Tại
- Prover cost: Generate ZK proof tốn nhiều CPU/GPU — hiện vẫn cần hardware chuyên dụng, dẫn đến prover centralization
- Proving time: Dù đã cải thiện, vẫn mất vài phút đến vài giờ cho batch lớn
- Audit complexity: ZK circuit rất khó audit — lỗi trong circuit có thể cho phép tạo proof giả mà không ai phát hiện
- Trusted setup risk: Vẫn là vấn đề với SNARK-based system
- Quantum threat (dài hạn): SNARK dùng elliptic curve — nếu quantum computing đủ mạnh (không trong tương lai gần), cần migrate sang STARK hoặc post-quantum scheme
IXKết luận
ZK Proof là một trong những đổi mới mật mã quan trọng nhất trong blockchain. Từ concept lý thuyết năm 1985, nó đã trở thành nền tảng kỹ thuật của ZK Rollup — hiện đang xử lý hàng tỷ đô la TVL trên Ethereum L2.
- ZK-SNARK: proof nhỏ, verify nhanh, cần trusted setup, không quantum-resistant
- ZK-STARK: không trusted setup, quantum-resistant, proof lớn hơn, verify tốn gas hơn
- Ứng dụng: rollup validity proof, privacy, identity, bridge
- Giới hạn hiện tại: prover cost, EVM compatibility, circuit audit complexity
XZK-EVM — Phân Loại Type 0 Đến Type 4
Vitalik Buterin đề xuất phân loại ZK-EVM theo mức độ compatibility với Ethereum EVM — từ hoàn toàn tương thích đến chỉ tương thích về ngôn ngữ:
| Type | Mô tả | Proving time | Ví dụ |
|---|---|---|---|
| Type 1 | Ethereum-equivalent: prove Ethereum block nguyên bản. Mọi EVM contract chạy không sửa đổi. | Rất chậm (hours) | PSE zkEVM, Taiko |
| Type 2 | EVM-equivalent: tương thích hoàn toàn ở bytecode level, có thể thay đổi một số chi tiết nội bộ. | Chậm (phút–giờ) | Scroll, Polygon zkEVM |
| Type 2.5 | Như Type 2 nhưng gas cost khác Ethereum (một số precompile đắt hơn) | Trung bình | zkSync Era |
| Type 3 | Almost EVM-equivalent: hầu hết contract chạy được, một số precompile không hỗ trợ | Nhanh hơn | Nhiều ZK-EVM giai đoạn early |
| Type 4 | High-level language equivalent: compile Solidity/Vyper sang ZK-friendly bytecode. Không tương thích EVM bytecode. | Nhanh nhất | StarkNet (Cairo), zkSync (LLVM) |
Đánh đổi: Type 1–2 có developer experience tốt nhất (deploy Solidity trực tiếp) nhưng proving cost cao, throughput thấp. Type 4 có proving cost thấp nhất, throughput cao nhất nhưng developer phải học ngôn ngữ mới hoặc dùng transpiler.
XIZK Trong Ứng Dụng Thực Tế
ZK Proof không chỉ dùng trong rollup — đây là primitive cryptography có nhiều ứng dụng rộng hơn:
Identity và Privacy
- zkKYC: Prove rằng bạn đã pass KYC với cơ quan thẩm quyền mà không tiết lộ identity — chỉ prove "tôi là người đã được verify". Worldcoin (World ID) dùng ZK để prove humanity mà không tiết lộ iris data.
- Age verification: Prove bạn trên 18 tuổi mà không cần tiết lộ ngày sinh hay tên.
- Tornado Cash: ZK proof để break transaction link — prove ownership của UTXO mà không tiết lộ nguồn gốc. (Bị OFAC sanctioned 2022)
ZK trong Interoperability
- ZK Light Client Bridge: Prove finality của block trên chain nguồn bằng ZK proof — không cần trust committee (xem bài Blockchain Bridge)
- zkIBC: IBC (Inter-Blockchain Communication) với ZK proof thay vì light client truyền thống — giảm on-chain verification cost
ZK trong Game và NFT
Dark Forest (game on-chain) dùng ZK để hide vị trí player — prove "tôi ở trong vùng có thể tấn công" mà không tiết lộ tọa độ chính xác. Đây là "fog of war" on-chain đầu tiên — không thể thực hiện nếu không có ZK.
XIIGiới Hạn Kỹ Thuật Hiện Tại
ZK Proof vẫn có những giới hạn quan trọng cần thừa nhận:
| Giới hạn | Mô tả | Hướng giải quyết |
|---|---|---|
| Proving time | Generate ZK proof cho complex EVM execution mất 1–30 phút | GPU prover, recursive proof, parallel proving |
| Proving cost | Chi phí phần cứng để generate proof cao — $0.001–$0.01 per tx | Hardware acceleration (FPGA, ASIC), circuit optimization |
| Circuit complexity | Mọi computation phải "arithmetized" — một số operation rất đắt trong circuit (modular exponentiation) | Custom precompile, lookup table |
| Trusted setup (SNARK) | ZK-SNARK cần trusted setup ceremony — nếu ceremony bị compromise, toàn bộ system bị phá vỡ | Dùng ZK-STARK (không cần trusted setup), hoặc ceremony đủ lớn |
| Recursion overhead | Recursive proof (prove proof của proof) cần overhead compute | Folding schemes (Nova, HyperNova) |
Frontier 2024–2025 trong ZK: folding schemes (Nova/HyperNova) cho phép accumulate nhiều proof mà không cần verify từng cái — giảm proving cost theo bậc. Circle STARKs (Polygon) cải thiện efficiency của STARK. Hardware acceleration (Ingonyama, Cysic) đang build ASIC prover riêng — có thể giảm proving time xuống dưới 1 giây cho nhiều workload.
❓Câu Hỏi Thường Gặp
Về mặt lý thuyết, ZK Proof dựa trên các bài toán toán học khó (discrete logarithm, pairing). Xác suất tạo fake proof hợp lệ cực kỳ thấp (negligible). Rủi ro thực tế hơn là bug trong circuit implementation hoặc trusted setup bị compromise.
ZK-STARK dùng hash function (SHA-256 hoặc tương tự) thay vì elliptic curve — không bị ảnh hưởng bởi Shor's algorithm của quantum computer. ZK-SNARK dùng elliptic curve pairing — về lý thuyết dễ bị tấn công bởi quantum computer đủ mạnh.
Verification thường nhanh hơn proving hàng nghìn lần. Proving một batch 1000 transaction có thể mất vài phút, nhưng verify proof đó trên Ethereum chỉ tốn ~300.000 gas (~$5-10). Đây là lý do ZK phù hợp cho rollup: prove off-chain đắt, verify on-chain rẻ.
📚Tài liệu tham khảo
- Goldwasser, S., Micali, S. & Rackoff, C. (1985). The Knowledge Complexity of Interactive Proof Systems. STOC '85.
- Groth, J. (2016). On the Size of Pairing-based Non-interactive Arguments. EUROCRYPT 2016.
- Ben-Sasson, E. et al. (2018). Scalable, transparent, and post-quantum secure computational integrity. IACR ePrint 2018/046.
- Gabizon, A., Williamson, Z. & Ciobotaru, O. (2019). PLONK: Permutations over Lagrange-bases for Oecumenical Noninteractive arguments of Knowledge.
- Buterin, V. (2022). The different types of ZK-EVMs. vitalik.ca
- StarkWare (2021). Recursive STARKs. starkware.co