Tóm tắt nhanh
Verkle Tree là cấu trúc dữ liệu dùng Vector Commitment thay vì hash để chứng minh membership, tạo ra witness (proof) nhỏ hơn Merkle Tree khoảng 10 lần. Ethereum đang nghiên cứu thay thế Merkle Patricia Trie bằng Verkle Tree để triển khai Statelessness — cho phép node xác minh block mà không cần lưu toàn bộ state. Đây là một trong những thay đổi kỹ thuật phức tạp nhất trong lộ trình Verge của Ethereum.
01 Verkle Tree là gì?
Verkle Tree (Vector + Merkle = Verkle) là cấu trúc dữ liệu dạng cây xác thực (authenticated data structure) kết hợp ưu điểm của Merkle Tree với Vector Commitment để tạo ra proof (witness) nhỏ gọn hơn đáng kể.
Trong blockchain, "tree" được dùng để tổ chức và chứng minh state data — ví dụ: balance của một địa chỉ, storage của smart contract. Proof rằng một giá trị nhất định nằm trong state gọi là witness (hay Merkle proof). Kích thước witness quyết định xem node có thể sync và verify block nhanh không.
02 Vấn đề với Merkle Patricia Trie hiện tại
Ethereum hiện dùng Merkle Patricia Trie (MPT) để lưu trữ state (accounts, storage, receipts). MPT hoạt động tốt nhưng có một vấn đề lớn: witness quá to.
Witness trong Merkle Tree
Để chứng minh giá trị của một leaf node trong Merkle Tree, cần cung cấp tất cả sibling node dọc theo path từ leaf đến root. Với branching factor 16 (MPT dùng hexary trie) và depth ~8, mỗi proof cần ~15 × 8 = 120 hash values = ~3.8 KB.
Nhân với số lượng state access mỗi block (~1000+ accesses), tổng witness size có thể đạt vài MB mỗi block — quá lớn để include trong block và gửi đến light client.
Tại sao điều này quan trọng?
Nếu witness quá lớn, stateless client không thể hoạt động hiệu quả. Stateless client cần nhận witness từ block để verify state transitions mà không lưu toàn bộ state. Với MPT witness hàng MB, điều này không thực tế.
03 Vector Commitment là gì?
Vector Commitment là primitive cryptographic cho phép commit vào một vector (danh sách) giá trị và sau đó prove bất kỳ phần tử nào tại vị trí i, chỉ với một proof nhỏ — bất kể vector dài bao nhiêu.
So sánh với Merkle Hash
| Tính chất | Merkle Hash | Vector Commitment |
|---|---|---|
| Commit cấu trúc | Hash của các hash con | Một commitment đại diện toàn bộ vector |
| Proof size | O(log n) hash values | O(1) — constant size |
| Verify cost | Rẻ (hash operations) | Đắt hơn (pairing hay EC operations) |
| Ví dụ | SHA-256 tree | KZG Commitment, IPA |
Vector Commitment đánh đổi computation nặng hơn để lấy proof size nhỏ hơn nhiều. Với phần cứng hiện đại, computational cost là chấp nhận được — trong khi bandwidth và storage cost cho witness lớn là bottleneck thực sự.
04 Cấu trúc Verkle Tree
Verkle Tree là cây trong đó mỗi node không chứa hash của các node con mà chứa Vector Commitment của chúng.
Branching Factor cao hơn
Merkle Patricia Trie của Ethereum dùng branching factor 16 (hexary). Verkle Tree có thể dùng branching factor lên đến 256 — vì Vector Commitment handle nhiều children hiệu quả hơn hash. Branching factor cao hơn có nghĩa depth nhỏ hơn cho cùng một lượng data, càng ít levels cần prove.
Ethereum Verkle Tree Design
Ethereum đề xuất dùng width-256 Verkle Tree với IPA (Inner Product Argument) commitment scheme. Mỗi leaf lưu trữ state value (account balance, storage slot, bytecode chunk). Structure này được thiết kế để tối ưu cho stateless verification.
05 Witness Nhỏ Hơn — Tại Sao Quan Trọng?
Đây là lợi ích cốt lõi của Verkle Tree. Với Ethereum Verkle Tree (width 256, depth 4, IPA commitment):
| Metric | Merkle Patricia Trie | Verkle Tree |
|---|---|---|
| Proof per leaf | ~3.8 KB | ~150 bytes |
| Witness per block (~1000 accesses) | ~3.8 MB | ~150 KB |
| Ratio | 1x (baseline) | ~25x nhỏ hơn |
| Feasible for stateless? | Không | Có |
150 KB witness per block là con số có thể include trong block hoặc gửi kèm block header. Điều này mở ra khả năng stateless client — node không lưu state nhưng vẫn verify mọi block nhận được, chỉ cần nhận witness kèm theo.
06 Verkle Tree và Statelessness
Ethereum Statelessness là mục tiêu cho phép node tham gia mạng mà không cần sync và lưu trữ toàn bộ state (hiện ~1TB). Đây là điều kiện cần để Ethereum đạt được decentralization thực sự ở node level.
Weak Statelessness vs Strong Statelessness
- Weak Statelessness: Chỉ block proposer cần giữ state; validator và các node khác có thể stateless (verify với witness). Đây là mục tiêu trước mắt của Ethereum, khả thi với Verkle Tree.
- Strong Statelessness: Kể cả block proposer cũng không cần giữ state — cần thêm innovations về "state providers". Đây là mục tiêu dài hạn hơn.
Với Verkle Tree witness (~150KB/block), validator có thể verify block chỉ với witness đi kèm, không cần state database. Điều này giảm yêu cầu hardware để chạy validator node — một bước quan trọng cho việc decentralize validator set.
07 KZG vs IPA — Hai loại Commitment
Có hai candidate chính cho Vector Commitment trong Verkle Tree của Ethereum:
KZG (Kate-Zaverucha-Goldberg) Commitment
- Proof size: 48 bytes (constant)
- Verify cost: 1 pairing operation (~1-2ms)
- Trusted setup required: cần ceremony như Powers of Tau
- Quantum resistance: Không (dùng elliptic curve pairings)
- Đã dùng trong: EIP-4844 blob commitments
IPA (Inner Product Argument) Commitment
- Proof size: ~640 bytes (logarithmic, larger than KZG)
- Verify cost: nhiều EC scalar multiplications
- Trusted setup: Không cần — transparent setup
- Quantum resistance: Không (cũng dùng EC)
- Đang dùng trong: Ethereum Verkle Tree research
Ethereum hiện đang nghiên cứu IPA cho Verkle Tree vì không cần trusted setup. Tuy nhiên, với sự phát triển của quantum computing trong tương lai xa, cả hai đều cần thay thế bằng post-quantum alternatives — một thách thức dài hạn khác của Ethereum roadmap.
08 Lộ trình Triển khai trên Ethereum
Verkle Tree là một phần của giai đoạn Verge trong Ethereum roadmap — một trong những upgrade phức tạp nhất từ trước đến nay.
Thách thức Migration
Thay thế MPT bằng Verkle Tree không phải chỉ thay đổi data structure từ block mới — cần migrate toàn bộ state hiện tại (~hàng trăm triệu accounts và storage slots) từ MPT sang Verkle Tree. Đây là "one-time conversion" tốn kém về computation và cần được thực hiện trong khi mạng vẫn chạy.
- Overlay tree approach: State mới dùng Verkle Tree; state cũ (từ MPT) được convert dần khi được access
- Full conversion: Dành một số block nhất định để convert toàn bộ state một lần — đơn giản hơn nhưng disruptive hơn
Timeline ước tính
Tính đến 2025, Verkle Tree đang trong phase testing trên Ethereum testnets. Mainnet deployment chưa có timeline cụ thể — EIP-6800 và EIP-4762 là các EIP liên quan đang được review. Đây vẫn là research-heavy work, dự kiến là một trong những upgrade lớn cuối cùng trước khi Ethereum đạt "endgame" design.
09 Câu hỏi thường gặp
Verkle Tree là cấu trúc dữ liệu dạng cây dùng Vector Commitment thay vì hash để kết nối node cha-con. Tạo ra witness (proof) nhỏ hơn Merkle Tree ~25x — khoảng 150 bytes thay vì vài KB — cho phép stateless client verify state mà không tải toàn bộ state.
Merkle Tree dùng hash — witness cần tất cả sibling nodes dọc path, size O(log n). Verkle Tree dùng Vector Commitment — một commitment đại diện nhiều giá trị, witness chỉ cần một proof nhỏ O(1). Verkle Tree cũng có branching factor lớn hơn (256 vs 16), giảm độ sâu của tree.
Ethereum cần Verkle Tree để triển khai Statelessness — node verify block không cần lưu toàn bộ state (~1TB). Merkle Patricia Trie witness quá lớn (vài MB/block). Verkle Tree giảm xuống ~150KB/block, đủ nhỏ để include trong block và gửi đến stateless validator.
Tính đến 2025, Verkle Tree đang trong giai đoạn nghiên cứu và testnet, chưa trên mainnet. Đây là một phần của giai đoạn Verge trong Ethereum roadmap. Migration từ MPT sang Verkle Tree là thách thức kỹ thuật lớn — cần convert hàng trăm triệu state entries.