国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

幫助中心 >  行業(yè)資訊 >  架構(gòu) >  區(qū)塊鏈基礎(chǔ)架構(gòu)之?dāng)?shù)據(jù)層(中)

區(qū)塊鏈基礎(chǔ)架構(gòu)之?dāng)?shù)據(jù)層(中)

2021-04-20 11:07:34 844

Merkle樹是一類基于哈希值的二叉樹或多叉樹,其葉子節(jié)點上的值通常為數(shù)據(jù)塊的哈希值,而非葉子節(jié)點上的值,是將該節(jié)點的所有子節(jié)點的組合結(jié)果的哈希值。Merkle樹是區(qū)塊鏈的重要數(shù)據(jù)結(jié)構(gòu),其作用是快速歸納和校驗區(qū)塊數(shù)據(jù)的存在性和完整性。在處理完整性驗證的應(yīng)用場景中,特別是在分布式環(huán)境下進(jìn)行這樣的驗證時, Merkle樹會大大減少數(shù)據(jù)的傳輸量以及計算的復(fù)雜度,在安全性上僅僅依賴于哈希函數(shù)的安全性。Merkle樹通常包含區(qū)塊體的底層(交易)數(shù)據(jù)庫,區(qū)塊頭的根哈希值(MerkleRoot)以及所有沿底層區(qū)塊數(shù)據(jù)到根哈希的分支,運(yùn)算過程一般是將區(qū)塊體的數(shù)據(jù)進(jìn)行分組哈希,并將生成的新哈希值插入 Merkle樹中,如此遞歸直到只剩最后一個根哈希值并記為區(qū)塊頭的 Merkle根。

(一)、Merkle樹特點

Merkle樹特點如下:

① Merkle樹是一種樹,大多數(shù)是二叉樹,也可以多叉樹,無論是幾叉樹,它都具有樹結(jié)構(gòu)的所有特點;

② Merkle樹的葉子節(jié)點的值是數(shù)據(jù)集合的單元數(shù)據(jù)或者單元數(shù)據(jù)哈希值;

③非葉子節(jié)點的值是根據(jù)它下面所有的葉子節(jié)點值然后按照哈希算法計算而得出的。

區(qū)塊鏈中的 Merkle樹用于存儲交易信息,每個交易兩兩配對,構(gòu)成 Merkle樹的葉子節(jié)點,進(jìn)而生成整個Merkle樹。Merkle樹有諸多優(yōu)點,首先是極大地提高了區(qū)塊鏈的運(yùn)行效率和可擴(kuò)展性,使得區(qū)塊頭只需包含根哈希值而不必封裝所有底層數(shù)據(jù);其次是 Merkle樹可支持“簡化支付驗證”協(xié)議,即在不運(yùn)行完整區(qū)塊鏈網(wǎng)絡(luò)節(jié)點的情況下,也能夠?qū)Γń灰祝?shù)據(jù)進(jìn)行檢驗,使得用戶可以通過從區(qū)塊頭得到的 Merkle樹根和別的用戶所提供的中間哈希值列表去驗證某個交易是否包含在區(qū)塊中。利用一個節(jié)點出發(fā)到達(dá) Merkle樹的根所經(jīng)過的路徑上存儲的哈希值,可以構(gòu)造一個 Merkle證明,驗證范圍可以是單個哈希值這樣的少量數(shù)據(jù),也可以是驗證可能擴(kuò)至無限規(guī)模的大量數(shù)據(jù)。提供中間哈希值的用戶并不需要是可信的,因為偽造區(qū)塊頭的代價很高,而中間哈希值如果偽造的話會導(dǎo)致驗證失敗。

(二)、Merkle哈希樹

如圖所示為一個 Merkle哈希樹,節(jié)點A的值必須通過節(jié)點C、D上的值計算而得到。葉子節(jié)點C、D分別存儲數(shù)據(jù)塊001和02的哈希值,而非葉子節(jié)點A存儲的是其子節(jié)點C、D的組合的哈希值,這類非葉子節(jié)點的哈希值被稱作路徑哈希值,而葉子節(jié)點的哈希值是實際數(shù)據(jù)的哈希值。

若C、D、E和F存儲了一組數(shù)據(jù)塊的哈希值,當(dāng)把這些數(shù)據(jù)從張三傳輸?shù)嚼钏暮鬄轵炞C傳輸?shù)嚼钏牡臄?shù)據(jù)完整性,只需要驗證張三和李四上所構(gòu)造的 Merkle樹的根節(jié)點值是否一致即可。如果一致,表示數(shù)據(jù)在傳輸過程中沒有發(fā)生改變。假如在傳輸過程中E對應(yīng)的數(shù)據(jù)被人篡改,通過 Merkle樹很容易定位找到(因為此時,根節(jié)點、B和E所對應(yīng)的哈希值都發(fā)生了變化),定位的時間復(fù)雜度為(log(n))。比特幣的輕量級節(jié)點所采用的SPV驗證就是利用 Merkle樹這一優(yōu)點。

為驗證數(shù)據(jù)塊003所對應(yīng)的交易包含在區(qū)塊中,除了 Merkle樹根外,用戶只需要節(jié)點A對應(yīng)的哈希值Hash(C,D)以及節(jié)點F所對應(yīng)的哈希值Hash(004)。除了數(shù)據(jù)塊003外,他并不需要其他數(shù)據(jù)塊所對應(yīng)的交易明細(xì)。通過3次哈希計算,用戶就能夠確認(rèn)數(shù)據(jù)塊003所對應(yīng)的交易是否包含在區(qū)塊中。實際上,若區(qū)塊包含圖中所對應(yīng)的 Merkle樹,且區(qū)塊所包含的4個交易的容量均達(dá)到最大值,下載整個區(qū)塊可能需要超過400000個字節(jié),而下載兩個哈希值加上區(qū)塊頭部僅需要120個字節(jié),可以減少很大的傳輸量。

