區(qū)塊鏈的工作原理是將最后一個塊的標(biāo)識符包含在下一個塊中的標(biāo)識符中,以創(chuàng)建一個牢不可破和不可變的鏈。但是隨著越來越多的塊被添加,數(shù)據(jù)如何保持可管理性?毛球科技技術(shù)研究部認為主要是靠默克爾樹。
保持區(qū)塊鏈數(shù)據(jù)可管理和安全的關(guān)鍵是通過一種稱為散列的算法與稱為默克爾樹的整合數(shù)據(jù)結(jié)構(gòu)相結(jié)合。
什么是哈希?
當(dāng)交易經(jīng)過驗證并需要添加到鏈中的塊時,它將通過哈希算法將其轉(zhuǎn)換為一組唯一的數(shù)字和字母,類似于隨機密碼生成器創(chuàng)建的內(nèi)容。然后將兩個交易哈希組合起來,并通過哈希算法產(chǎn)生另一個唯一的哈希。這種將多個交易組合成新散列的過程一直持續(xù)到最后只剩下一個散列——多個交易的“根”散列。
散列的獨特之處以及區(qū)塊鏈的一個關(guān)鍵安全特性是它們只能以一種方式工作。雖然相同的數(shù)據(jù)總是會產(chǎn)生相同的數(shù)字和字母的散列,但不可能“取消散列”或逆轉(zhuǎn)過程,使用數(shù)字和字母來破譯原始數(shù)據(jù)。
什么是默克爾樹?
如果使用完全相同的交易重復(fù)哈希過程,則將創(chuàng)建完全相同的哈希。這允許任何使用區(qū)塊鏈的人檢查數(shù)據(jù)是否被篡改,因為數(shù)據(jù)任何部分的任何更改都將導(dǎo)致完全不同的哈希值,影響哈希值的每次迭代,一直到根。這被稱為默克爾樹。
Merkle樹通過將散列交易集匯總為單個根散列來顯著減少需要在網(wǎng)絡(luò)上存儲和傳輸或廣播的數(shù)據(jù)量。由于每個事務(wù)都經(jīng)過散列,然后再次組合和散列,最終的根散列仍將是標(biāo)準大小。
Merkle樹是如何工作的?
當(dāng)存在大量的數(shù)據(jù)時,將很難驗證它,并需要大量的內(nèi)存來存儲和保護它,但在Merkle樹的幫助下,我們可以輕松克服所有這些問題。
Merkle樹是區(qū)塊鏈技術(shù)的基礎(chǔ)部分,我們可以很容易地發(fā)現(xiàn)大量數(shù)據(jù)發(fā)生的任何變化,并且可以有效地對數(shù)據(jù)進行驗證。比特幣和以太坊也正在這樣做。
正如我們在上圖中看到的,所有的基于都在底部,頂部的單個哈希值稱為根哈希值或Merkle根。
舉一個例子,有4個交易A,B,C,D?,F(xiàn)在A和B哈希值將合并成一個哈希值,而C和D將合并成另一個哈希值,AB哈希值和CD哈希值現(xiàn)在合并成一個單一哈希值,稱為根哈?;騇erkle根ABCD。
根哈希值將包含所有交易的所有信息。Merkle樹會反復(fù)哈希值,直到只剩下一個哈希值稱為根哈希對節(jié)點。Merkle樹是一棵二叉樹,所以需要有偶數(shù)個葉節(jié)點,如果交易數(shù)是奇數(shù),那么最后一個哈希值將重復(fù)一次,以創(chuàng)建偶數(shù)個葉節(jié)點。
在上圖中,我們可以看到當(dāng)交易數(shù)為奇數(shù)時的重復(fù)交易哈希值,這就是merkle樹復(fù)制奇數(shù)葉的方式。
所有交易的數(shù)據(jù)被總結(jié)成單一的根哈希值,并存儲在塊頭,因為我們現(xiàn)在的數(shù)據(jù)在不斷變化,我們將改變整個哈希函數(shù),如果哈希值改變,那么Merkle根也會改變。Merkle樹幫助我們維護數(shù)據(jù)的完整性。
Merkle樹的另一個優(yōu)點是,如果你想知道一個特定交易的狀態(tài),我們不需要下載整個區(qū)塊鏈,我們只需要要求垂直證明,證明樹的某個分支,并驗證一個特定的交易分支即可。