區塊雜湊競猜遊戲系統開發技術原理分析

nice1022發表於2022-04-03

區塊鏈中的雜湊到底是什麼?

什麼是雜湊?

雜湊是將任意長的輸入程式設計加密的固定長度輸出的過程。雜湊並不等同於加密方法,因為無法解密雜湊值來獲取原始資料。事實上雜湊是一種單向加密函式。

有了雜湊函式,就可以將網際網路上的資料以固定長度字串的形式來儲存。其中一種方法就是SHA-256(安全雜湊演算法-256位),SHA-256是SHA-1的後繼者,SHA-1的輸出是160位的。

幸運雜湊遊戲系統開發搭建,規則模式定製,歡迎隨時打擾小編薇芯:hkkf5566

雜湊是如何應用在區塊鏈中的?

在區塊鏈中,每個區塊中都有前一個區塊的雜湊值,前一個區塊叫作當前區塊的父區塊。由於每個區塊都有前一個區塊的雜湊值,當修改當前區塊的任意資料都會導致區塊的雜湊值發生變化,這會對前一個區塊產生影響,因為其中含有前一個區塊的地址。

比如,當前有兩個區塊,一個是當前區塊,一個是父區塊。當前區塊中有父區塊的地址,如果需要修改當前區塊的資料,就需要對父區塊鏈進行修改。如果只有兩個區塊就比較好修改資料,但事實上區塊鏈上有很多的區塊。

截至2020年1月24日12:32,一共有614272個區塊,第614272個區塊的雜湊值為00000000000000000007a6be31011560f1e3abe8f125e356a31db6051753334e。如果想要修改第614272個區塊的資料,那麼614271區塊的雜湊地址就會發生改變,但是修改所有614271個區塊的雜湊值是不可能的,因此區塊鏈中資料的不可篡改和可信賴的。區塊鏈的第一個區塊叫作Genesis(創始)區塊。

研究人員對該過程進行了視覺化:

如果對輸入產生小的修改,都可能會導致輸出產生大的改變。

雜湊是區塊鏈技術和不可篡改和潛力的核心基礎和最重要的方面。雜湊維護了記錄和檢視資料的真實性,區塊鏈的完整性也是這樣的。

這也是區塊鏈技術最重要的技術特徵的一部分,只有理解了雜湊才能瞭解區塊鏈不可篡改性的潛力和價值。

Merkle Tree(馬爾科夫樹)是什麼?

當有大量資料需要驗證時,就需要消耗大量的記憶體來儲存和確保安全,這個過程很難。但是有了馬爾科夫樹(Merkle tree),就可以輕易解決這些問題。

馬爾科夫樹是區塊鏈技術的基礎,在該結構中,可以很容易地在大量資料中找出哪些資料發生了變化,整個資料驗證的過程非常高效。比特幣和以太坊中都使用了馬爾科夫樹。

從上圖可以看出,所有的交易都在底部,最頂部的雜湊值叫作Root hash或Merkle root(馬爾科夫根)。

如上圖所示,有4個交易A、B、C、D。A和B雜湊後會形成一個雜湊值,C和D會形成另一個雜湊值,AB的雜湊結果和CD雜湊結果會組合來形成一個新的雜湊值——Root hash或Merkle RootABCD。

Root hash有所有交易的資訊。馬爾科夫樹會重複計算節點對的雜湊值,直到只剩下一個雜湊值,就是Root hash。

Merkle tree是一個二叉樹,所以需要偶數個葉子結點,如果交易數是奇數,那麼最後一個雜湊值會複製一次來建立偶數個葉子節點。

如上圖所示,可以看出奇數值的交易數中有複製的交易進行了雜湊,表明Merkle tree會計算奇數的葉子樹。

所有交易資料會總結成一個Root hash,儲存在區塊頭(block header)中。資料中有任何改變,整個雜湊值就會變化,如果雜湊值變化了,Merkle root就會發生變化。Merkle tree可以幫助維護資料的完整性。

Merkle tree的另一個好處是如果想要了解特定交易的狀態,無需下載整個區塊鏈,只需要請求豎直證明(vertical proof)和樹的特定分支,驗證一個特定的交易分支。

如何用雜湊來確保資料安全?

雜湊還增加了資料的安全性。因為沒有加密資料,所以無需也無法解密資料。因為雜湊函式是單向加密函式,加密雜湊函式需要滿足一些關鍵特徵才能保證是有用的,包括:

每個雜湊值都是不同的

相同的訊息會生成相同的雜湊值

無法根據雜湊值確定輸入值

輸入值的微小變化也會導致整個雜湊值的變化

雜湊可以幫助確定資料是否被修改過。比如,之前下載了一些重要資訊,為確定資料是否被修改過,可以對資料進行雜湊計算,並比較資料的雜湊值和接收到的資料的雜湊值。

如果雜湊值相同,就表明資料沒有被修改過,如果雜湊值不匹配,就表明資料在傳送後接收前被修改了。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70011332/viewspace-2885649/,如需轉載,請註明出處,否則將追究法律責任。

相關文章