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

幫助中心 >  行業(yè)資訊 >  架構 >  區塊鏈基礎架構之數據層(中)

區塊鏈基礎架構之數據層(中)

2021-04-20 11:07:34 426

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

(一)、Merkle樹(shù)特點(diǎn)

Merkle樹(shù)特點(diǎn)如下:

① Merkle樹(shù)是一種樹(shù),大多數是二叉樹(shù),也可以多叉樹(shù),無(wú)論是幾叉樹(shù),它都具有樹(shù)結構的所有特點(diǎn);

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

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

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

(二)、Merkle哈希樹(shù)

如圖所示為一個(gè) Merkle哈希樹(shù),節點(diǎn)A的值必須通過(guò)節點(diǎn)C、D上的值計算而得到。葉子節點(diǎn)C、D分別存儲數據塊001和02的哈希值,而非葉子節點(diǎn)A存儲的是其子節點(diǎn)C、D的組合的哈希值,這類(lèi)非葉子節點(diǎn)的哈希值被稱(chēng)作路徑哈希值,而葉子節點(diǎn)的哈希值是實(shí)際數據的哈希值。

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

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

(三)、非對稱(chēng)加密

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

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

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

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

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

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

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

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

(四)、時(shí)間戳

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


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

這條文檔是否有幫助解決問(wèn)題?

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

在文檔使用中是否遇到以下問(wèn)題: