Cây Merkle (Merkle Tree) trong công nghệ chuỗi khối là gì? Nội dung về cây Merke
Cây Merkle (Merkle Tree)
Khái niệm
Cây Merkle trong tiếng Anh là Merkle Tree.
Cây Merkle (Merkle Tree) 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. Trong bitcoin và các loại tiền mã hóa khác, cây Merkle sử dụng để mã hóa dữ liệu chuỗi khối hiệu quả và an toàn hơn.
Chúng cũng được gọi là cây băm nhị phân (binary hash trees).
Nội dung về cây Merke
Trong chuỗi khối của bitcoin, một khối giao dịch được chạy thông qua thuật toán để tạo ra hàm băm, đó là một chuỗi các số và chữ cái có thể được sử dụng để xác minh rằng một bộ dữ liệu nhất định giống với bộ giao dịch ban đầu, nhưng không để có được bộ giao dịch ban đầu.
Phần mềm của Bitcoin không thể chạy toàn bộ khối dữ liệu giao dịch (tương ứng với giá trị các giao dịch trung bình là 10 phút) thông qua hàm băm cùng một lúc. Thay vì mỗi giao dịch được băm thì mỗi cặp giao dịch được móc nối và băm với nhau, và cứ như vậy cho đến khi có một hàm băm cho toàn bộ khối. (Nếu có số lượng giao dịch là một số lẻ thì một giao dịch được nhân đôi và hàm băm của nó được nối với chính nó).
Để dễ hiểu ta hình dung cấu trúc này giống như một cái cây. Trong sơ đồ bên dưới, "T" là một giao dịch, "H" là một hàm băm. Lưu ý rằng hình ảnh dưới đây đã được đơn giản hóa cao; một khối trung bình chứa hơn 500 giao dịch, không phải là 8 giao dịch.
Các hàm băm ở hàng dưới cùng được gọi là các "lá", các giá trị băm ở giữa là "các nhánh" và hàm băm ở trên cùng là "gốc". Gốc Merkle của một khối nhất định được lưu trữ trong tiêu đề: Ví dụ, gốc Merkle của khối #482819 là e045b18e7a3d708d686717b4f44db2099aabcad9bebf968de5f7271b458f71c8.
Gốc Merkle được kết hợp với các thông tin khác (phiên bản phần mềm, hàm băm của khối trước, dấu thời gian (timestamp), mục tiêu độ khó và số được sử dụng một lần (nonce)) và sau đó chạy qua hàm băm để tạo ra hàm băm duy nhất của khối: 000000000000000000bfc767ef8bf28c42cbd4bdbafd9aa1b5c3c33c2b089594 (kết quả trong trường hợp của khối #482819). Hàm băm này không thực sự được bao gồm trong khối có liên quan mà là của khối tiếp theo; nó dễ nhận thấy từ gốc Merkle.
Cây Merkle rất hữu ích vì nó cho phép người dùng xác minh một giao dịch cụ thể mà không cần tải xuống toàn bộ chuỗi khối (hơn 130 gigabyte vào cuối tháng 8 năm 2017).
Ví dụ: giả sử bạn muốn xác minh rằng giao dịch Td có trong khối ở sơ đồ trên. Nếu bạn có hàm băm gốc (HABCDEFGH), bạn sẽ tìm nó như giải trò chơi sudoku: bạn truy vấn Hd trong mạng lưới và nó trả về các giá trị Hc, Hab và Hefgh. Cây Merkle cho phép bạn xác minh rằng mọi thứ được tính bằng ba giá trị băm đã biết là Hab, Hc, Hefgh và gốc Habcdefgh, Hd (hàm băm duy nhất bị thiếu) phải có trong hệ thống.
Cây Merkle được đặt theo tên của Ralph Merkle trong một bài báo năm 1987 có tiêu đề "A Digital Signature Based on a Conventional Encryption Functio" (tạm dịch: Chữ kí số dựa trên chức năng mã hóa thông thường). Merkle cũng là người phát minh ra hàm băm mật mã.
(Tài liệu tham khảo: investopedia.com)