Sau khi thành công triển khai bản nâng cấp Dencun, mạng Ethereum đang chuẩn bị cho bước phát triển lớn tiếp theo là Pectra – hứa hẹn những cải tiến đáng kể về khả năng mở rộng, hiệu quả và chức năng.
Bản nâng cấp tiếp theo của Ethereum sẽ bao gồm “Cây Verkle” (từ ghép của “Vector commitment” và “Merkle Trees”) được chờ đợi từ lâu – một loại hệ thống dữ liệu mới được thiết kế để giúp các node Ethereum lưu trữ lượng lớn dữ liệu.
Cây Verkle là gì?
Cây Verkle là một sơ đồ cam kết hoạt động tương tự như cây Merkle nhưng có “nhân chứng – witness” nhỏ hơn nhiều. Nó hoạt động bằng cách thay thế các giá trị hash trong cây Merkle bằng cam kết vectơ, giúp các yếu tố phân nhánh rộng hơn trở nên hiệu quả hơn.
Statelessness
Cây Verkle là một bước quan trọng trên con đường hướng tới các máy khách Ethereum *stateless (tạm dịch: không trạng thái).
Stateless client là những máy khách không phải lưu trữ toàn bộ cơ sở dữ liệu trạng thái để xác thực các block. Thay vì sử dụng bản sao trạng thái Ethereum cục bộ của riêng họ để xác minh các block, Stateless client sử dụng “witness” cho dữ liệu trạng thái đi kèm với block.
“Witness” là tập hợp các phần dữ liệu trạng thái riêng lẻ được yêu cầu để thực hiện một tập hợp giao dịch cụ thể và bằng chứng mật mã cho thấy witness thực sự là một phần của dữ liệu đầy đủ. Witness được sử dụng thay vì cơ sở dữ liệu trạng thái.
Để đạt được hiệu quả, witness cần có kích thước nhỏ để có thể được truyền một cách an toàn trên mạng kịp thời để trình xác thực xử lý chúng trong khoảng thời gian 12 giây. Cấu trúc dữ liệu trạng thái hiện tại không phù hợp vì witness quá lớn.
Cây Verkle giải quyết vấn đề này bằng cách tạo điều kiện cho các witness nhỏ, loại bỏ một trong những rào cản chính đối với stateless client.
Witness
Xác minh một block có nghĩa là thực hiện lại các giao dịch có trong block, áp dụng các thay đổi đối với trạng thái của Ethereum và tính toán hàm hash *state root.
*State root là hàm hash duy nhất và đại diện cho trạng thái hiện tại của Layer 1. Thông thường, state root được tính toán dựa trên tất cả dữ liệu và các giao dịch được thực hiện trong một khoảng thời gian nhất định của mạng lưới.
Trong các máy khách Ethereum ngày nay, việc cập nhật trạng thái yêu cầu quyền truy cập vào toàn bộ *trie trạng thái, đây là một cấu trúc dữ liệu lớn phải được lưu trữ cục bộ.
*Trong khoa học máy tính, trie (cây tiền tố) là một cấu trúc dữ liệu sử dụng cây có thứ tự, dùng để lưu trữ một mảng liên kết của các xâu ký tự.
Witness chỉ chứa các đoạn dữ liệu trạng thái cần thiết để thực hiện các giao dịch trong block. Sau đó, trình xác thực chỉ có thể sử dụng những đoạn đó để xác minh rằng người đề xuất block đã thực hiện các giao dịch và cập nhật trạng thái chính xác.
Tuy nhiên, điều này có nghĩa là witness cần được chuyển giao giữa các đồng nghiệp trên mạng Ethereum đủ nhanh để mỗi node có thể nhận và xử lý một cách an toàn trong khoảng thời gian 12 giây.
Nếu số lượng witness quá lớn, có thể mất quá nhiều thời gian để một số node tải xuống và theo kịp chain.
Với Cây Verkle, trình xác thực không cần phải lưu trữ trạng thái trên ổ cứng; mọi thứ họ cần để xác minh một block đều được chứa trong chính block đó.
Tại sao cây Verkle cho phép witness nhỏ hơn?
Cấu trúc của Merkle Trie làm cho kích thước witness quá lớn để truyền một cách an toàn giữa các đồng nghiệp trong khoảng thời gian 12 giây. Điều này là do witness là một đường dẫn kết nối dữ liệu được giữ trong các lá với root hash.
Để xác minh dữ liệu, không chỉ cần có tất cả các giá trị hash trung gian kết nối mỗi lá với gốc (root) mà còn phải có tất cả các node “anh chị em”. Mỗi node trong bằng chứng (proof) có một node anh chị em được hash cùng để tạo ra hàm hash tiếp theo trong trie, tạo nên rất nhiều dữ liệu.
Cây Verkle giảm kích thước witness bằng cách rút ngắn khoảng cách giữa các lá và gốc của cây, đồng thời loại bỏ nhu cầu cung cấp các node anh chị em để xác minh root hash. Thậm chí có thể đạt được hiệu quả không gian cao hơn bằng cách sử dụng sơ đồ cam kết đa thức mạnh mẽ thay vì cam kết vectơ kiểu hash. Cam kết đa thức cho phép witness có kích thước cố định bất kể số lượng lá mà nó chứng minh.
Theo sơ đồ cam kết đa thức, các witness có kích thước dễ sử dụng và có thể dễ dàng chuyển trên mạng ngang hàng. Điều này cho phép máy khách xác minh các thay đổi trạng thái trong mỗi block với lượng dữ liệu tối thiểu.
Cấu trúc của Cây Verkle
Một trong những mục tiêu thiết kế với EIP Cây Verkle là làm cho việc truy cập vào các vị trí lân cận (ví dụ: bộ lưu trữ có địa chỉ gần như giống nhau hoặc các đoạn code lân cận) trở nên rẻ hơn. Để thực hiện điều này, một khóa bao gồm một gốc 31 byte và hậu tố 1 byte cho tổng số 32 byte. Lược đồ khóa được thiết kế sao cho các vị trí lưu trữ “đóng” được ánh xạ tới cùng một gốc và hậu tố khác.
Bản thân Cây Verkle khi đó bao gồm hai loại node: node mở rộng và node nội bộ.
- Các node mở rộng đại diện cho một thân duy nhất cho 256 node con với các hậu tố khác nhau.
- Các node nội bộ cũng có 256 node con – có thể là các node nội bộ hoặc node mở rộng khác.
Sự khác biệt chính giữa cấu trúc của Cây Verkle và Cây Merkle là Cây Verkle thấp hơn nhiều, nghĩa là có ít node trung gian hơn liên kết một lá với gốc và do đó cần ít dữ liệu hơn để tạo bằng chứng.
Không giống như các node mở rộng trong cây Merkle-Patricia, chỉ chứa phần khóa kết nối node nội bộ cha với node nội bộ con, thân cây bao phủ toàn bộ khóa cho đến điểm đó. Điều này là do Cây Verkle được thiết kế với mục đích chứng minh không trạng thái: nếu một khóa mới được chèn vào sẽ “chia” phần mở rộng thành hai thì phần mở rộng lớn hơn không cần phải được cập nhật, điều này cho phép thực hiện bằng chứng nhỏ hơn.
Nguồn: Ethereum
Xét về cấu trúc của cây (cách sắp xếp các node trong cây và chúng chứa những gì), Cây Verkle rất giống với Cây Merkle Patricia hiện đang được sử dụng trong Ethereum. Mỗi node hoặc là trống, hoặc là node lá chứa khóa và giá trị hoặc là node trung gian có số lượng node con cố định (“chiều rộng” của cây). Giá trị của node trung gian được tính dưới dạng hàm hash của các giá trị của node con.
Trong cây Merkle (bao gồm cả cây Merkle Patricia), bằng chứng về một giá trị bao gồm toàn bộ tập hợp các node chị: bằng chứng phải chứa tất cả các node trong cây có chung node cha với bất kỳ node nào trong đường dẫn đi xuống.
Một số lượng node khổng lồ! Bạn cần cung cấp các node chị ở mỗi cấp độ, vì bạn cần toàn bộ tập hợp con của một node để tính giá trị của node đó và bạn cần tiếp tục thực hiện việc này cho đến khi tìm đến gốc. Bạn có thể nghĩ rằng điều này không tệ lắm vì hầu hết các nút đều là số 0, nhưng đó chỉ là do cây này có rất ít node. Nếu cây này có 256 node được phân bổ ngẫu nhiên thì layer trên cùng gần như chắc chắn sẽ có tất cả 16 node đầy và layer thứ hai trung bình sẽ có ~ 63,3% node.
Mặt khác, trong Cây Verkle, bạn không cần cung cấp các node chị; thay vào đó, bạn chỉ cần cung cấp đường dẫn, với một chút bổ sung như bằng chứng. Đây là lý do tại sao Cây Verkle được hưởng lợi từ chiều rộng lớn hơn còn cây Merkle Patricia thì không: một cây có chiều rộng lớn hơn dẫn đến đường đi ngắn hơn trong cả hai trường hợp, nhưng trong cây Merkle Patricia, hiệu ứng này bị lấn át bởi chi phí cao hơn khi cần cung cấp tất cả các node chị cho mỗi cấp độ trong bằng chứng. Trong cây Verkle, chi phí đó không tồn tại.
Cây Verkle là một bản nâng cấp mạnh mẽ cho bằng chứng Merkle cho phép kích thước bằng chứng nhỏ hơn nhiều. Thay vì cần cung cấp tất cả các “node chị” ở mỗi cấp độ, người chứng minh chỉ cần cung cấp một bằng chứng duy nhất chứng minh tất cả các mối quan hệ cha-con giữa tất cả các cam kết dọc theo đường đi từ node lá đến gốc. Điều này cho phép kích thước bằng chứng giảm theo hệ số ~ 6-8 so với Cây Merkle lý tưởng và với hệ số trên 20-30 so với Cây Patricia hexary mà Ethereum sử dụng ngày nay.
Mặc dù yêu cầu mật mã phức tạp hơn trong quá trình triển khai, nhưng Cây Verkle mang lại cơ hội đạt được lợi ích lớn về khả năng mở rộng. Các testnet Cây Verkle đã sẵn sàng và đang hoạt động, nhưng vẫn còn những cập nhật nổi bật đáng kể dành cho máy khách cần thiết để hỗ trợ Cây Verkle.
Cây Verkle hiện là chủ đề tranh luận giữa đồng sáng lập Ethereum Vitalik Buterin và đồng sáng lập Polygon Mihailo Bjelic. Mọi chuyện bắt đầu khi Bjelic đặt câu hỏi liệu việc chuyển Ethereum sang cây Verkle có phải là hành động tốt nhất hay không, chỉ ra rằng mạng Ethereum hiện tại chắc chắn sẽ sớm gắn liền với ZK. Vitalik Buterin cho biết tuy cây Merkle không được thiết kế để tương thích với công nghệ ZK nhưng cây Verkle có phần tử vectơ được thiết kế để cuối cùng đạt được mục tiêu này.
Tham gia Telegram của Tạp Chí Bitcoin: https://t.me/tapchibitcoinvn
Theo dõi Twitter (X): https://twitter.com/tapchibtc_io
Theo dõi Tiktok: https://www.tiktok.com/@tapchibitcoin
- Layer 3 liệu có thể giải quyết vấn đề phân mảnh thanh khoản của Ethereum?
- Hard fork tiếp theo của Ethereum có thể xóa tan những lo ngại về việc mất cụm từ hạt giống
- Vitalik Buterin của Ethereum tạo ra trò đùa AI vui nhộn
Itadori
Tạp chí Bitcoin