Merkle樹是區塊鏈技術的基本組成部分。它是由不同資料塊的雜湊組成的數學資料結構,用作塊中所有交易的摘要。它還允許對大量資料中的內容進行有效和安全的驗證。此結構有助於驗證資料的一致性和內容。位元幣和以太坊都使用Merkle樹結構。Merkle樹也被稱為雜湊樹。
Merkle樹的概念以1979年為該概念申請專利的Ralph Merkle命名。從根本上說,Merkle樹是資料結構樹,其中每個葉節點都用資料塊的雜湊標記,非葉節點用加密標記 其子節點標籤的雜湊值。葉節點是樹中的最低節點。
Merkle樹通過生成整個交易集的數位指紋來儲存塊中的所有交易。它允許使用者驗證交易是否包含在塊中。
通過重複計算節點的雜湊對來建立Merkle樹,直到只剩下一個雜湊。此雜湊稱為Merkle Root或Root Hash。Merkle樹採用自下而上的方式構建。
每個葉節點都是事務資料的雜湊,非葉節點是其先前雜湊的雜湊。Merkle樹是二進位制的,因此它需要偶數個葉節點。如果存在奇數個事務,則最後一個雜湊將被複製一次以建立偶數個葉節點。
上面的例子是Merkle樹最常見和最簡單的形式,即二進位制Merkle樹。塊中有四個交易:TX1,TX2,TX3和TX4。在這裡可以看到,有一個頂級雜湊是整個樹的雜湊,稱為Root Hash或Merkle Root。這些中的每一個都被重複雜湊,並儲存在每個葉節點中,從而產生雜湊0,1,2和3.然後,通過雜湊Hash0和Hash1,在父節點中彙總連續的葉節點對,從而產生Hash01,並且分別 雜湊Hash2和Hash3,產生Hash23。然後再對兩個雜湊值(Hash01和Hash23)進行雜湊處理以生成Root Hash或Merkle Root。
Merkle Root儲存在塊頭中。塊頭是位元幣塊的一部分,它在挖掘過程中得到雜湊值。它包含最後一個塊的雜湊值,一個Nonce以及Merkle樹中當前塊中所有事務的Root Hash。因此,在塊頭中具有Merkle根使得事務防篡改。由於此Root Hash包含塊內所有事務的雜湊值,因此這些交易可能會導致節省磁碟空間。
Merkle樹維護資料的完整性。如果事務中的任何單個細節或事務的順序發生更改,則這些更改將反映在該事務的雜湊中。此更改會將Merkle樹級聯到Merkle Root,更改Merkle根的值,從而使塊無效。因此,每個人都可以看到Merkle樹允許快速簡單地測試特定交易是否包含在集合中。
Merkle樹有三大好處: