難以篡改的Merkle trees

買賣虛擬貨幣

梅克爾樹簡介

梅克爾樹(Merkle trees)是區塊鏈的基本組成部分。梅克爾樹,又叫雜湊樹,顧名思義,就是儲存hash值的一棵樹。是一種二叉樹,由一個根節點、一組中間節點和一組葉節點組成。最下面的葉節點包含儲存資料或其雜湊值,每個中間節點是它的兩個子節點內容的雜湊值,根節點也是由它的兩個子節點內容的雜湊值組成。

梅克爾樹有父節點,子節點,兄弟節點之分。

根據梅克爾樹的資料結構,我們可以清楚的瞭解到,只要我們記住最前面的根節點的雜湊值,我們就可以根據雜湊值回溯到表中的任意位置,這讓我們能保證表中的資料儲存不被篡改。

如果有人篡改了梅克爾樹底部的一些資料區塊,會導致其父節點的雜湊值改變,這一篡改也將引起更上一層的雜湊值的改變,直到引起根節點雜湊值的改變,而此時,資料篡改已經暴露,因為我們儲存了根節點的雜湊值。

因此,只要我們記住根節點的雜湊值,任何企圖篡改資料的行為都會被檢測到,這讓資料篡改變得不可能實現。

梅克爾樹的特點

1、防止資料區塊篡改

由於梅克爾樹的結構特點,對於資料的修改,會造成父節點雜湊值的改變,而這一改變最終體現在根節點的雜湊值改變上,根節點的不同則直接暴露了資料的篡改。

2、快速查詢或驗證

如下圖所示,分別是12、5、18、2、9、15、19、17、16一列資料。

此時的規則是,子節點比父節點大,則放在樹的右邊,子節點比父節點小,則放在樹的左邊,我們若想找到9的位置,只需要驗證三次即可。

第一步,9與根節點12對比,9<12,則我們去樹的左邊去找

第二步,9與5對比,9>5,我們則去5的右邊去找,

第三步,找到最終的資料

實踐證明,這樣可以大大提高查詢的效率。

3、節點儲存雜湊值

4、從葉子節點開始造樹

梅克爾證明

從上面的簡介中我們可以看到,整個梅克爾樹,只要掌握了根節點,其他裡面的子節點所儲存的等於是一手掌握。因為,任何一個子節點的絲毫變動都會引起根節點的變動,這就引出了基於梅克爾樹的證明:梅克爾證明。

一顆梅克爾樹包含了根節點雜湊,以及所有沿資料塊到根路徑雜湊的“分支”資料,而這裡面最重要的無疑就是根節點雜湊,在根節點公開並且可信的情況下, 我們要驗證梅克爾樹裡任一個資料的完整性和正確性,只要驗證根節點雜湊值即可,這就使梅克爾樹形成了一種機制,透過驗證很小的的資料(例如跟節點雜湊),即可以驗證一個大型資料庫的完整性與正確性。

市值排名前兩位的BTC/" target="_blank"">比特幣系統和以太坊系統都採用了梅克爾證明。當然,它們使用也是有所區別的。

這將牽扯到系統區塊的組成等內容,在之後的知識學習與分享中,我們再來探討。

免責聲明:

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

推荐阅读

;