Mục lục
Cây Merkle là gì?
Cây Merkle hoạt động như thế nào?
Tại sao Merkel Root được sử dụng trong Bitcoin?
Khai thác mỏ
xác minh
Tóm tắt
Cây Merkle là gì?
Đầu những năm 1980, Ralph Merkle, một nhà khoa học máy tính nổi tiếng trong lĩnh vực mật mã khóa công khai, đã đề xuất khái niệm cây Merkle.
Cấu trúc cây Merkle có thể xác minh tính toàn vẹn của tập dữ liệu một cách hiệu quả và hiệu quả hơn trong các mạng ngang hàng yêu cầu người tham gia chia sẻ và xác minh thông tin một cách độc lập.
Hàm băm là trung tâm của cấu trúc cây Merkle. Do đó, chúng tôi khuyên bạn nên hiểu băm là gì trước khi tiếp tục bài viết này.
Cây Merkle hoạt động như thế nào?
Giả sử bạn muốn tải xuống một tệp lớn. Với các bản tải xuống phần mềm nguồn mở, thường cần phải kiểm tra xem hàm băm của tệp đã tải xuống có khớp với mã được nhà phát triển công khai hay không. Nếu chúng khớp nhau thì hai tài liệu đó nhất quán.
Nếu giá trị băm không khớp, bạn đang gặp rắc rối. Hoặc bạn đã tải xuống một tệp độc hại được ngụy trang dưới dạng phần mềm hoặc bạn đã tải xuống tệp đó không chính xác và kết quả cuối cùng là tệp đó không thể sử dụng được. Nếu tải không đúng, chắc chắn bạn sẽ cảm thấy khó chịu vì phải chờ file tải rất lâu. Bây giờ nếu bạn bắt đầu lại, bạn phải hy vọng rằng vấn đề tương tự sẽ không xảy ra nữa.
Bạn đã bao giờ cân nhắc, có cách nào dễ dàng hơn để giải quyết vấn đề này không? Đây là nơi cây Merkle xuất hiện. Cây Merkle có thể chia tệp thành nhiều khối dữ liệu. Ví dụ: một tệp 50 GB có thể được chia thành 100 bản, mỗi bản có kích thước 0,5 GB. Sau đó, bạn có thể tải từng cái một xuống. Đây là cách hoạt động của torrent.
Nguồn tệp tại thời điểm này là giá trị băm, được gọi là gốc Merkle. Giá trị băm đơn này đại diện cho tất cả các khối dữ liệu tạo nên tệp. Hơn nữa, rễ Merkle giúp việc xác thực dữ liệu dễ dàng hơn.
Để dễ hiểu, chúng tôi đưa ra một ví dụ. Bên dưới, một tệp 8GB được chia thành tám phần và mỗi đoạn được đặt tên tương ứng từ A đến H. Mỗi đoạn sau đó được cắm vào một hàm băm, tạo ra 8 giá trị băm khác nhau.

Thông qua hàm băm, giá trị băm của tám đoạn được tính toán.
Hy vọng lời giải thích ví dụ trên là dễ hiểu. Chúng ta có giá trị băm của tất cả các đoạn nếu một trong số chúng sai, liệu chúng ta có thể tìm ra vấn đề bằng cách so sánh nó với tệp nguồn không? Có thể, nhưng nó vẫn cực kỳ kém hiệu quả. Nếu tệp có hàng chục nghìn phân đoạn, chúng ta có cần băm tất cả các phân đoạn và so sánh kết quả một cách chi tiết không?
không cần thiết. Chúng ta chỉ cần kết hợp một cặp giá trị băm và thực hiện thao tác băm kết hợp. Nghĩa là, chúng ta băm với hA + hB, hC + hD, hE + hF và hG + hH. Kết quả sẽ là bốn giá trị băm. Sau đó, chúng tôi tiến hành vòng băm hợp nhất tiếp theo cho đến khi thu được hai giá trị băm. Hai giá trị băm này sau đó được kết hợp lại và cuối cùng thu được giá trị băm chính, đó là gốc Merkle (còn gọi là giá trị băm gốc).