(三)、非對稱加密

非對稱加密是現(xiàn)代密碼學(xué)歷史上一項偉大的發(fā)明可以很好地解決對稱加密中提前分發(fā)密鑰的問題。顧名思義,非對稱加密算法中,加密密鑰和解密密鑰是不同的,分別稱為公鑰(public key和私鑰(private key)。私鑰一般需要通過隨機(jī)數(shù)算法生成,公鑰可以根據(jù)私鑰生成。公開密鑰是對外公開的,而私有密鑰是保密的,其他人不能通過公鑰推算出對應(yīng)的私鑰。每一個公開密鑰都有其相對應(yīng)的私有密鑰,如果我們使用公開密鑰對信息進(jìn)行了加密,那么則必須有對應(yīng)的私有密鑰才能對加密后的信息進(jìn)行解密;而如果是用私有密鑰加密信息,則只有對應(yīng)的公開密鑰才可以進(jìn)行解密。在區(qū)塊鏈中,非對稱加密主要用于信息加密、數(shù)字簽名等場景。

非對稱加密算法的優(yōu)點是公、私鑰分開,不安全通道也可使用。其缺點是處理速度(特別是生成密鑰和解密過程)往往比較慢,一般比稱加解密算法慢2~3個數(shù)量級;同時加密強(qiáng)度也往往不如對稱加密算法。非對稱加密算法的安全性往往需要基于數(shù)學(xué)問題來保障,目前主要有基于大數(shù)質(zhì)因子分解、離散對數(shù)、橢圓曲線等經(jīng)典數(shù)學(xué)難題進(jìn)行保護(hù)。代表算法包括:RSA, Diffie-Hellman-密鑰交換、 ElGamal、橢圓曲線(Elliptic Curve Crytosystems,ec)、sm2等系列算法。

①RA:經(jīng)典的公鑰算法,1978年由 Ron Rivest、 Adi Shamir、 Leonard Adleman共同提出,三人于2002年因此獲得圖靈獎。算法利用了對大數(shù)進(jìn)行質(zhì)因子分解困難的特性,但目前還沒有數(shù)學(xué)證明兩者難度等價,或許存在未知算法在不進(jìn)行大數(shù)分解的前提下解密。

② Diffie-Hellman-密鑰交換:基于離散對數(shù)無法快速求解,可以在不安全的通道上,雙方協(xié)商一個公共密鑰。

③ EIGamal:由 Taher EIGamal設(shè)計,利用了模運(yùn)算下求離散對數(shù)困難的特性,被應(yīng)用在PGP等安全工具中。

④橢圓曲線(Elliptic Curve Cryptography,ECC):現(xiàn)代備受關(guān)注的算法系列,基于對橢圓曲線上特定點進(jìn)行特殊乘法逆運(yùn)算難以計算的特性。最早在1985年 Neal由 Koblitz和 Victor Miller分別獨(dú)立提出。ECC系列算法一般被認(rèn)為具備較高的安全性,但加解密計算過程往往比較費(fèi)時。

⑤m2(ShangMi2):國家商用密碼算法,由國家密碼管理局于2010年12月17日發(fā)布,同樣基于橢圓曲線算法,加密強(qiáng)度優(yōu)于RSA系列算法。

非對稱加密算法一般適用于簽名場景或密鑰協(xié)商,但不適于大量數(shù)據(jù)的加解密。目前普遍認(rèn)為RSA類算法可能在不遠(yuǎn)的將來被破解,一般推薦可采用安全強(qiáng)度更高的橢圓曲線系列算法。

(四)、時間戳

時間戳是指從格林尼治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現(xiàn)在的總秒數(shù),通常是一個字符序列,唯一地標(biāo)識某一刻的時間。在比特幣系統(tǒng)中,獲得記賬權(quán)的節(jié)點在鏈接區(qū)塊時需要在區(qū)塊頭中加蓋時間戳,用于記錄當(dāng)前區(qū)塊數(shù)據(jù)的寫入時間。每一個隨后區(qū)塊中的時間戳都會對前一個時間戳增強(qiáng)工作量證明,形成一個時間遞增的鏈條。時間戳技術(shù)本身并沒有多復(fù)雜,但在區(qū)塊鏈技術(shù)中應(yīng)用時間戳卻是一個重大創(chuàng)新,時間戳為未來基于區(qū)塊鏈的互聯(lián)網(wǎng)和大數(shù)據(jù)增加了一一個時間維度,使得數(shù)據(jù)更容易追溯,重現(xiàn)歷史也成為可能。同時,時間戳可以作為存在性證明( Proof of Existence)的重要參數(shù),它能夠證實特定數(shù)據(jù)必然在某特定時刻是的確存在的,這保證了區(qū)塊鏈數(shù)據(jù)庫是不可篡改和不可偽造的,這也為區(qū)塊鏈技術(shù)應(yīng)用于公證、知識產(chǎn)權(quán)注冊等時間敏感領(lǐng)域提供了可能。


提交成功!非常感謝您的反饋,我們會繼續(xù)努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問題: