
交易哈希和區(qū)塊哈希的區(qū)別,交易哈希有什么用?很多人不了解,今天各百科為大家?guī)硐嚓P內(nèi)容,下文是小編給大家?guī)淼慕榻B。
哈希函數(shù)在區(qū)塊鏈中起著至關重要的作用。它的做法是將復雜的交易信息加密壓縮成一個簡單的固定字節(jié)的哈希值,它成為了區(qū)塊鏈的標識,保證了交易信息在區(qū)塊鏈的不被篡改。這種算法還用于一些重要的環(huán)節(jié),如連接相鄰塊、構建merkle樹、交易驗證、數(shù)字簽名等。
1.概念
Hash: Hash,一般翻譯為“Hash”,或者直接音譯為“Hash”,是通過哈希算法將任意長度的輸入轉(zhuǎn)換為固定長度的輸出,輸出為哈希值.簡單地說,它是將任意長度的消息壓縮成某個固定長度的消息摘要的函數(shù)。我們常說的哈希算法和哈希函數(shù)通常是一個意思。
2.原理
基于密碼學中的一個單向哈希函數(shù),在業(yè)界通常用y=hash(x)來表示。這個哈希函數(shù)可以通過運算x計算出一個哈希值Y .這種函數(shù)很容易被驗證,但是卻很難破解.從x計算出Y很容易,但是從Y推導出x很難.也就是只有加密過程,沒有解密過程。
3.特點
(1)加密過程是不可逆的,也就是說我們無法通過輸出的哈希值推斷出原始明文是什么。
(2)輸入明文和輸出哈希值是一一對應的。任何輸入信息的改變都必然導致最終輸出哈希值的改變。
(3)對于任何大小的輸入,最終計算出的哈希值的長度都很小,而且是固定長度。
(4)很難使兩個內(nèi)容不同的明文的哈希值相同。也就是說,對于任意兩個不同的數(shù)據(jù)塊,相同哈希值的可能性極小。
4.SHA256算法
常用的哈希算法包括MD5、SHA-1、SHA-256、SHA-384和SHA-512。在區(qū)塊鏈,SHA-256算法通常用于塊加密。對于任何長度的任何消息,SHA-256都會生成一個256bit的哈希值,這個哈希值叫做消息摘要.這個抽象相當于一個長度為32字節(jié)的數(shù)組,通常用長度為64的十六進制字符串表示,就是我們看到的64個字符。
區(qū)塊鏈利用這種算法在一個交易區(qū)塊中進行交易信息進行加密,并將壓縮的信息轉(zhuǎn)化為由一串數(shù)字和字母組成的散列(哈希)字符串。區(qū)塊鏈的哈希值可以唯一準確地標識一個塊,任何節(jié)點都可以通過簡單的哈希計算獲得這個塊的哈希值。計算出的哈希值沒有改變,這意味著塊中的信息沒有被篡改。
下面是一個將明文加密成哈希值的例子。
然后把句號改成感嘆號,哈希值就完全變了。
5.哈希指針(Hash Pointer)
哈希指針意味著這個變量的值是從實際數(shù)據(jù)計算出來的,并且指向?qū)嶋H數(shù)據(jù)的位置。也就是說,哈希指針既可以表示實際數(shù)據(jù)的存儲位置,也可以表示實際數(shù)據(jù)內(nèi)容(某個時間戳的數(shù)據(jù)哈希值)。
綜上所述,從哈希指針的角度看區(qū)塊鏈的結構,可以說區(qū)塊鏈是一個以哈希指針按時間順序連接數(shù)據(jù)塊的鏈表。指針實際上是一串數(shù)據(jù)的哈希值,一串數(shù)據(jù)的哈希值是這串數(shù)據(jù)的“指紋”和抽象,所以可以用這個哈希值指向這串數(shù)據(jù)。
區(qū)塊鏈中每個塊都有一個hash指針對應自己的塊,除了創(chuàng)建塊(即第一個塊),其他每個塊都存儲前一個塊的hash指針,這樣就形成了一個如下圖的鏈,即區(qū)塊鏈。
這樣的數(shù)據(jù)結構可以保證數(shù)據(jù)不被篡改,因為任何一個塊的數(shù)據(jù)一旦被篡改,對應的hash指針就會出錯,所以后面的塊的hash指針就無法匹配數(shù)據(jù)被篡改后該塊生成的hash指針,所以一旦發(fā)生惡意篡改就可以檢查出來。
這就是hash函數(shù)的介紹。我很榮幸能幫助你。