Cấu trúc trông giống như một cái cây lộn ngược. Hàng lá phía dưới kết hợp với nhau tạo thành đốt và cuối cùng là rễ.
Bây giờ chúng ta có gốc Merkle đại diện cho tệp đã tải xuống. So sánh giá trị băm gốc với giá trị của tệp nguồn và nếu nó khớp thì mọi người đều vui vẻ! Khi các giá trị băm khác nhau, điều đó chứng tỏ dữ liệu đã bị giả mạo. Nói cách khác, một hoặc nhiều đoạn tạo ra một giá trị băm khác. Vì vậy, ngay cả những sửa đổi dữ liệu nhỏ cũng có thể thay đổi hoàn toàn gốc rễ của Merkel.
May mắn thay, việc kiểm tra các phân đoạn sai cũng rất dễ dàng. Giả sử lỗi là hE. Đầu tiên, chúng tôi yêu cầu những người khác cung cấp hai hàm băm (hABCD và hEFGH) để tạo gốc Merkle. Giá trị hABCD của chúng tôi phải khớp với giá trị của người khác, chứng tỏ rằng cây con không có lỗi. Nếu hEFGH không khớp, chúng ta có thể sửa lỗi từ đây. Sau đó, hãy hỏi những người khác về hàm băm hEF và hGH của họ và so sánh chúng với hGH của bạn. Nếu hGH ổn thì hEF chính là thủ phạm. Cuối cùng, chúng ta so sánh các giá trị băm của hE và hF. Khi tìm thấy nguồn gốc của lỗi là hE, chúng ta có thể tải lại khối dữ liệu.
Tóm lại, chức năng của cây Merkle là chia dữ liệu thành nhiều phần, sau đó thực hiện các phép toán băm liên tục để cuối cùng hình thành gốc Merkle, để nó có thể xác minh một cách hiệu quả nơi xảy ra dữ liệu sai. Trong phần tiếp theo, chúng tôi sẽ giới thiệu các ứng dụng thú vị khác.
Bạn muốn bắt đầu hành trình tiền điện tử của mình? Hãy đến Binance và mua Bitcoin ngay bây giờ!
Tại sao Merkel Root được sử dụng trong Bitcoin?
Có nhiều trường hợp sử dụng cây Merkle, nhưng bài viết này tập trung vào vai trò quan trọng của nó trong blockchain. Bitcoin và nhiều loại tiền điện tử không thể tách rời khỏi cây Merkle. Cây Merkle là một phần không thể thiếu của mỗi khối, thường nằm ở tiêu đề khối. Thông qua giá trị băm giao dịch (TXID) của mỗi giao dịch trong khối, chúng ta có thể thu được các lá.
Trong bối cảnh này, gốc Merkel phục vụ một số mục đích. Chúng ta hãy xem ứng dụng của Merkle Root trong khai thác tiền điện tử và xác minh giao dịch.
Khai thác mỏ
Khối bitcoin bao gồm hai phần. Phần đầu tiên là tiêu đề khối, có kích thước cố định và chứa siêu dữ liệu khối. Phần thứ hai là phần thân khối, có kích thước thay đổi nhưng thường lớn hơn nhiều so với tiêu đề khối và chứa danh sách giao dịch.
Người khai thác cần phải băm dữ liệu nhiều lần cho đến khi tạo ra kết quả đáp ứng các điều kiện nhất định trước khi họ có thể đào ra một khối hợp lệ. Để có được kết quả chính xác, họ cần phải thử hàng nghìn tỷ lần. Với mỗi lần thử, người khai thác sẽ thay đổi số ngẫu nhiên trong tiêu đề khối, giá trị Nonce, để tạo ra các kết quả khác nhau. Tuy nhiên, phần còn lại của khối vẫn giữ nguyên và hàng nghìn giao dịch bên trong nó vẫn cần được băm mỗi lần.
Merkel đã đơn giản hóa quá trình này rất nhiều. Khi quá trình khai thác bắt đầu, tất cả các hàng đợi giao dịch được đóng gói và xây dựng thành cây Merkle và giá trị băm gốc 32 bit được tạo sẽ được đặt trong tiêu đề khối. Sau đó, không cần băm toàn bộ khối mà chỉ cần băm tiêu đề khối.
Phương pháp này ngăn chặn việc giả mạo dữ liệu và do đó có hiệu quả, cho phép tất cả các giao dịch trong một khối được tóm tắt một cách hiệu quả dưới dạng nhỏ gọn. Không thể sửa đổi danh sách giao dịch của các tiêu đề khối hợp lệ, nếu không gốc Merkle sẽ bị thay đổi. Sau khi khối được gửi đến các nút khác, hàm băm gốc được tính từ danh sách giao dịch. Nếu nó không khớp với giá trị trong tiêu đề khối, khối có thể bị từ chối.
xác minh
Có một đặc tính thú vị khác mà chúng ta có thể sử dụng gốc Merkle, liên quan đến ứng dụng của các máy khách hạng nhẹ (các nút không giữ bản sao hoàn chỉnh của chuỗi khối). Nếu bạn đang chạy một nút trên một thiết bị có tài nguyên hạn chế, bạn sẽ không muốn tải xuống và băm tất cả các giao dịch trong một khối. Thay vào đó, bạn chỉ cần yêu cầu bằng chứng Merkle, bằng chứng được cung cấp bởi một nút đầy đủ rằng giao dịch đã được đưa vào một khối cụ thể. Bằng chứng này được biết đến nhiều hơn với tên Xác minh thanh toán đơn giản hay SPV và được trình bày chi tiết trong sách trắng Bitcoin của Satoshi Nakamoto.

