Merkle樹是區塊鏈技術的基本組成部分。它是由不同數據塊的散列組成的數學數據結構,用作塊中所有交易的摘要。它還允許對大量數據中的內容進行有效和安全的驗證。此結構有助於驗證數據的一致性和內容。比特幣和以太坊都使用Merkle樹結構。Merkle樹也被稱為哈希樹。
Merkle樹的概念以1979年為該概念申請專利的Ralph Merkle命名。從根本上說,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樹有三大好處:
- 它們提供了維護數據完整性和有效性的方法。
- 它們有助於節省記憶體或磁片空間,因為證明在計算上容易且快速。
- 它們的證明和管理需要通過網路傳輸少量資訊。