Merkle Tree(默克爾雜湊樹)101

買賣虛擬貨幣
當我遇到“區塊鏈”這個術語時,首先讓我感興趣的是:“區塊鏈為什麼能提供資料的安全性和不變性?”因此,最好的辦法就是做一些研究。

當我瀏覽不同的文章時,每次出現的術語都是Merkle tree,以及它如何利用密碼學和“樹”資料結構為區塊鏈提供不變性。但是在理解Merkle如何工作之前,我們首先需要熟悉雜湊值指標。在學習c語言指標的時候,就足以讓我們絞盡腦汁了。這裡的指標是指儲存其他變數地址的簡單變數。

指標P1儲存值8000的地址,即5000(地址8000)

那麼,什麼是雜湊值指標呢?

雜湊值指標是一個帶有加密雜湊值附加屬性的指標。雜湊值指標由兩部分組成:

· 指向某些資料儲存位置的指標。
· 資料塊的加密雜湊值(由資料和雜湊值指標組成)。


雜湊指標

雜湊值指標能給我們帶來什麼?。雜湊值指標有助於檢測資料篡改。讓我們來看看:

用例:用於檢測資料篡改的雜湊指標

術語

·  H( ):雜湊值指標,包含第一個塊(即最右邊的塊)的地址和儲存在其中的整個塊的加密雜湊值(資料+雜湊指標)。
·  h2, H2, H3:儲存在從右到左的塊中的雜湊值指標。
·  塊1,塊2,塊3:資料塊,從右向左移動。

現在假設我們改變塊3中的一些資料。

· 因為H2是儲存在塊3的加密雜湊值中。因此H2的值也會隨之塊3的值的改變而改變,其他雜湊值指標的值也會隨之改變。

· 現在,我們如何檢查資料是否被篡改了呢?我們需要驗證的是頭指標的雜湊指標值(在本例中,最右邊的H()指向塊1)。如果值不匹配,則表示資料被篡改。


Merkle樹

現在,我們裝備了了解Merkle Tree的工具。那麼,merkle樹是什麼呢?讓我們來看看:

根據維基百科的解釋:在密碼學和電腦科學中,Merkle Tree,通常也被稱作Hash Tree,顧名思義,就是儲存雜湊值的一棵樹。Merkle樹的葉子是資料塊(例如,檔案或者檔案的集合)的雜湊值。非葉節點是其對應子節點串聯字串的雜湊值。

簡單的樹資料結構使用指標指向它的子節點,但是對於Merkle樹,我們使用雜湊值指標來儲存它的子節點的地址以及子節點的雜湊值。


區塊鏈使用merkle樹來儲存交易

區塊鏈使用merkle樹儲存事務。Merkle如何提供不變性?

·  假設我更改了葉子節點中的任何事務。雜湊值指標在它的父節點也需要改變,隨後雜湊值根節點的指標需要大量的計算,我們需要做的就是檢測區塊鏈中的任何篡改是透過驗證起源的雜湊指標塊(區塊鏈中的第一個塊)。

·  Merkle樹還用於透過檢查某個特定塊中事務的加密雜湊值是否存在來驗證某個塊中事務的成員關係。

優勢:

· 樹包含許多項,但是您只需要記住根節點的加密雜湊值即可。
· 可以在0(log n)時間/空間複雜度中驗證事務的成員關係。
· 能在0(log n)時間內在排序的merkle樹中驗證非成員資格(檢查缺失項之前和之後的專案)。


更多區塊鏈資訊:www.qukuaiwang.com.cn/news

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;