Khám phá cách Merkle Tree mang lại lợi ích cho công nghệ blockchain

Trong bài viết này, chúng ta sẽ cùng tìm hiểu một cái nhìn tổng quan về chủ đề Merkle Tree bằng các thuật ngữ dễ hiểu cho tất cả mọi người.

6915Total views
Kham pha cach Merkle Tree mang lai loi ich cho cong nghe blockchain - anh 1
Khám phá cách Merkle Tree mang lại lợi ích cho công nghệ blockchain

Nội dung chính

Merkle Tree là một thuật ngữ phổ biến mà bạn sẽ bắt gặp khi bắt đầu đọc các chủ đề kỹ thuật nâng cao về cấu trúc blockchain. 

Bài viết này sẽ cung cấp một cái nhìn tổng quan về chủ đề Merkle Tree bằng các thuật ngữ đơn giản và với ngữ cảnh thích hợp. Đọc phần này, đáp ứng thuật ngữ này và chuyển sang các chủ đề thú vị hơn có thể tận dụng rất tốt những lợi ích mà Merkle Tree mang lại. Bài viết này có những phần nội dung chính như sau:

  • Bối cảnh về cấu trúc blockchain: Phần này giới thiệu về block transactions và block headers được cung cấp cho ngữ cảnh về cấu trúc blockchain, giúp hiểu được những lợi ích cụ thể mà cây Merkle mang lại sau này.
  • Merkle Tree: Merkle Tree và các bộ phận cấu thành của chúng được giới thiệu và giải thích.
  • Lợi ích của Merkle Tree: Một số lợi ích quan trọng mà Merkle mang lại cho blockchain sẽ được khám phá.
Kham pha cach Merkle Tree mang lai loi ich cho cong nghe blockchain - anh 2

Block Transactions

Đầu tiên, chúng ta hãy suy nghĩ về cách blockchain xử lý các giao dịch. Lấy mạng Bitcoin làm ví dụ, bất kỳ giao dịch nào xảy ra trên mạng đều được ghi lại thông qua một “block”. Nếu tôi muốn gửi Bitcoin đối tác, giao dịch này sẽ được đưa vào một khối nhằm mục đích phê duyệt của mạng trước khi có thể gửi. Mỗi khối thường bao gồm hàng trăm hoặc hàng nghìn giao dịch như thế này từ những người khác nhau. Sau khi một khối được “khai thác” và được mạng chấp nhận, nó sẽ được liên kết với khối được chấp nhận trước đó (trong một chuỗi dữ liệu) và tất cả các giao dịch trong khối đó được xác nhận. Mỗi khối chứa thông tin về ngày và giờ nó được thêm vào mạng cũng như các giao dịch cụ thể có trong nó và được liên kết với nhau một cách an toàn để ngăn chặn bất kỳ khối nào bị thay đổi hoặc di chuyển ra khỏi chuỗi hiện có.

Shape, rectangle  Description automatically generated

Block Headers

Mỗi khối được chấp nhận trên mạng Bitcoin có thể được xác định bằng một hàm băm duy nhất, chỉ là một mã định danh (hoặc tên) gồm 64 ký tự cho khối đó bao gồm cả chữ cái và số ngẫu nhiên. Ví dụ: 00000000000000000000590fc0f3eba193a278534220b2b37e9849e1a770ca959 là hàm băm cho khối #700.000 trên mạng Bitcoin (hãy nhớ rằng, các khối xảy ra trong một chuỗi tuần tự, vì vậy đây là khối thứ 700.000 sau khối ban đầu #0). Nếu bạn tìm kiếm một hàm băm cụ thể trên các trình khám phá như Blockstream Explorer, thông tin chi tiết về khối cụ thể đó sẽ được cung cấp.

Kham pha cach Merkle Tree mang lai loi ich cho cong nghe blockchain - anh 3

Băm cho một khối được tạo bằng cách “hashing” cái được gọi là ‘block header’ cho khối đó. Hashing trong ngữ cảnh này chỉ đơn giản có nghĩa là lấy dữ liệu làm đầu vào (tức là block header), xáo trộn dữ liệu đó và tạo ra một đầu ra có độ dài cố định duy nhất (tức là hàm băm khối 64 ký tự). Các công cụ khai thác bitcoin trên toàn thế giới đang cạnh tranh với nhau bằng cách băm block header vô số lần để tìm ra hàm băm chính xác do thuật toán Proof of Work của Bitcoin đặt ra. Phần thưởng cho người khai thác đầu tiên giải được hàm băm chính xác là 6,25 BTC, sau đó quá trình bắt đầu lại cho khối tiếp theo.

Trước tiên chúng ta sẽ cùng làm rõ định nghĩa Block Headers. Hãy nghĩ về Block Header như một bản tóm tắt tất cả các mục quan trọng liên quan đến từng khối (chi tiết khai thác, các giao dịch được bao gồm trong đó…). Bản tóm tắt này có dạng một trường dữ liệu và chứa sáu mục:

Version number

  • Previous block’s hash
  • Merkle root of the transactions included in the block
  • Timestamp
  • Mining difficulty value
  • Proof of work nonce

Hình bên dưới là ví dụ về định dạng thập lục phân của một Block Header.
Graphical user interface, text  Description automatically generated
Các màu riêng lẻ trong đoạn mã trên tương ứng với từng mục trong số sáu mục của block header trước đó. Sau khi được băm và được mạng chấp nhận, các đầu vào này sẽ xác định khối cũng như các khối tiếp theo theo sau (do kết quả băm của khối này sẽ là đầu vào cho header của khối tiếp theo).

Merkle Tree

Cây Merkle là một cấu trúc dữ liệu cho phép chúng ta tóm tắt một tập dữ liệu lớn một cách hiệu quả. Khi được áp dụng cho các blockchain, Merkle Tree được sử dụng để tóm tắt một số lượng lớn các giao dịch blockchain (chẳng hạn như các giao dịch xảy ra trong mỗi khối Bitcoin) theo cách hiệu quả về dữ liệu.

‘Tóm tắt’ này được thực hiện một lần nữa thông qua băm. Lấy phần dưới đây là đại diện cho cấu trúc Merkle Tree cơ bản.

Chart  Description automatically generated with low confidence

Khi được áp dụng cho một khối Bitcoin, các Leaf node ở dưới cùng của cấu trúc này đại diện cho ID giao dịch (hoặc giá trị băm) của mọi giao dịch riêng lẻ có trong một khối. Lớp này về cơ bản là kết xuất dữ liệu. Mỗi node phía trên các Leaf node khác nhau đại diện cho một hàm băm của cặp bên dưới nó. Lưu ý rằng một “node” ở đây chỉ đề cập đến một phần riêng lẻ của cấu trúc dữ liệu lớn hơn.

Như đã giải thích trước đây, bạn có thể coi hàm băm là một cách để chuyển đổi đầu vào dữ liệu có kích thước bất kỳ thành đầu ra duy nhất có kích thước cố định. Hình ảnh dưới đây là một ví dụ minh họa. Bất kể kích thước hoặc sự thay đổi nhỏ trong đầu vào ở phía bên trái, hàm băm sẽ mang lại một đầu ra hoàn toàn khác với kích thước cố định ở bên phải.

Diagram  Description automatically generated

Một quy trình tương tự áp dụng với Merkle Tree. Mỗi lá được ghép nối với một lá khác và được băm để tạo ra một lớp gồm các node được băm bên trên nó. Các node lớp thứ hai này trong cây không chứa ID giao dịch, mà lưu trữ hàm băm của hai left node bên dưới mà chúng hiện đại diện. Quá trình băm được ghép nối này được tiếp tục trên cây cho đến khi chỉ còn lại một node – được gọi là Merkle root.

Merkle root (gốc Merkle) đại diện cho giá trị băm của tất cả các nút và giao dịch riêng lẻ bên dưới nó. Nếu một chi tiết duy nhất trong bất kỳ giao dịch/lá nào thay đổi, gốc Merkle cũng vậy. Nếu các giao dịch (hoặc lá) vẫn giống hệt nhau nhưng được liệt kê theo một thứ tự khác ở dưới cùng của cây, thì gốc Merkle cũng sẽ thay đổi. Do đó, gốc Merkle đóng vai trò là bằng chứng mật mã về các giao dịch nằm trong một khối và thứ tự của chúng.

Tiếp theo chúng ta hãy xem Merkle Tree mang lại lợi ích như thế nào cho các blockchain.

Merkle Tree mang lại lợi ích như thế nào cho blockchain.

Như bạn có thể nhớ lại, một trong những mục có trong mỗi block header là gốc Merkle của các giao dịch trong khối đó:

Kham pha cach Merkle Tree mang lai loi ich cho cong nghe blockchain - anh 4


