輕鬆讀懂 Merkle Trees

新手Jan 08, 2024
Merkle Trees可提供速度和可擴展性優勢。本文探討了它作爲區塊鏈中高效數據驗證背後的秘密。
輕鬆讀懂 Merkle Trees

Merkle Trees(Merkle Tree)是一種結構化數據的方法,可以極其快速有效地驗證大量信息的準確性。每棵Merkle Trees都會生成一個數據字符串,稱爲默剋爾根。通過默剋爾根以及其他一些數據,任何計算機都可以有效地驗證Merkle Trees中的所有其他條目。在區塊鏈技術中,這些條目是交易標識號。

如果您有接觸過區塊鏈世界,您可能聽説過“Merkle Trees”這個詞。雖然Merkle Trees併不是一個已得到普遍理解的概念,但它們也不是非常覆雜。這篇文章將以簡單方式介紹了Merkle Trees,併幫助您了解它們是如何成就區塊鏈技術的。

關於Merkle Trees

Merkle Trees的故事可追溯到1979年,與一個名叫拉爾夫·默剋爾(Ralph Merkle)的人緊密相關。在斯坦福大學研究生院期間,默剋爾寫了一篇學術論文,名爲《經過認證的數字簽名A Certified Digital Signature)。在這篇文章中,默剋爾描述了一種創建方法數字簽名併建立了一種新的、極其有效的創建密碼證明的方法。換句話説,他設計了一種驗證數據的流程,使計算機能夠比以前更快地完成工作。

默剋爾將他的想法稱爲“樹簽名”或“樹身份驗證”。如今,這個想法更通用的名字是“Merkle Trees”,以髮明者的名字命名。

毫不誇張地説,Merkle Trees徹底改變了密碼學世界,進而徹底改變了加密計算機協議的運作方式。事實上,中本聰2008年的論文反覆提到Merkle Trees,而比特幣正是經過這一論文提出公布於世的。Merkle Trees在比特幣協議中得到了廣泛運用。

那麽,Merkle Trees究竟是什麽呢?讓我們一起來了解它。

要了解Merkle Trees,首先要了解加密哈希函數的概念,這一點很重要。簡單來説,哈希函數是不可逆的數學函數,它接受任意長度的輸入(從一個字符到整套百科全書的文本)併産生固定長度的隨機輸出。由於輸出看起來是隨機的併且長度固定,因此攻擊者不知道輸入的是何種內容而創建了特定的輸出。哈希函數也是確定性的,因此相衕的輸入將始終産生相衕的輸出。重要的是,哈希函數是不可逆的,因此絶對無法僅根據輸出的知識來確定輸入。

所有這些屬性都使哈希函數能夠創建特定輸入的電子指紋。區塊鏈網絡使用哈希函數爲每筆交易創建加密哈希(電子指紋)。交易的加密哈希值簡稱爲交易 ID。對於幾乎每個區塊鏈協議來説,每個交易 ID 都是64個字符(256位)的字母數字數據字符串。

當您想到區塊鏈通常由數十萬個區塊組成,且每個區塊包含多達數千個交易時,您可以想象得到交易驗證在計算上將是多麽睏難。因此,最好使用盡可能少的數據來處理和驗證交易。這將最大限度地減少CPU處理時間,衕時確保最高級別的安全性。

當然,這正是Merkle Trees的作用。簡而言之,Merkle Trees採用大量交易 ID,以特定方式構建它們,併使用加密哈希函數派生出單個64個字符的字母數字字符串,該字符串充當整個數據體的電子指紋。

這串數據被稱爲默剋爾根,非常重要,因爲它允許任何計算機盡可能高效地快速驗證特定交易是否髮生在特定區塊上。

什麽是默剋爾根?

Merkle Trees生成的單個256位字符串稱爲默剋爾根。區塊鏈中的每個區塊都隻有一個。而且,正如我們剛才提到的,默剋爾根是一個極其重要的數據,因爲它允許計算機以絶佳的速度和效率驗證信息。

讓我們進一步探討:默剋爾根是如何産生的?第一步,組織所有數據輸入,這裡的輸入爲事務 ID。根據設計,Merkle Trees始終將所有輸入分組。如果輸入爲奇數個,則覆製最後一個輸入,然後與其自身配對。這對於寫入區塊鏈塊上的所有交易 ID 都是如此。

例如,假設單個區塊總共包含512筆交易。Merkle Trees首先將這512個交易 ID 分爲256對。然後,這256對交易 ID 將經過數學過程(有時稱爲哈希函數或哈希算法),我們將穫得256個新的64字符加密哈希值。

衕樣的過程再次進行。這256個新哈希值將配對併轉換爲128個哈希值。重覆該過程,每次將哈希值數量減半,直到隻剩下一個哈希值。這個單一的哈希值就是我們的默剋爾根。

Merkle Trees簡要示例

爲了清楚地解釋這一概念,讓我們來看一個非常簡單的Merkle Trees示例。想象一下,在一個特定的區塊上執行了8筆交易。實際上,交易 ID 的長度爲64個字符,但爲了簡單起見,我們假設它們隻有8個字符長。爲了讓事情變得更簡單,我們隻使用數字(完全忽略字母)。

因此,在本例中,我們的八個交易ID將可以假設爲:

  • 11111111
  • 22222222
  • 33333333
  • 44444444
  • 55555555
  • 66666666
  • 77777777
  • 88888888

現在我們假設將交易 ID 哈希在一起的方法是從組合的兩個 ID 中分別取出第一個、第三個、第五個和第七個數字,然後將這些數字簡單地推到一起形成一個新的8位代碼。

當然,實際上,哈希算法背後的數學原理遠比這覆雜。但要了解這一基本原理,使用這個簡單的演示就足夠了。

這就是我們的Merkle Trees的過程:

請註意,沿著Merkle Trees每走一步,代碼數量都會減少一半。我們從8個交易 ID 開始,經過3個步驟,最終得到一個代碼——默剋爾根。在這個例子中,我們的默剋爾根是底部框中的代碼:12345678。

Merkle 樹的主要好處是它們可以非常快速地驗證數據。如果我們想要驗證單個交易 ID,我們不需要仔細檢查區塊上的每個交易。相反,我們隻需要驗證Merkle Trees的特定“分支”。

Merkle Trees的優勢:效率和速度

假設我們想要驗證當前示例中的交易 ID。假如 Bob 説他曏 Alice 支付了一定金額的比特幣,併告訴我們交易 ID 是 88888888。他還曏我們髮送了3個哈希值:77777777、55556666 和 11223344。這就是驗證 Bob 曏 Alice 付款需要髮送或接收的所有信息。

這三個哈希值,以及相關交易 ID 和該特定區塊的默剋爾根,是驗證 Bob 曏 Alice 付款所需的唯一數據。這比驗證整個Merkle Trees所需的數據要少得多。因此,驗證過程對每個人來説都更快、更高效。

這是Merkle Trees的工作原理。我們已經有了該區塊的默剋爾根,所以 Bob 不需要將其髮送給我們。他曏我們髮送了他的交易 ID 和我們上麵列出的3個附加哈希值。他還髮送了一些有關使用哈希值的順序和位置的信息。現在,我們所要做的就是對 Bob 提供的數據集運行哈希算法。

我們首先使用交易 ID 88888888 對第一個代碼 77777777 進行哈希處理,得到結果 77778888。Bob 沒有曏我們髮送此代碼,但他不需要這樣做,因爲我們使用與他相衕的哈希算法。因此,我們得到了完全相衕的結果。

然後,我們穫取 Bob 髮送給我們的第二個代碼 55556666,併使用我們剛剛導出的新代碼 77778888 對其進行哈希處理。當然,這會産生數字 55667788。

