Hướng dẫn Merkle Trees

Bạn đã nghe nói về cây Merkle khi thảo luận về công nghệ blockchain chưa? Đó là bởi vì cây Merkle là cốt lõi của chính công nghệ.

Vì vậy, chính xác nó là gì?

Trong bài viết này, chúng ta sẽ đi sâu về cây Merkle và hiểu vai trò của nó trong việc tạo nên thành công của công nghệ blockchain.

cây merkle

Bắt đầu nào.

Cây Merkle là gì?

Cây Merkle là một cấu trúc dữ liệu được sử dụng để xác minh an toàn dữ liệu trong một nhóm nội dung lớn. Nó cũng hiệu quả và nhất quán khi xác minh dữ liệu.

Ethereum và Bitcoin đều sử dụng Merkle Trees.

Vấn đề: Ở cốt lõi của mạng tập trung, dữ liệu có thể được truy cập từ một bản sao duy nhất. Điều này có nghĩa là họ không phải làm gì nhiều để lưu trữ hoặc truy cập dữ liệu. Tuy nhiên, khi nói đến mạng blockchain phi tập trung, mọi thứ trở nên tồi tệ khi mỗi dữ liệu được sao chép giữa các nút. Vì vậy, đó là một thách thức để truy cập dữ liệu một cách hiệu quả. Thách thức cũng là tạo một bản sao của dữ liệu và chia sẻ nó giữa các nút. Trên hết, dữ liệu được chia sẻ cần được xác minh cho từng nút nhận.

Giải pháp: Merkle Trees cho phép các blockchain phi tập trung chia sẻ dữ liệu, xác minh chúng và khiến chúng trở nên đáng tin cậy. Nó tổ chức dữ liệu theo cách mà không cần nhiều sức mạnh xử lý để chia sẻ và xác minh dữ liệu. Nó cũng tạo điều kiện thuận lợi cho giao dịch an toàn nhờ vào việc sử dụng các hàm băm và mật mã.

Satoshi Nakamoto là người đầu tiên triển khai cây Merkle trong công nghệ blockchain thông qua Bitcoin. Việc sử dụng của ông đã mở ra một nhánh mới của khoa học máy tính, nơi không cần có cơ quan quyền lực tập trung. Anh ta cũng sử dụng cây Merkle ở mức độ quá mức và sử dụng cây Merkle nhanh.

Tuy nhiên, khái niệm này được giới thiệu lần đầu tiên bởi Ralph Merkle, người đã được cấp bằng sáng chế vào năm 1979. Nó được đặt theo tên của ông.


Cũng đọc, Hyperledger Cactus: Một khung Hyperledger mới

Hàm băm mật mã

Trước khi thảo luận về cây Merkle, chúng ta cần hiểu rõ hơn về hàm băm mật mã.

Hàm băm chịu trách nhiệm ánh xạ bất kỳ dạng dữ liệu tùy ý nào có độ dài bất kỳ tới đầu ra có kích thước cố định. Nó là một chức năng mật mã và do đó được sử dụng rộng rãi trong mật mã.

Các hàm băm hiệu quả và được biết đến với một thuộc tính của chúng, tức là không thể đảo ngược hàm. Đây là một chức năng một chiều được thiết kế để chỉ hoạt động theo cách này.

Hashing có nhiều cách sử dụng bao gồm

  • Mật khẩu bảo vệ
  • Kiểm tra và xác minh tính toàn vẹn của tệp
  • Tiền điện tử

Có nhiều họ băm ngoài đó bao gồm Message Direct (MD), Secure Hash Function (SHF) và RIPE Message Direct (RIPEMD).

Nếu bạn sử dụng thuật toán băm SHA256 và chuyển 101Blockchains làm đầu vào, bạn sẽ nhận được đầu ra sau

fbffd63a60374a31aa9811cbc80b577e23925a5874e86a17f712bab874f33ac9

Tóm lại, các thuộc tính chính của hàm băm bao gồm:

  • Xác định
  • Chống ảnh trước
  • Tính toán hiệu quả
  • Không thể được thiết kế đảo ngược
  • Chống va chạm

Nếu bạn muốn tìm hiểu thêm về Hàm băm mật mã, hãy xem các bài viết chi tiết tại đây:

Làm thế nào để Merkle Trees hoạt động?

Bây giờ chúng ta đã hiểu phần nào về các hàm Hash, bây giờ là lúc để tìm hiểu thêm về Merkle Trees.

Vì vậy, về mặt kỹ thuật, cây Merkle là cây cấu trúc dữ liệu trong đó nút không phải là lá được xác định như một giá trị băm của các nút con tương ứng của nó.

Điều này cũng có nghĩa là cây Merkle được đảo ngược xuống nơi các nút lá là nút thấp nhất.

Để hiểu rõ hơn về những gì tôi đang cố gắng truyền đạt, hãy xem ví dụ về cây Merkle:

Merkle-cây

Nguồn: Wikipedia

Về cốt lõi của cây Merkle, chúng ta cần học ba thuật ngữ quan trọng. Chúng như sau:

  • Merkle Root
  • Nút lá
  • Nút không lá

Nếu bạn nhìn tổng thể cây Merkle, nó là một cây lộn ngược. Cây có khả năng tự tóm tắt toàn bộ các giao dịch. Điều này có nghĩa là người dùng có thể xác minh xem một giao dịch có phải là một phần của khối hay không.

Để làm cho cây Merkle hoạt động, băm được sử dụng. Nó chỉ đơn giản thực hiện lặp đi lặp lại các cặp nút băm cho đến khi chỉ còn lại một giá trị băm. Giá trị băm bên trái được gọi là Merkle Root hoặc Root Hash. Cây được tạo từ dưới lên bằng cách sử dụng các băm giao dịch riêng lẻ. Các băm giao dịch riêng lẻ còn được gọi là ID giao dịch.

Các nút lá là các nút chứa các băm dữ liệu giao dịch. Trong trường hợp của các nút không phải là nút, chúng lưu trữ hàm băm của hai hàm băm trước đó.

Một đặc tính quan trọng khác của cây Merkle là nó có bản chất là hệ nhị phân. Điều này có nghĩa là nó yêu cầu các nút lá phải đồng đều để nó hoạt động. Trong trường hợp, nếu có một số nút lá lẻ, nó sẽ chỉ cần nhân đôi băm cuối cùng và làm cho nó chẵn.

Một ví dụ

Hãy cố gắng hiểu nó bằng cách lấy một ví dụ.

merkle-tree-example

Ví dụ về cây Merkle

Ở đây, chúng tôi thấy rằng bốn giao dịch đã diễn ra trong khối. Các giao dịch này được đặt tên là X, Y, Z và W. Sau đó, các giao dịch được băm và sau đó được lưu trữ trong các nút lá mà chúng tôi đặt tên là Hash X, Hash Y, Hash Z và Hash W.

Sau khi thực hiện xong, các nút lá của Hash X, Y, Z và W lại được băm và tạo thành một hàm băm kết hợp của XY và ZW. Cuối cùng, hai hàm băm này được sử dụng để tạo Merkle Root hoặc Root Hash.

Toàn bộ quá trình băm có thể được thực hiện trên một tập dữ liệu rất lớn, điều này làm cho cấu trúc dữ liệu Merkle Trees trở nên hữu ích trong trường hợp mạng phi tập trung.

Như chúng ta đã thảo luận trước đó, việc sử dụng thuật toán băm phụ thuộc vào việc triển khai. Tuy nhiên, một trong những hàm băm phổ biến nhất được sử dụng bao gồm hàm băm mật mã SHA-2.

Vì vậy, một giao dịch có thể được xác minh nếu các giao dịch trước đó có thể xác minh được, nhờ vào các giá trị băm.

Còn về tính toàn vẹn của dữ liệu?

Cây Merkle là lý tưởng cho tính toàn vẹn của dữ liệu. Ngoài ra, không cần phải thực hiện toàn bộ giao dịch để xem khả năng xác minh của nó. Các giao dịch có thể được xác minh bằng việc sử dụng thông tin được lưu trữ trong tiêu đề khối. Giá trị gốc Merkle cũng được thay đổi tùy thuộc vào các giao dịch trước đó.

Điều này cũng có nghĩa là các giá trị gốc được thay đổi thường xuyên và có thể được sử dụng để xác minh các giao dịch gần như ngay lập tức.

Tất cả những thứ này nghe có vẻ hơi giống với hash-list, tuy nhiên, điều này không đúng. Đối với danh sách băm, bạn cần tải xuống danh sách đầy đủ để xác minh các giao dịch hoặc dữ liệu.

Trong trường hợp của cây Merkle, bạn có thể tải xuống nhánh và sau đó sử dụng nó để xác minh các giao dịch.

Không cần tải toàn bộ cây để xác minh giao dịch. Điều này cũng có nghĩa là toàn bộ cây có thể được chia thành các khối dữ liệu nhỏ có thể được sử dụng để xác minh các giao dịch trên toàn mạng. Khái niệm này được gọi là Merkle bằng chứng.

Bạn cũng có thể xem Merkle tree python – một triển khai Merkle tree trong Python bài báo.

Cách Merkle Trees hoạt động bằng Bitcoin

Bitcoin là tiền điện tử đầu tiên sử dụng cây Merkle một cách hiệu quả. Để đảm bảo rằng các giá trị băm được bảo vệ và không thể đảo ngược dễ dàng, nó sử dụng Thuật toán băm bảo mật SHA-256 nổi tiếng. Điều này cũng có nghĩa là giá trị băm đầu ra dài 256 bit. Về cốt lõi, cây Merkle được sử dụng để lưu trữ dữ liệu và cũng có thể cắt tỉa các giao dịch.

Cũng đọc, Cách bắt đầu với Blockchain

Trong bitcoin, mỗi khối được kết nối với các khối trước đó bằng cách sử dụng các giá trị băm. Đây là cách toàn bộ blockchain được tạo ra. Trong một khối, có các tiêu đề khối chứa thông tin quan trọng như:

  • Merkle Root Hash
  • Số phiên bản khối
  • Dấu thời gian
  • Nonce
  • Mục tiêu về độ khó khai thác
  • Khối băm trước

