【學(xué)習筆記】merkle樹及設(shè)置意義

Merkle樹(默克爾樹)


默克爾樹是一類基于哈希值的二叉樹或多叉樹,其葉子節(jié)點上的值通常為數(shù)據(jù)塊的哈希值,而非葉子節(jié)點上的值,是將該節(jié)點的所有子節(jié)點的組合結(jié)果的哈希值。


圖片發(fā)自簡書App



默克爾樹一般用來進行完整性驗證處理,在處理完整性驗證的應(yīng)用場景中,默克爾樹會大大減少數(shù)據(jù)的傳輸量及計算的復(fù)雜度。

通常,要確定一個數(shù)據(jù)塊是默克爾樹中的一員,只需要樹根及這個區(qū)塊和通向樹根沿途的中間哈希值,可以暫時忽略樹的其他部分,這些就已經(jīng)足以讓我們驗證了。

由此可見,哈希加密算法的驗證相比于正向求解要容易

1. 默克爾樹的意義:(節(jié)約硬盤空間,每個節(jié)點都可以存儲交易,每個節(jié)點都有權(quán)驗證交易)

為了同時確保不損害區(qū)塊的hash,交易被hash為一棵Merkle Tree,這個Merkel Tree只有root節(jié)點被包含進了這個區(qū)塊的hash。老的區(qū)塊能夠被壓縮通過將這個樹的分支進行拔除(stubbing off branches of thetree)。而內(nèi)部的hash是不必被保存的。個人并不需要這個區(qū)塊,只需要這個區(qū)塊的hash(索引)就可以,有ipfs,公共節(jié)點,高信任度節(jié)點幫忙存儲。

一個剔除交易的區(qū)塊頭大概會是80byte大小。如果我們假設(shè)區(qū)塊每10分鐘就生成一個,那么80bytes * 6 * 25 * 365 = 4.2MB 每年。2008 年P(guān)C系統(tǒng)通常的內(nèi)存容量為2GB,按照摩爾定理預(yù)言的每年增長1.2GB的大小,即使將全部的區(qū)塊頭存儲在內(nèi)存之中都不是問題。

2. 這里會有一個取舍,存儲空間與安全,假設(shè)因為默克爾數(shù),保留的節(jié)點(交易)太少,就可能造成安全問題,一個攻擊者擁有超過全網(wǎng)的算力的成本是相對較低的,當然這主要針對小區(qū)塊鏈系統(tǒng)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容