Merkle root được tạo như thế nào?
Bắt đầu với ID của mỗi giao dịch trong block. Mỗi ID là một mã băm SHA-256 kép. Sắp xếp chúng theo thứ tự, với coinbase đứng đầu. Ghép các mã liền kề thành từng cặp rồi băm từng cặp. Lúc này bạn có số mã băm chỉ bằng một nửa. Lặp lại cho đến khi còn một mã: đó là Merkle root.
Nếu một tầng có số lượng mã băm lẻ, mã cuối cùng sẽ được ghép với chính nó. Thay đổi bất kỳ giao dịch nào, dù chỉ một satoshi, cũng làm thay đổi mọi mã băm trên nhánh dẫn lên đỉnh, kể cả Merkle root. Hãy thử trong bản demo ở trên.
Vì sao dùng cây thay vì một mã băm lớn?
Bằng chứng xác thực. Để chứng minh một giao dịch nằm trong block, bạn chỉ cần các mã băm trên nhánh của giao dịch đó, không cần toàn bộ block. Với khoảng 4.000 giao dịch trong một block, bạn chỉ cần 12 mã băm, tương đương vài trăm byte. Whitepaper của Satoshi mô tả các ví nhẹ kiểm tra thanh toán theo cách này, chỉ lưu block header.
Điều này cũng quan trọng khi đào. Khi thợ đào thay đổi extra nonce trong giao dịch coinbase, Merkle root cũng thay đổi, và block header có một bộ nonce mới để thử.
Nguồn
- Bitcoin: A Peer-to-Peer Electronic Cash System · Satoshi Nakamoto, 2008
- Tài liệu tham khảo về chuỗi khối: tiêu đề, cây Merkle, mục tiêu · Tài liệu dành cho nhà phát triển Bitcoin
- Cây Merkle · Bitcoin Wiki
Số liệu trực tiếp trên trang này lấy từ API của CloudMineCrypto và dữ liệu công khai trên blockchain, được cập nhật thường xuyên và có ghi chú tại nơi hiển thị. Chỉ nhằm mục đích giáo dục, không phải lời khuyên tài chính.