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