Như đã giải thích trước đây, gốc Merkle của một khối là dấu vân tay kỹ thuật số của toàn bộ tập hợp các giao dịch có trong khối đó. Tiếp theo chúng ta sẽ tìm hiểu những lợi ích cơ bản mà Merkle Tree mang đến cho blockchain.

Xác minh dữ liệu blockchain

Với cây Merkle, quy trình xác minh dữ liệu blockchain sẽ hiệu quả và không yêu cầu tải xuống dữ liệu của tất cả các giao dịch xảy ra trong một khối. Chỉ cần biết ID giao dịch (hoặc lá) được đề cập, gốc Merkle và “nhánh” bao gồm tất cả các giá trị băm trên đường dẫn từ lá đến gốc, dữ liệu có thể được xác minh. Các “bằng chứng” Merkle này cho phép xác thực hiệu quả một lượng nhỏ dữ liệu trong các cơ sở dữ liệu lớn có kích thước tiềm năng không giới hạn. Nói cách khác, Merkle tree và bằng chứng cung cấp một bài kiểm tra nhanh hơn và đơn giản hơn nhiều về việc liệu một giao dịch cụ thể có được bao gồm trong một khối hay không.

Kham pha cach Merkle Tree mang lai loi ich cho cong nghe blockchain - anh 5

Xác minh thanh toán đơn giản

Hãy mở rộng các lợi ích xác minh được giới thiệu trong phần trước sang một khái niệm quen thuộc hơn – giao dịch tiền mã hóa ngang hàng. Nếu không có những lợi ích mà bằng chứng Merkle mang lại trong việc xác minh các giao dịch riêng lẻ, chúng ta sẽ rất khó gửi và nhận tiền mã hóa từ ví cá nhân qua điện thoại và máy tính của mình.

Satoshi Nakamoto thực sự đã giới thiệu lợi ích này trong phần 8 của sách trắng Bitcoin và mô tả khái niệm này là “xác minh thanh toán đơn giản hóa” (simplified payment verification – SPV).

Kham pha cach Merkle Tree mang lai loi ich cho cong nghe blockchain - anh 6

Khi người gửi gửi bitcoin cho người nhận, đây là giao dịch giữa các “node” (tức là các máy tính được kết nối với mạng Bitcoin đóng vai trò là trụ cột trong mạng hoạt động bình thường). Do đó, mỗi ví tiền điện tử của chúng ta là một node. Để ví có thể xác minh và xử lý giao dịch thanh toán như thế này, cần phải có kiến thức nhất định về toàn bộ mạng Bitcoin. Ví dụ: Một người phải có khả năng liên kết giao dịch với một khối cụ thể trong mạng mà nó được đưa vào. Nếu không, việc xác minh sẽ không thể xảy ra.

Đối với kiến thức cần thiết để chạy các node đòi hỏi một lượng không gian lưu trữ rất lớn. Tuy nhiên, cũng có những node được gọi là node “nhẹ”. Thay vì lưu trữ các bản sao hoàn chỉnh của mạng, các node này chỉ tải xuống các bản sao của block header, mà như chúng ta biết chỉ chứa gốc Merkle của các giao dịch của khối. 

Câu hỏi được đặt ra là bao nhiêu dung lượng lưu trữ bởi SPV có thể thực hiện được nhờ Merkle Tree? Câu trả lời là: Một chiếc ví có thể lưu trữ tất cả các block header cần thiết trong khoảng 61 MB, bao gồm toàn bộ mạng Bitcoin (với 80 byte cho mỗi khối và khoảng 765.000 khối trong chuỗi). Tương phản điều này với hàng trăm gigabyte sẽ được yêu cầu để lưu trữ toàn bộ chuỗi nếu SPV không được sử dụng.

Hãy tưởng tượng bạn phải lưu trữ hàng trăm GB trên điện thoại của mình chỉ để gửi và nhận bitcoin bằng ví di động. Hiệu quả và ứng dụng thực tế của Merkle Tree trở nên vô cùng rõ ràng.

Lời kết

Merkle Tree đóng một thành phần kỹ thuật quan trọng trong cấu trúc của Bitcoin và một phần cho phép mọi người trên khắp thế giới gửi, nhận và xác minh các giao dịch bằng ví tiền điện tử có thể dễ dàng chạy qua máy tính cá nhân hoặc điện thoại thông minh. Hiệu quả mà cây Merkle mang lại trong việc lưu trữ, truyền và xác minh dữ liệu là rất lớn và cấu trúc được sử dụng trong Bitcoin đã ảnh hưởng đến nhiều public network khác ra đời sau đó.