科普:5分鐘內瞭解默克爾樹

買賣虛擬貨幣

簡單來說,雜湊樹(默克爾樹merkle trees)中,每個節點都標有一個資料塊的加密雜湊值。雜湊樹可以用來驗證任何一種在計算機中和計算機之間儲存、處理和傳輸的資料。它們可以幫助確保在點對點網路中從其他對等體收到的資料塊是原封不動地收到的,且沒有損壞,也沒有改變。

那麼讓我們來討論一下默克爾樹吧。

說到區塊鏈,我們有很多區塊,這些區塊會透過雜湊值的幫助連線在一起,我們知道每一個區塊都會擁有交易,可以是一個,也可以是100多個,那麼如果我們想要找出區塊本身的雜湊值,我們該怎麼做呢?是把整個區塊組合起來形成一個雜湊值呢?還是要找到每個交易的雜湊值?現在如果你想找到每個交易的雜湊值,你必須儲存所有的雜湊值,這樣一個區塊就不會只有1個雜湊值,而是有100個雜湊值,我們不希望我們只想得到1個雜湊值,而其中一個實現的方法就是藉助默克爾樹。

第一次看到默克爾樹時,它們可能會非常混亂,但實際上結構非常簡單。

每一棵樹都會有一個根,一組枝條,然後葉子從枝條的底部長出。

那麼要如何建立這棵樹呢,讓我們想象一下,在一個區塊中,我們有8個交易,而我們將開始收集每個交易的雜湊值,那麼對於8個交易,我們將會有8個雜湊值。現在,我們要做的是就找到第一個和第二個的值,然後是第三個和第四個,以此類推,直到最終得到這樣的東西: 

一旦我們有了所有的集體雜湊,我們就可以再次將它們組合起來,如下圖: 

最後在完成上述步驟後,我們將回到樹的根部,最終的默克爾樹則會入下圖所示:

然後在最後我們會把所有的東西結合起來,得到1到8的雜湊值,然後給整個區塊和裡面所有的交易標記上一個整體的雜湊值。

在這個例子中,我們可以看到最後是偶數,但是如果是一個奇數會是怎麼樣呢?我們只需重複交易,如[9,10,9,10]分支中所示的那樣。

最後,當我們在根部將所有這些組合在一起時,我們將留下默克爾樹的根部,且只有1個區塊的雜湊值。這在涉及區塊鏈時,是非常有用的,因為它限制了能夠處理所有區塊所需的記憶體,能夠只處理每個區塊的一個雜湊值,因此比必須處理每個區塊記憶體儲的100個雜湊值要高效得多。

大多數雜湊樹的實現都是二進位制的,這意味著每個分支下都會有1個葉子,但它們也一樣可以在其分支下使用更多的葉子節點。

作者:charlie rogers

編譯:公眾號@萌眼財經



免責聲明:

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

推荐阅读

;