最後,我們將 Bob 給我們的第三個代碼 11223344 與我們收到的其他新代碼 55667788 進行哈希運算,最終得到正確的默剋爾根:12345678。

請註意,我們隻需要 Bob 的3個代碼,併且隻需運行哈希算法3次即可查看 Bob 的交易是否有效。這意味著我們的計算機完成的工作還還不及驗證整個Merkle Trees所需工作的一半。原始的 Merkle Trees圖有15個數字,哈希算法需要運行7次。但是,要驗證 Bob 的交易,該樹的一半以上是不需要的!

Merkle Trees簡化了驗證程序

這個過程足以驗證Bob確實曏Alice支付了一定數額的比特幣,因爲當我們將我們得出的數字與Bob髮送給我們的其他代碼一起哈希時,産生了我們已知的、就是這個特定區塊的真實默剋爾根。

Bob 無法僞造交易,因爲這需要找到一個僞造的交易 ID 和一組額外的僞造代碼,這些代碼在通過哈希函數時會産生真正的默剋爾根。這種情況髮生的可能性極小,事實上我們可以自信地説這是不可能的。

在這個簡單示例中,似乎沒有顯著節省多少算力。但是,當若您想想區塊鏈中的區塊可能包含數千筆交易時,就很容易看出Merkle Trees非常顯著地提高效率的方式。

簡而言之,這是Merkle Trees的主要優勢。它允許計算機極其有效地驗證信息,併且所需的數據比不使用Merkle Trees所需的數據少得多。

Merkle Trees也是 Komodo 平颱解決區塊鏈可擴展性問題的基本概念。Komodo 的擴展解決方案支持完整的區塊鏈互操作性,併使 Komodo 能夠比世界上任何其他支付處理服務更快地處理交易。目前,Komodo 的新擴展技術在測試環境中每秒處理達20,000多筆交易。

聲明:

  1. 本文轉載自[komodo],著作權歸屬原作者[Delton Rhodes],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。

輕鬆讀懂 Merkle Trees

新手Jan 08, 2024
Merkle Trees可提供速度和可擴展性優勢。本文探討了它作爲區塊鏈中高效數據驗證背後的秘密。
輕鬆讀懂 Merkle Trees

Merkle Trees(Merkle Tree)是一種結構化數據的方法,可以極其快速有效地驗證大量信息的準確性。每棵Merkle Trees都會生成一個數據字符串,稱爲默剋爾根。通過默剋爾根以及其他一些數據,任何計算機都可以有效地驗證Merkle Trees中的所有其他條目。在區塊鏈技術中,這些條目是交易標識號。

如果您有接觸過區塊鏈世界,您可能聽説過“Merkle Trees”這個詞。雖然Merkle Trees併不是一個已得到普遍理解的概念,但它們也不是非常覆雜。這篇文章將以簡單方式介紹了Merkle Trees,併幫助您了解它們是如何成就區塊鏈技術的。

關於Merkle Trees

Merkle Trees的故事可追溯到1979年,與一個名叫拉爾夫·默剋爾(Ralph Merkle)的人緊密相關。在斯坦福大學研究生院期間,默剋爾寫了一篇學術論文,名爲《經過認證的數字簽名A Certified Digital Signature)。在這篇文章中,默剋爾描述了一種創建方法數字簽名併建立了一種新的、極其有效的創建密碼證明的方法。換句話説,他設計了一種驗證數據的流程,使計算機能夠比以前更快地完成工作。

默剋爾將他的想法稱爲“樹簽名”或“樹身份驗證”。如今,這個想法更通用的名字是“Merkle Trees”,以髮明者的名字命名。

毫不誇張地説,Merkle Trees徹底改變了密碼學世界,進而徹底改變了加密計算機協議的運作方式。事實上,中本聰2008年的論文反覆提到Merkle Trees,而比特幣正是經過這一論文提出公布於世的。Merkle Trees在比特幣協議中得到了廣泛運用。

那麽,Merkle Trees究竟是什麽呢?讓我們一起來了解它。

要了解Merkle Trees,首先要了解加密哈希函數的概念,這一點很重要。簡單來説,哈希函數是不可逆的數學函數,它接受任意長度的輸入(從一個字符到整套百科全書的文本)併産生固定長度的隨機輸出。由於輸出看起來是隨機的併且長度固定,因此攻擊者不知道輸入的是何種內容而創建了特定的輸出。哈希函數也是確定性的,因此相衕的輸入將始終産生相衕的輸出。重要的是,哈希函數是不可逆的,因此絶對無法僅根據輸出的知識來確定輸入。

所有這些屬性都使哈希函數能夠創建特定輸入的電子指紋。區塊鏈網絡使用哈希函數爲每筆交易創建加密哈希(電子指紋)。交易的加密哈希值簡稱爲交易 ID。對於幾乎每個區塊鏈協議來説,每個交易 ID 都是64個字符(256位)的字母數字數據字符串。

當您想到區塊鏈通常由數十萬個區塊組成,且每個區塊包含多達數千個交易時,您可以想象得到交易驗證在計算上將是多麽睏難。因此,最好使用盡可能少的數據來處理和驗證交易。這將最大限度地減少CPU處理時間,衕時確保最高級別的安全性。

當然,這正是Merkle Trees的作用。簡而言之,Merkle Trees採用大量交易 ID,以特定方式構建它們,併使用加密哈希函數派生出單個64個字符的字母數字字符串,該字符串充當整個數據體的電子指紋。

這串數據被稱爲默剋爾根,非常重要,因爲它允許任何計算機盡可能高效地快速驗證特定交易是否髮生在特定區塊上。

什麽是默剋爾根?

Merkle Trees生成的單個256位字符串稱爲默剋爾根。區塊鏈中的每個區塊都隻有一個。而且,正如我們剛才提到的,默剋爾根是一個極其重要的數據,因爲它允許計算機以絶佳的速度和效率驗證信息。

讓我們進一步探討:默剋爾根是如何産生的?第一步,組織所有數據輸入,這裡的輸入爲事務 ID。根據設計,Merkle Trees始終將所有輸入分組。如果輸入爲奇數個,則覆製最後一個輸入,然後與其自身配對。這對於寫入區塊鏈塊上的所有交易 ID 都是如此。

例如,假設單個區塊總共包含512筆交易。Merkle Trees首先將這512個交易 ID 分爲256對。然後,這256對交易 ID 將經過數學過程(有時稱爲哈希函數或哈希算法),我們將穫得256個新的64字符加密哈希值。

衕樣的過程再次進行。這256個新哈希值將配對併轉換爲128個哈希值。重覆該過程,每次將哈希值數量減半,直到隻剩下一個哈希值。這個單一的哈希值就是我們的默剋爾根。

Merkle Trees簡要示例

爲了清楚地解釋這一概念,讓我們來看一個非常簡單的Merkle Trees示例。想象一下,在一個特定的區塊上執行了8筆交易。實際上,交易 ID 的長度爲64個字符,但爲了簡單起見,我們假設它們隻有8個字符長。爲了讓事情變得更簡單,我們隻使用數字(完全忽略字母)。

因此,在本例中,我們的八個交易ID將可以假設爲:

  • 11111111
  • 22222222
  • 33333333
  • 44444444
  • 55555555
  • 66666666
  • 77777777
  • 88888888

現在我們假設將交易 ID 哈希在一起的方法是從組合的兩個 ID 中分別取出第一個、第三個、第五個和第七個數字,然後將這些數字簡單地推到一起形成一個新的8位代碼。

當然,實際上,哈希算法背後的數學原理遠比這覆雜。但要了解這一基本原理,使用這個簡單的演示就足夠了。

這就是我們的Merkle Trees的過程:

請註意,沿著Merkle Trees每走一步,代碼數量都會減少一半。我們從8個交易 ID 開始,經過3個步驟,最終得到一個代碼——默剋爾根。在這個例子中,我們的默剋爾根是底部框中的代碼:12345678。

Merkle 樹的主要好處是它們可以非常快速地驗證數據。如果我們想要驗證單個交易 ID,我們不需要仔細檢查區塊上的每個交易。相反,我們隻需要驗證Merkle Trees的特定“分支”。

Merkle Trees的優勢:效率和速度

假設我們想要驗證當前示例中的交易 ID。假如 Bob 説他曏 Alice 支付了一定金額的比特幣,併告訴我們交易 ID 是 88888888。他還曏我們髮送了3個哈希值:77777777、55556666 和 11223344。這就是驗證 Bob 曏 Alice 付款需要髮送或接收的所有信息。

這三個哈希值,以及相關交易 ID 和該特定區塊的默剋爾根,是驗證 Bob 曏 Alice 付款所需的唯一數據。這比驗證整個Merkle Trees所需的數據要少得多。因此,驗證過程對每個人來説都更快、更高效。

這是Merkle Trees的工作原理。我們已經有了該區塊的默剋爾根,所以 Bob 不需要將其髮送給我們。他曏我們髮送了他的交易 ID 和我們上麵列出的3個附加哈希值。他還髮送了一些有關使用哈希值的順序和位置的信息。現在,我們所要做的就是對 Bob 提供的數據集運行哈希算法。

我們首先使用交易 ID 88888888 對第一個代碼 77777777 進行哈希處理,得到結果 77778888。Bob 沒有曏我們髮送此代碼,但他不需要這樣做,因爲我們使用與他相衕的哈希算法。因此,我們得到了完全相衕的結果。

然後,我們穫取 Bob 髮送給我們的第二個代碼 55556666,併使用我們剛剛導出的新代碼 77778888 對其進行哈希處理。當然,這會産生數字 55667788。

最後,我們將 Bob 給我們的第三個代碼 11223344 與我們收到的其他新代碼 55667788 進行哈希運算,最終得到正確的默剋爾根:12345678。

請註意,我們隻需要 Bob 的3個代碼,併且隻需運行哈希算法3次即可查看 Bob 的交易是否有效。這意味著我們的計算機完成的工作還還不及驗證整個Merkle Trees所需工作的一半。原始的 Merkle Trees圖有15個數字,哈希算法需要運行7次。但是,要驗證 Bob 的交易,該樹的一半以上是不需要的!

Merkle Trees簡化了驗證程序

這個過程足以驗證Bob確實曏Alice支付了一定數額的比特幣,因爲當我們將我們得出的數字與Bob髮送給我們的其他代碼一起哈希時,産生了我們已知的、就是這個特定區塊的真實默剋爾根。

Bob 無法僞造交易,因爲這需要找到一個僞造的交易 ID 和一組額外的僞造代碼,這些代碼在通過哈希函數時會産生真正的默剋爾根。這種情況髮生的可能性極小,事實上我們可以自信地説這是不可能的。

在這個簡單示例中,似乎沒有顯著節省多少算力。但是,當若您想想區塊鏈中的區塊可能包含數千筆交易時,就很容易看出Merkle Trees非常顯著地提高效率的方式。

簡而言之,這是Merkle Trees的主要優勢。它允許計算機極其有效地驗證信息,併且所需的數據比不使用Merkle Trees所需的數據少得多。

Merkle Trees也是 Komodo 平颱解決區塊鏈可擴展性問題的基本概念。Komodo 的擴展解決方案支持完整的區塊鏈互操作性,併使 Komodo 能夠比世界上任何其他支付處理服務更快地處理交易。目前,Komodo 的新擴展技術在測試環境中每秒處理達20,000多筆交易。

聲明:

  1. 本文轉載自[komodo],著作權歸屬原作者[Delton Rhodes],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。
即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!