什麼是默克爾樹?
默克爾樹是數據管理應用程序中使用的數據加密結構,其中數據是通過哈希算法以不同的方式發送的,以創建代表文件中所有數據的哈希。
比特幣和其他區塊鏈使用默克爾樹作為一種通過哈希交易和結果的哈希來更有效,更安全地編碼區塊鏈數據的方法,並將其產生到一個稱為默克爾根的哈希中。默克爾根用於創建塊哈希,這是一個塊的唯一標識符。
默克樹也稱為“二進制哈希樹”。
關鍵要點
- Merkle樹是編碼數據以方便驗證和更好安全性的結構化方法。
- 區塊鏈使用默克爾樹生成用於驗證交易並保護區塊的哈希。
- 默克爾樹的視覺表示與頂部的根類似於顛倒的樹。
- 在區塊鏈默克爾樹中使用的重複散列技術是有助於其不變性的機制之一。
了解默克樹
默克爾樹以拉爾夫·默克爾(Ralph Merkle)的名字命名,他在1987年的論文中提出了它們,標題為“基於常規加密功能的數字簽名”。在這種“無限樹”結構中,信息是通過加密功能發送的,該函數將其變成具有特定數量字符的數字和字母序列。輸出中的字符數取決於如何編程函數。
這個字母數字序列(稱為哈希)設置為以使相同的輸入始終生成相同的輸出。無法通過函數發送輸出以生成原始信息。這創建了一種將一個文件與另一個文件進行比較並驗證其相同的方法,而無需手動驗證文件的內容。字母和數字序列通常稱為哈希,但實際上,它是數學算法創建的特定長度的十六進制值。
將哈希再次組合在一起,然後再與其他哈希搭配,然後再次進行哈希。這種連續的哈希人編碼文件中記錄到一個哈希中的所有交易。為了驗證或驗證此結構中的交易或信息,數據通過相同的功能和過程發送了另一個用戶。由此產生的哈希應該是相同的,提供了一種驗證文件中包含的信息的方法。
區塊鏈中如何使用默克爾樹
默克爾樹不需要在區塊鏈中使用,但許多人確實使用了結構。此外,他們可能會在樹木內實施不同的技術。比特幣是最著名的,因此在這裡用作示例。
比特幣的軟件沒有運行整個塊一次通過哈希函數一次全部通過交易數據。相反,每個事務都被哈希,然後將一對交易串聯並放在一起,依此類推,直到整個塊有一個哈希。如果交易數量有奇數,則一項交易會加倍,其哈希與自身串聯。
當可視化時,此結構化過程類似於顛倒的樹。在下圖中,“ t”指定了交易,“ h” a哈希。請注意,圖像是高度簡化的;一個塊可以包含數百或數千筆交易。底行上的散列稱為“葉”,中間哈希作為“分支”,在頂部作為“根”。
因此,默克爾根是一個塊中所有交易(也是哈希)的哈希。例如,比特幣塊#854,046的默克爾根為:
4C825B4E6A4FEA2EA96A1DD879CEFF1F854D5BE51FA01BBBB5FD4D95853DB9F1BC
它與其他信息結合(軟件版本,上一個塊的哈希,時間戳,難度目標和nonce)然後通過哈希功能運行以產生塊的獨特哈希:
00000000000000000000005D886429368C23489583EDFD77D0BFFFECEF8B570D00
該哈希實際上並未包含在其生成的塊中,而是下一個哈希:它與默克爾根不同。
默克樹的福利
Merkle樹之所以有用,是因為它允許用戶在不下載整個區塊鏈的情況下驗證特定的交易 - 這可能是數百GB的大小。例如,說您想驗證該交易td在上圖中包含在塊中。如果您有root hash(habcdefgh),您可以查詢網絡關於Hd。它可能返回hc,hab,hEFGH。
默克爾樹允許您驗證用三個哈希考慮一切:給定hab,hc,hEFGH,,,, 和根Habcdefgh,hd(唯一缺少的哈希)必須存在數據中。
此外,該結構很有幫助,因為過程非常快。似乎哈西數千筆交易將很耗時,但是現代計算機可以以毫秒為單位。因為計算機很容易做到,所以使用該技術驗證大量數據是有意義的,就像區塊鏈中包含的數據一樣。默克爾根,樹木和塊哈希是創造不變的交易和塊鏈的原因。
什麼是默克爾樹?
默克樹可以在任何應用程序這可能需要驗證或確保的信息和數據。在區塊鏈中,該結構用於創建一個塊中所有交易的默克根或哈希,然後將其用於生成塊哈希。
默克爾樹有多大?
默克爾樹的大小取決於要包含的數據的數據量以及如何編程區塊鏈。但是,塊的默克爾樹沒有在區塊鏈上佔據大量存儲。例如,比特幣塊854,473具有2,530次交易,每個交易的哈希是64個字節。因此,街區的默克爾樹佔該塊總數為1.54 MB的161.92 kb。
為什麼比特幣使用默克爾樹?
比特幣使用默克爾樹,因為它們是驗證交易的有效方法,並有助於創建將塊鏈接在一起的信息鏈。
底線
默克爾樹是一種數據結構,其中使用哈希數據來創建另一個哈希表示文件中包含的數據。這種結構使計算機可以輕鬆地比較信息,因為它僅需幾毫秒即可從信息中生成哈希並驗證結果相同。
Merkle樹也是允許區塊鏈中的區塊鏈接的機制之一。如果更改了任何數據,則結果將有所不同,導致該建議的區塊被區塊鏈拒絕共識機制。