Merkle Tree là gì?
Merkle Tree (Cây Merkle) là một cấu trúc dữ liệu được sử dụng trong các ứng dụng khoa học máy tính. Đó là một cấu trúc dữ liệu toán học được tạo thành từ các hàm băm của nhiều block dữ liệu khác nhau tóm tắt các giao dịch trong một block. Merkle Tree được sử dụng để mã hóa các chuỗi khối hiệu quả và an toàn hơn. Đối với Bitcoin hay các loại tiền điện tử khác, Merkle Tree được dùng để mã hóa dữ liệu một cách an toàn và hiệu quả hơn.
Cách cây Merkle hoạt động
Cây Merkle được tạo ra bằng cách liên tục băm (Hash) các cặp node cho đến khi chỉ còn lại một hàm băm (hàm băm này được gọi là Root Hash hoặc Root merkle). Chúng được xây dựng từ dưới lên, từ băm của các giao dịch riêng lẻ (được gọi là ID transaction)
Mỗi node lá là một hàm băm của dữ liệu giao dịch và mỗi node không lá là một hàm băm của các giá trị băm trước đó. Merkle tree là cây nhị phân dó đó số node luôn luôn là chẵn. Nếu số lượng giao dịch là số lẻ, hàm băm cưới cùng sẽ được nhân đôi một lần để tạo số node chẵn.
Để dễ hiểu hơn thì đây là một ví dụ. Một block xyz có A, B, C, D là bốn giao dịch, tất cả điều được thực hiện trên một block. Mỗi giao dịch đó được băm như sau:
- Hash A
- Hash B
- Hash C
- Hash D
Các hash được tóm tắt trong một node cha bằng cách băm Hash A và Hash B rồi dẫn đến Hash AB, làm tương tự với Hash C và Hash D ta được Hash CD. Hai băm (Hash AB và Hash CD) sau đó tiếp tục được băm lại để tạo ra Root Hash (Root Merkle).
Root Merkle tóm tắt tất cả dữ liệu trong các giao dịch liên quan và được lưu trữ trong tiêu đề khối. Nó duy trì tính toàn vẹn của dữ liệu. Nếu một chi tiết duy nhất trong bất kỳ giao dịch hoặc thứ tự giao dịch nào thay đổi, thì Merkle Root cũng vậy. Sử dụng cây Merkle cho phép người dùng xác minh một cách hiệu quả xem có vấn đề gì xảy ra với một phần dữ liệu hay không.
Tại sao Merkle tree lại cần thiết cho sự phát triển blockchain
Như ở đầu bài viết đã nói, Merkle tree được tạo thành từ các hàm băm (hash) của nhiều block dữ liệu khác nhau, Merkle cho phép người dùng xác minh một cách hiệu quả xem có vấn đề gì xảy ra với một phần dữ liệu hay không. Nếu mạng lưới blockchain không sử dụng Merkle tree thì các node trên mạng phải giữ lại một bản sao hoàn chỉnh từ mọi giao dịch trên blockchain đó từng được thực hiện. Đó là một vấn đề rất lớn về cơ sở hạ tầng có thể lưu trữ lượng thông tin khổng lồ không ngừng tăng thêm đó. Vậy nên Merkle tree sinh ra để giải quyết vấn đề này làm giảm áp lực lưu trữ trên blockchain
Lợi ích của Merkle tree trong blockchain
Merkle tree có 3 lợi ích chính:
- Cung cấp một phương thức chứng minh tính toàn vẹn và hợp lệ của dữ liệu.
- Tốn ít dung lượng lưu trữ vì các bằng chứng (proof) được tính toán một cách dễ dàng và nhanh chóng.
- Dữ liệu được sắp xếp và xác minh một cách dễ dàng.
Một số ứng dụng khác của Merkle tree
Trong thị trường tiền điện tử thì Bitcoin là blockchain đầu tiên triển khai Merkle tree nhưng có nhiều blockchain khác sử dụng nhưng ở phiên bản phức tạp hơn. Ethereum là một ví dụ, Ethereum sử dụng một phiên bản phức tạp hơn là Merkle Patricia Tree. Cấu trúc này có sự kết hợp của 3 cây Merkle riêng biệt sử dụng cho 3 đối tượng khác nhau trong các nền tảng Ethereum.
- stateRoot: đại diện cho trạng thái của khối, cập nhật theo thời gian thực.
- ReceiptsRoot: chứa các biên lai giao dịch trong khối
- Transaction Root: chưa toàn bộ các giao dịch.
Tổng kết
Merkle tree là một thành phần không thể thiếu của blockchain, nó cho phép blockchain hoạt động một cách hiệu quả trong việc đảm bảo tính bất biến và toàn vẹn của giao dịch. Trên đây chúng ta đã tìm hiểu qua về vai trò của Merkle tree trong blockchain. Để tìm hiểu thêm về thị trường tiền điện tử bạn đọc có thể truy cập website CoinViet Insights để đọc được nhiều bài viết hay hơn. Hy vọng bài viết giúp ích cho bạn đọc.