Để hiểu rõ hơn, chúng ta hãy xem sơ đồ bên dưới. Nó được lấy từ Báo cáo chính thức về bitcoin chinh no.

merkle-tree-in-bitcoin

Chú thích: Merkle cây bằng Bitcoin

Như bạn có thể thấy, nó yêu cầu người khai thác đưa các giao dịch vào khối. Sau khi hoàn thành, nó được băm và trở thành một phần của cây Merkle.

Việc sử dụng Merkle Trees, theo cách này, có thể mang lại nhiều lợi ích. Điều này bao gồm một lợi ích đáng chú ý, tức là Xác minh Thanh toán Đơn giản (SPV). Các SVP này là các nút cũng có thể được gọi là ứng dụng khách nhẹ. Vì vậy, họ phải làm những gì? Họ chỉ cần tải xuống các tiêu đề khối chuỗi dài nhất và do đó không phải tải xuống toàn bộ chuỗi khối. Để thực hiện tất cả những điều này, họ cần xác minh xem nó có các tiêu đề khối được lưu trữ cho chuỗi dài nhất hay không. Đây là cách triển khai Merkle tree được thực hiện bằng bitcoin.

Cuối cùng, SPV sau đó có thể sử dụng Bản đồ bằng chứng Merkle và xác minh giao dịch bằng cách sử dụng hàm băm gốc của cây Merkle.

Cách Merkle Trees được sử dụng trong Ethereum

Chuỗi khối Ethereum cũng sử dụng cây Merkle. Tuy nhiên, cách tiếp cận ở đây khác với cách bitcoin sử dụng nó. Trong Ethereum, Merkle Patricia Tree được sử dụng, đây là một phiên bản phức tạp của cây Merkle. Điều này có thể thực hiện được vì Ethereum hoàn chỉnh.

Nếu bạn muốn tìm hiểu thêm về cách cây Merkle hoạt động trong Ethereum, hãy xem bài đăng chi tiết đây.

Thực hiện các cây Merkle khác: Các trường hợp sử dụng

Tất nhiên, có những triển khai cây Merkle khác ở đó. Một trong những cái phổ biến nhất là Git – một hệ thống kiểm soát phiên bản phân tán. Nó được sử dụng bởi các lập trình viên từ khắp nơi trên thế giới để quản lý các dự án của họ.

Một triển khai hữu ích khác được thấy trong Hệ thống tệp liên hành tinh – một giao thức phân tán ngang hàng. Nó cũng là mã nguồn mở và cho phép các thiết bị máy tính tham gia và sử dụng hệ thống tệp phổ biến.

Ngay cả các cơ quan cấp giấy chứng nhận cũng sử dụng cây Merkle để làm lợi thế của họ. Họ sử dụng nó trong cơ chế tạo nhật ký tính minh bạch của chứng chỉ có thể xác minh được. Vì bản ghi rất lớn, cây Merkle cho phép máy tính xác minh nó mà không tốn quá nhiều thời gian và công sức.

Trường hợp sử dụng cuối cùng mà chúng ta sẽ thảo luận là các hệ thống cơ sở dữ liệu như Amazon DynamoDB và Apache Cassandra. Các cơ sở dữ liệu phân tán No-SQL này kiểm soát sự không nhất quán bằng cách sử dụng cây Merkle trong quá trình sao chép dữ liệu. Nếu có bất kỳ sự cố nào, nó có thể cập nhật hoặc sửa chữa dữ liệu bằng cách sử dụng quy trình sửa chữa chống entropy.

Tóm lại, việc sử dụng các trường hợp của cây Merkle bao gồm

  • Đồng bộ hóa dữ liệu
  • Xác minh dữ liệu
  • Xác minh tính nhất quán

Lợi ích của Merkle Trees

Trong phần này, chúng ta sẽ cùng tìm hiểu sơ qua về lợi ích của cây Merkle.

  • Xác thực tính toàn vẹn của dữ liệu: Nó có thể được sử dụng hiệu quả để xác nhận tính toàn vẹn của dữ liệu.
  • Tốn ít dung lượng đĩa: Merkle tree chiếm ít dung lượng đĩa so với các cấu trúc dữ liệu khác.
  • Thông tin nhỏ trên các mạng: Cây Merkle có thể được chia thành các thông tin nhỏ để xác minh.
  • Xác minh hiệu quả: Cấu trúc dữ liệu hiệu quả và chỉ mất một lúc để xác minh tính toàn vẹn của dữ liệu.

Phần kết luận

Cây Merkle là một trong những khái niệm quan trọng trong khoa học máy tính. Nó được sử dụng rộng rãi trong nhiều trường hợp sử dụng và việc sử dụng nó trong tiền điện tử đã tạo ra một công nghệ mang tính cách mạng, – blockchain.

Vậy bạn biết gì về cây Merkle? Bình luận bên dưới và hãy cho chúng tôi biết.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
Adblock
detector
map