Tóm tắt nhanh
KZG Commitment (Kate-Zaverucha-Goldberg) là một polynomial commitment scheme cho phép tạo commitment cố định 48 bytes cho bất kỳ lượng data nào, và chứng minh bất kỳ điểm nào trong data đó với proof chỉ 48 bytes. Đây là nền tảng kỹ thuật của EIP-4844 blob transaction — cho phép Ethereum verify data availability của rollup mà không cần download toàn bộ data. KZG cũng được dùng trong nhiều ZK proof system hiện đại.
01 Commitment Scheme là gì?
Trước khi đi vào KZG, cần hiểu commitment scheme là gì trong cryptography. Commitment scheme cho phép một bên (prover) "commit" với một giá trị — cam kết mình biết giá trị đó — mà không tiết lộ giá trị thực. Sau đó, prover có thể "reveal" giá trị đó và verifier có thể confirm nó khớp với commitment ban đầu.
Hai tính chất quan trọng:
- Binding: Không thể thay đổi giá trị sau khi đã commit (không thể gian lận)
- Hiding: Commitment không tiết lộ thông tin về giá trị (bảo mật)
Ví dụ đơn giản: Hash function H(x) là một commitment scheme đơn giản. Bạn publish H(secret), sau đó có thể reveal secret để người khác verify H(secret) đúng. Nhưng hash có proof size O(n) — bạn phải tiết lộ toàn bộ data để verify. KZG giải quyết vấn đề này với proof size O(1).
02 KZG Commitment là gì?
KZG Commitment (hay Kate commitment, tên tác giả Aniket Kate, Gregory Zaverucha, Ian Goldberg — 2010) là một polynomial commitment scheme với đặc tính nổi bật:
- Commitment size: Luôn là 1 group element = 48 bytes (BLS12-381)
- Proof size: Luôn là 1 group element = 48 bytes — bất kể polynomial lớn thế nào
- Prove bất kỳ điểm: Có thể chứng minh f(z) = y tại bất kỳ z nào mà không tiết lộ toàn bộ f
- Aggregatable: Nhiều proof có thể gộp thành một proof duy nhất (batch verification)
03 Toán Học Đằng Sau KZG
KZG xây dựng trên polynomial interpolation và elliptic curve pairing. Phần này giải thích intuition mà không đòi hỏi toán học sâu:
Bước 1: Encode data thành polynomial
Data (ví dụ blob 128KB) được encode thành polynomial f(x). Mỗi giá trị trong data trở thành coefficient của polynomial. Nếu data có n phần tử, f(x) là polynomial bậc n.
Bước 2: Tạo commitment
Commitment C là evaluation của f tại một secret point τ (tau), nhưng encode trong elliptic curve group:
Bước 3: Tạo proof cho điểm z
Để chứng minh f(z) = y, prover tạo quotient polynomial q(x):
Bước 4: Verifier kiểm tra
Verifier dùng elliptic curve pairing để kiểm tra proof hợp lệ mà không cần biết τ:
04 Trusted Setup: Ceremony Powers of Tau
KZG yêu cầu một Trusted Setup — một lần tạo ra các public parameters {G, τ·G, τ²·G, ..., τⁿ·G} từ secret τ. Ai biết τ có thể fake proof cho bất kỳ statement nào.
Giải pháp: Multi-party computation ceremony:
- Participant 1 chọn secret s₁, tính {s₁·G, s₁τ·G...}, xóa s₁
- Participant 2 nhận output của P1, nhân thêm s₂ của mình, xóa s₂
- Participant N tiếp tục tương tự...
- Secret tổng thể τ = s₁ × s₂ × ... × sₙ — không ai biết τ chỉ cần MỘT người xóa secret
Đọc thêm về trusted setup: Trusted Setup là gì.
05 KZG vs Merkle Tree: So Sánh Kỹ Thuật
Cả KZG và Merkle Tree đều là commitment scheme phổ biến trong blockchain, nhưng có trade-off khác nhau:
| Tiêu chí | Merkle Tree | KZG Commitment |
|---|---|---|
| Commitment size | 32 bytes (root hash) | 48 bytes |
| Proof size | O(log n) — tăng theo data | O(1) — luôn 48 bytes |
| Proof time | Fast (chỉ dùng hash) | Chậm hơn (elliptic curve) |
| Verify time | Fast | Chậm hơn (pairing operation) |
| Trusted setup | Không cần | Cần một lần |
| Aggregation | Khó | Dễ (batch proof) |
| Update proof | O(log n) | O(n) cho full update |
| Use case | State trie, Merkle proof | Blob data, ZK proof |
Khi nào dùng KZG: Khi data lớn và cần proof nhỏ nhất có thể (blob ~128KB), hoặc khi cần batch verify nhiều proof cùng lúc hiệu quả.
Khi nào dùng Merkle: Khi không có trusted setup, data nhỏ, hoặc cần update proof thường xuyên (state trie).
06 KZG trong EIP-4844: Nền Tảng Blob Transaction
EIP-4844 (Proto-Danksharding) là upgrade Ethereum quan trọng nhất cho rollup scaling. KZG là thành phần kỹ thuật cốt lõi.
Vấn đề EIP-4844 giải quyết
Rollup cần đăng transaction data lên Ethereum L1 để inherit bảo mật. Trước EIP-4844, rollup dùng calldata — rất đắt (16 gas/byte). EIP-4844 tạo blob transaction loại mới: mỗi blob ~128KB, lưu tạm 18 ngày (không vĩnh viễn), và rẻ hơn 10-100x.
KZG hoạt động trong EIP-4844
07 KZG trong ZK Proof Systems
KZG là building block quan trọng trong nhiều ZK proof system hiện đại:
- PLONK: Dùng KZG làm polynomial commitment — proof size nhỏ, verify nhanh. Đây là hệ ZK phổ biến nhất hiện nay (dùng trong nhiều zkEVM).
- Groth16: Dùng variant của KZG — proof chỉ 3 group elements (~192 bytes), verify rất nhanh. Được dùng trong Zcash và zkSync Era.
- Marlin / Sonic: Cũng dùng KZG-based commitment.
Trong ZK proof: KZG commit polynomial biểu diễn witness → proof system dùng KZG để chứng minh polynomial đó thỏa mãn constraint → verifier check KZG proof mà không cần xem witness.
Đọc thêm: ZK-SNARK là gì và zkVM là gì.
08 Hạn Chế và Tương Lai của KZG
Hạn chế hiện tại
- Trusted setup: Vẫn cần một lần ceremony — nếu tất cả participant đều leak secret, toàn bộ system bị compromise. Dù xác suất rất thấp với 141,416 người.
- Quantum vulnerability: KZG dựa vào discrete log trên elliptic curve — máy tính lượng tử đủ mạnh có thể phá vỡ. Tuy nhiên, timeline của quantum threat vẫn còn nhiều thập kỷ.
- Proving cost: Tạo KZG proof tốn nhiều computation hơn Merkle — đặc biệt với blob lớn.
Hướng phát triển
- Full Danksharding: Mở rộng EIP-4844 với DAS hoàn chỉnh, KZG sẽ verify sampling của hàng trăm blob mỗi block.
- Verkle Tree: Verkle Tree dùng vector commitment tương tự KZG để thay thế Merkle Patricia Trie trong Ethereum state — proof nhỏ hơn nhiều cho statelessness.
- Post-quantum alternatives: Nghiên cứu FRI-based commitment (dùng trong STARK) và lattice-based commitment như alternatives quantum-resistant.
09 FAQ — Câu Hỏi Thường Gặp
KZG Commitment (Kate-Zaverucha-Goldberg) là một polynomial commitment scheme cho phép prover tạo commitment ngắn gọn C cho một polynomial f(x), sau đó chứng minh f(z)=y tại bất kỳ điểm z nào với một proof chỉ 48 bytes — bất kể polynomial có độ lớn thế nào. Verifier chỉ cần commitment C và proof 48 bytes để xác nhận mà không cần xem toàn bộ data.
Trong EIP-4844 (Proto-Danksharding), mỗi blob transaction đính kèm một KZG commitment — fingerprint toán học của toàn bộ blob data ~128KB. Ethereum node chỉ cần verify commitment (không cần download blob), trong khi Data Availability Sampling node verify random point của blob. KZG giúp giảm chi phí DA cho rollup 10-100x.
KZG yêu cầu một lần trusted setup (ceremony): tạo ra các parameters công khai từ một secret value tau (τ). Ai biết τ có thể fake proof. Để không ai biết τ, ceremony được tổ chức với hàng nghìn participant — chỉ cần MỘT người trong số đó xóa secret của mình thì τ tổng thể vẫn an toàn. Ethereum KZG ceremony (2023) có 141,416 người tham gia.
Merkle Tree tạo commitment bằng hash tree — proof size O(log n) tỷ lệ với độ lớn data. KZG dùng polynomial — proof size O(1) tức là luôn 48 bytes bất kể data lớn thế nào. KZG cũng hỗ trợ multi-point proof hiệu quả hơn nhiều so với Merkle. Đổi lại, KZG cần trusted setup và dùng elliptic curve pairing phức tạp hơn hash.