Merkle Tree là gì ?
Các Bitgetters thân mến,
Merkle Tree là một cấu trúc dữ liệu, còn được gọi là Hash Tree. Merkle Tree lưu trữ dữ liệu trong các nút lá của cấu trúc cây và bằng cách hash dữ liệu từ dưới lên trên cùng là gốc cây, mọi thay đổi trong dữ liệu của các nút lá sẽ được chuyển đến các nút cấp cao hơn và cuối cùng được hiển thị dưới dạng thay đổi trong gốc cây.
1. Vai trò của Cây Merkle
-
Xác thực tính toàn vẹn của dữ liệu
-
Đảm bảo tính bất biến của dữ liệu
-
Đảm bảo quyền riêng tư dữ liệu
2. Bitget Limited định nghĩa Merkle Tree
2.1 Thông tin về nút
Thông tin được lưu trữ trong mỗi nút cây bao gồm:
1. Giá trị Hash
2. Số lượng coin chưa trong tài sản của người dùng (VD: BTC, ETH, USDT)
2.2 Giá trị Hash
Các nút lá (trừ các nút đệm)
- encryptUid: mã hóa UID của người dùng
- nonce: giá trị duy nhất được gán cho mỗi người dùng
- balances: chuỗi json bao gồm số coin có trong tài sản của người dùng (lưu ý: bỏ số 0 không hợp lệ ở cuối và giữ độ chính xác là 8 bit)
- Ví dụ: {"BTC":1.763,"ETH":362,"USDT":1077200.2274}
Nút Cha (Parent node)
- h1: hàm băm của nút con bên trái của nút hiện tại,
- h2: hàm băm của nút con bên phải của nút hiện tại,
- cấp độ: là nơi có chứa nút cha bên trong
Định nghĩa cấp độ nút cây: Cây Merkle hoàn chỉnh (Cây nhị phân đầy đủ) yêu cầu 2^n dữ liệu nút lá, cấp độ nút lá = n + 1, cấp độ nút cha = cấp độ nút con - 1, cấp độ nút gốc = 1, cấp độ nút lá là tối đa
Giá trị nút đệm
Cây Merkle hoàn chỉnh (cây nhị phân đầy đủ) yêu cầu 2^n dữ liệu nút lá, nhưng số lượng dữ liệu thực tế có thể không thỏa mãn và có thể là số lẻ. Trong trường hợp như vậy, nếu một nút k không có nút anh chị em, thì tính năng đệm tự động sẽ tạo ra một nút anh chị em k' và hash (k') = hash (k) và số coin của nút k' được đặt thành 0.
Ví dụ:
Sau đó, nút đệm hash4 = hash3, các số dư được lưu trữ là {"BTC": 0, "ETH": 0, "USDT": 0}, như Hình 1.
Hình 1
Từ đó, hash6 = SHA256 (hash3 + hash3, {BTC: (2+0), ETH:(1+0), USDT:(12+0)}, level)
Nguyên tắc xác minh
1. Nguyên tắc xác minh: Theo định nghĩa của cây Bitget Limited Merkle, giá trị hash của nút cha được tính từ nút lá của chính người dùng cho đến nút gốc và giá trị hash của nút gốc được so sánh với giá trị hash của cây Merkle trong "Bước xác minh - Bước 1", nếu cả hai bằng nhau thì xác minh thành công, nếu không thì xác minh thất bại.
2. Ví dụ: Kết hợp hình 1 và văn bản json sau đây, đồng thời dựa trên nút lá h3 của chính người dùng và thông tin được cung cấp bởi nút h4 liền kề, chúng ta có thể tính toán hash của nút cha h6, sau đó dựa trên thông tin được cung cấp bởi nút liền kề h5, chúng ta có thể tính toán hash của nút cha h7, sau đó so sánh giá trị hàm băm với nút gốc h7 được cung cấp trong dữ liệu đường dẫn cây Merkle để xem liệu các giá trị hash có bằng nhau hay không để hoàn tất quá trình xác thực.
Văn bản Json dẫn đến dữ liệu cây Merkle như sau:
Các bước xác minh
1. Đăng nhập vào tài khoản Bitget của bạn, nhấp vào "Tổng quan về tài sản - " và chuyển đến "Bằng chứng tài sản" để xem trực tiếp các cuộc kiểm tra gần đây. Dữ liệu tại thời điểm kiểm tra của bạn sẽ được hiển thị mở rộng mặc định .
2. Nếu bạn muốn xác minh thêm theo cách thủ công, rằng, tài sản của mình bao gồm cả cây Merkle, bạn có thể thực hiện theo các bước xác minh như sau. Nhấp vào nút "Tải xuống dữ liệu" để nhận dữ liệu cần thiết để xác thực thủ công và tệp có tên mặc định: mekel_tree_bg.json sẽ được tải xuống
3. Hoạt động cụ thể:
Trong ví dụ của chúng tôi, tên tệp là mekel_tree_bg.json. Văn bản Json dẫn đến dữ liệu cây Merkle được hiển thị bên dưới:
4. Tải xuống công cụ xác minh mã nguồn mở ProofOfReserves.zip do Bitget Limited cung cấp.
5. Giải nén tệp ProofOfReserves.zip vào thư mục hiện tại và lưu trữ tệp mekel_tree_bg.json đã lưu ở bước 3 vào cùng một thư mục. Trong trường hợp của chúng tôi, tệp được lưu trữ trong Tải xuống và tên thư mục là bằng chứng dự trữ và ảnh chụp màn hình như sau:
6. Mở chương trình đầu cuối (Hệ thống Mac: ứng dụng đầu cuối. Hệ thống Windows: ứng dụng cmd)
7. Nhập lệnh cd ~/Downloads/proof-of-reserves trong chương trình đầu cuối và nhập thư mục gói đã tải xuống
8. Xác minh dữ liệu của bạn bằng cách nhập lệnh sau
Mac/Linux
Windows
Nhấp vào filestart.bat
Lưu ý: Nếu bạn đang sử dụng hệ thống Mac và gặp sự cố với cài đặt bảo mật trong bước này, hãy đi tới Tùy chọn hệ thống -> Bảo mật Quyền riêng tư -> Chung -> Nhấn vào nút khóa để thực hiện thay đổi -> Cho phép ứng dụng được tải xuống từ: App Store và nhà phát triển được phê duyệt -> Cấp quyền cho các công cụ.
Nếu sự cố sau xảy ra, zsh: quyền bị từ chối: . /start.sh, thực hiện lệnh sau
9. . Xem kết quả
(1) Nếu dữ liệu của bạn chính xác và quá trình xác minh được thông qua, thì kết quả là "Hash gốc cây Merkle nhất quán, xác minh thành công".
(2) Nếu dữ liệu của bạn sai và xác minh không thành công, thì kết quả là "Merkle tree root hash inconsistency, verify failed".
10. Bạn có thể tham khảo Bitget Limited mã công cụ xác minh mã nguồn mở và định nghĩa cây Merkle (tham khảo phần "Cây Merkle là gì") và viết chương trình của riêng bạn để xác minh dữ liệu đường dẫn thu được ở bước 2 hoặc kiểm tra để đảm bảo nội dung của bạn được bao gồm trong cây Merkel do quá trình kiểm tra này tạo ra.
Bitget Team