<cite id="1ndtl"></cite>
<ruby id="1ndtl"></ruby>
<strike id="1ndtl"></strike>
<span id="1ndtl"><dl id="1ndtl"></dl></span><span id="1ndtl"><dl id="1ndtl"></dl></span>
<strike id="1ndtl"></strike>
<strike id="1ndtl"><dl id="1ndtl"><del id="1ndtl"></del></dl></strike>
<span id="1ndtl"></span>
<span id="1ndtl"><dl id="1ndtl"></dl></span>
<strike id="1ndtl"></strike>
<strike id="1ndtl"></strike><span id="1ndtl"><dl id="1ndtl"></dl></span>
<strike id="1ndtl"></strike><strike id="1ndtl"></strike>
<strike id="1ndtl"></strike>
<span id="1ndtl"></span>
<span id="1ndtl"><dl id="1ndtl"></dl></span>
<th id="1ndtl"><noframes id="1ndtl"><span id="1ndtl"><video id="1ndtl"><strike id="1ndtl"></strike></video></span> <strike id="1ndtl"></strike>
<strike id="1ndtl"></strike>
<span id="1ndtl"><dl id="1ndtl"></dl></span>
  1. 首頁
  2. 區塊鏈到底是什么東西(區塊鏈中的哈希到底是什么?)

區塊鏈到底是什么東西(區塊鏈中的哈希到底是什么?)

免責聲明:本文旨在傳遞更多市場信息,不構成任何投資建議。文章僅代表作者觀點,不代表火星財經官方立場。

小編:記得關注哦

來源:區塊鏈大本營

編譯 :張濤

01 什么是哈希?

哈希是將任意長的輸入編程加密的固定長度輸出的過程。哈希并不等同于加密方法,因為無法解密哈希值來獲取原始數據。事實上哈希是一種單項加密函數。

有了哈希函數,就可以將互聯網上的數據以固定長度字符串的形式來保存。其中一種方法就是SHA-256(安全哈希算法-256位),SHA-256是SHA-1的后繼者,SHA-1的輸出是160位的。

02 哈希是如何應用在區塊鏈中的?

在區塊鏈中,每個區塊中都有前一個區塊的哈希值,前一個區塊叫做當前區塊的父區塊。由于每個區塊都有前一個區塊的哈希值,當修改當前區塊的任意數據都會導致區塊的哈希值發生變化,這會對前一個區塊產生影響,因為其中含有前一個區塊的地址。

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

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

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

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

哈希是區塊鏈技術和不可篡改和潛力的核心基礎和最重要的方面。哈希維護了記錄和查看數據的真實性,區塊鏈的完整性也是這樣的。

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

03 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)和樹的特定分支,驗證一個特定的交易分支。

04 如何用哈希來確保數據安全?

哈希還增加了數據的安全性。因為沒有加密數據,所以無需也無法解密數據。因為哈希函數是單向加密函數,加密哈希函數需要滿足一些關鍵特征才能保證是有用的,包括:

每個哈希值都是不同的;

相同的消息會生成相同的哈希值;

無法根據哈希值確定輸入值;

輸入值的微小變化也會導致整個哈希值的變化。

哈希可以幫助確定數據是否被修改過。比如,之前下載了一些重要信息,為確定數據是否被修改過,可以對數據進行哈希計算,并比較數據的哈希值和接收到的數據的哈希值。

如果哈希值相同,就表明數據沒有被修改過,如果哈希值不匹配,就表明數據在發送后接收前被修改了。

相關文章
美女网站色