什么是 Merkle Tree?Merkle Tree解答!

什么是 Merkle Tree?下面小編給大家介紹一下,希望你能喜歡!
一、什么是 Merkle Tree?
Merkle Tree,是一種樹(數據結構中所說的樹),網上大都稱為Merkle Hash Tree,這是因為 它所構造的Merkle Tree的所有節點都是Hash值 。Merkle Tree具有以下特點:
1. 它是一種樹,可以是二叉樹 , 也可以多叉樹,無論是幾叉樹,它都具有樹結構的所有特點;
2. Merkle樹的葉子節點上的value,是由你指定的,這主要看你的設計了 , 如Merkle Hash Tree會將數據的Hash值作為葉子節點的值;
3 非葉子節點的value是根據它下面所有的葉子節點值,然后按照一定的算法計算而得出的 。如Merkle Hash Tree的非葉子節點value的計算方法是將該節點的所有子節點進行組合,然后對組合結果進行hash計算所得出的hash value 。
例如,下圖就是一個Merkle Hash Tree形狀,如果它是Merkle Hash Tree,則節點7的hash value必須是通過節點15、16上的value計算而得到.

什么是 Merkle Tree?Merkle Tree解答!

二、 Merkle Tree的應用
目前,在計算機領域,Merkle Tree大多用來進行比對以及驗證處理 。比特幣錢包服務用 Merkle Tree 的機制來作”百分百準備金證明“。在處理比對或驗證的應用場景中時,特別是在分布式環境下進行比對或驗證時,Merkle Tree會大大減少數據的傳輸量以及計算的復雜度 。例如 , 就拿圖一舉例,假如是 15,16.......30是一個個數據塊的hash值 , 我把這些數據從A傳輸到B,數據傳輸到B后 , 我想驗證下傳輸到B上的數據的有效性型(驗證數據是否在傳輸過程中發生變化),只需要驗證A 和 B上所構造的MerkleTree的root節點值是否一致即可 , 如果一致,表示數據是有效的,傳輸過程中沒有發生改變 。假如在傳輸過程中,15對應的數據被人篡改,通過Merkle Tree很容易定位找到(因為此時,節點0,1,3,7,15對應的hash值都發生了變化),定位的時間復雜度為O(log(n))
三、Merkle Tree的優點
【什么是 Merkle Tree?Merkle Tree解答!】相對于 Hash List,Merkle Tree 的明顯的一個好處是可以單獨拿出一個分支來(作為一個小樹)對部分數據進行校驗,這個很多使用場合就帶來了哈希列表所不能比擬的方便和高效 。

相關經驗推薦