Cây Merkle (Merkle tree) là cấu trúc dùng để xác thực toàn vẹn cho một tập hợp dữ liệu lớn (được dùng trong Bitcoin, Git, IPFS, ...) chỉ bằng một giá trị băm duy nhất gọi là Merkle root.
Cho n lá (leaf) là các chuỗi dữ liệu L1,…,Ln. Xây dựng cây Merkle theo quy tắc sau, dùng SHA-256 (biểu diễn hex, chữ thường):
Trường hợp đặc biệt: nếu n=1, Merkle root chính là h1.
Ví dụ: n=3 với các lá "a", "b", "c": băm 3 lá được h1,h2,h3; vì lẻ nên nhân đôi h3 thành (h1,h2,h3,h3); ghép cặp tầng 1 được 2 node; ghép cặp tiếp được 1 node — đó là kết quả.
In ra duy nhất một dòng: giá trị Merkle root dạng chuỗi hex 64 ký tự thường.
Ví dụ:
Đầu vào:
2
tx1
tx2
Đầu ra:
f8f28ede979567036d801ad6cf58b551c7d8530bba005c48e46d39c73ab52664
Đầu vào:
1
A
Đầu ra:
559aead08264d5795d3909718cdd05abd49572e84fe55590eef31a88a08fdffd
Đang tải editor...