Để kiểm tra hD, chỉ cần xác minh hàm băm màu đỏ.
Giả sử chúng ta muốn lấy thông tin giao dịch về TXID hD. Nếu biết hC thì có thể tính được hCD. Khi đó, thông qua hAB, hABCD có thể được tính toán. Cuối cùng, bằng cách tham khảo hEFGH, bạn có thể kiểm tra xem gốc Merkle được tính toán có nhất quán với hàm băm gốc trong tiêu đề khối hay không. Một kết quả khớp thành công chứng tỏ rằng giao dịch đã được bao gồm trong khối, vì việc tạo ra cùng một hàm băm bằng cách sử dụng các dữ liệu khác nhau là gần như không thể.
Trong ví dụ trên, chúng tôi chỉ băm ba lần. Nếu không có sự chứng nhận của Merkel, sẽ phải mất tới bảy lần. Các khối ngày nay chứa hàng nghìn giao dịch và bằng chứng Merkle giúp chúng ta tiết kiệm rất nhiều thời gian và sức mạnh tính toán.
Tóm tắt
Cây Merkle đã chứng tỏ tầm quan trọng của chúng trong các ứng dụng khoa học máy tính và như chúng ta đã thấy, chúng cũng có giá trị trong blockchain. Cây Merkle giúp việc xác minh thông tin trong hệ thống phân tán thuận tiện hơn và tránh tắc nghẽn dữ liệu dư thừa trong mạng.
Nếu không có cây Merkle và rễ Merkle, Bitcoin và các khối tiền điện tử khác sẽ không thể nhỏ gọn như ngày nay. Mặc dù các máy khách nhẹ thiếu lợi thế về quyền riêng tư và bảo mật, nhưng với bằng chứng Merkle, người dùng có thể xác minh rằng các giao dịch được bao gồm trong các khối với mức phí tối thiểu.

