手机看片精品高清国产日韩,色先锋资源综合网,国产哺乳奶水91在线播放,乱伦小说亚洲色图欧洲电影

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

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

2021-04-20 11:07:34 78

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

(一)、Merkle樹特點

Merkle樹特點如下:

① Merkle樹是一種樹,大多數是二叉樹,也可以多叉樹,無論是幾叉樹,它都具有樹結構的所有特點;

② Merkle樹的葉子節點的值是數據集合的單元數據或者單元數據哈希值;

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

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

(二)、Merkle哈希樹

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

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

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

(三)、非對稱加密

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

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

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

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

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

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

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

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

(四)、時間戳

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


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

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

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

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