OKB.VN
🔐 ZK & Cryptography — Mật mã học

KZG Commitment là gì?

Polynomial Commitment, Trusted Setup Ceremony và nền tảng kỹ thuật của EIP-4844 Blob Transaction
📖 Khoảng 14 phút đọc 🔄 Cập nhật 2026 🏷️ Cryptography · ZK · EIP-4844

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)
Intuition: Hãy tưởng tượng bạn có một tập data khổng lồ (gigabytes). KZG cho phép bạn tạo một "fingerprint" 48 bytes của toàn bộ data đó, và sau đó chứng minh giá trị tại bất kỳ vị trí nào trong data chỉ với thêm 48 bytes nữa. Verifier không cần download toàn bộ data.

03 Toán Học Đằng Sau KZG

KZG xây dựng trên polynomial interpolationelliptic 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.

Data: [d₀, d₁, d₂, ..., dₙ] → f(x) = d₀ + d₁x + d₂x² + ... + dₙxⁿ

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:

C = f(τ) · G (trong elliptic curve group) G = generator point của curve τ = secret từ trusted setup (không ai biết giá trị thực)

Bước 3: Tạo proof cho điểm z

Để chứng minh f(z) = y, prover tạo quotient polynomial q(x):

q(x) = (f(x) - y) / (x - z) Proof π = q(τ) · G (48 bytes)

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 τ:

e(C - y·G, G₂) = e(π, (τ-z)·G₂) // Nếu equation này đúng → f(z) = y đã được chứng minh
Tại sao an toàn? Discrete logarithm problem trong elliptic curve đảm bảo: biết τ·G không thể tính ngược ra τ. Prover biết f(x) nhưng không biết τ trực tiếp — chỉ biết τ·G, τ²·G... từ trusted setup. Họ không thể fake proof mà không biết toàn bộ f(x).

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:

  1. Participant 1 chọn secret s₁, tính {s₁·G, s₁τ·G...}, xóa s₁
  2. Participant 2 nhận output của P1, nhân thêm s₂ của mình, xóa s₂
  3. Participant N tiếp tục tương tự...
  4. Secret tổng thể τ = s₁ × s₂ × ... × sₙ — không ai biết τ chỉ cần MỘT người xóa secret
Ethereum KZG Ceremony (2023): Được tổ chức để chuẩn bị cho EIP-4844. Có 141,416 người tham gia — kỷ lục thế giới cho multi-party computation ceremony. Trusted setup này dùng chung cho tất cả EIP-4844 blob commitment trên Ethereum. Miễn là 1 trong 141,416 người đã xóa secret của mình, toàn bộ ceremony an toàn.

Đọ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 TreeKZG Commitment
Commitment size32 bytes (root hash)48 bytes
Proof sizeO(log n) — tăng theo dataO(1) — luôn 48 bytes
Proof timeFast (chỉ dùng hash)Chậm hơn (elliptic curve)
Verify timeFastChậm hơn (pairing operation)
Trusted setupKhông cầnCần một lần
AggregationKhóDễ (batch proof)
Update proofO(log n)O(n) cho full update
Use caseState trie, Merkle proofBlob 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

Rollup flow với EIP-4844: 1. Rollup submitter tạo blob data B (128KB transaction data) 2. Tính KZG commitment C = commit(B) — 48 bytes 3. Submit blob_tx {C, B} lên Ethereum Ethereum L1 chỉ lưu C (48 bytes) vĩnh viễn trong block header Blob B được lưu tạm 18 ngày bởi các node Verification: - Ethereum verify C là KZG commitment hợp lệ - Data Availability Sampling: sample ngẫu nhiên điểm trong B, verify với C - Rollup fraud/validity proof: dùng C để prove L2 state
Tại sao cần KZG chứ không phải hash? Hash của blob cho phép verify toàn bộ blob intact. KZG cho phép verify bất kỳ điểm nào trong blob mà không cần toàn bộ blob — đây là nền tảng cho Data Availability Sampling (DAS) trong Danksharding tương lai.

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ì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.

📚 Khám phá thêm theo chủ đề
113 bài phân tích kỹ thuật — Blockchain Infrastructure từ nền tảng đến nâng cao
📋 Xem tất cả bài viết →