心碎了無痕2星評價
2021-03-22 10:27:32

1、什么是哈希值?
哈希值是使用數(shù)學函數(shù)創(chuàng)建一個字符序列。這個序列的特點是具有高度的安全性,允許您安全地發(fā)送消息。最重要的是,它是目前市場上每一種加密貨幣的一部分,但可以說,它們都有不同的價值和質(zhì)量。我們可以肯定的一點是,適當?shù)墓V凳敲總€加密貨幣成功率的一部分。再簡單的說哈希就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數(shù),有了哈希函數(shù),就可以將互聯(lián)網(wǎng)上的數(shù)據(jù)以固定長度字符串的形式來保存。
2、哈希值是如何應用在區(qū)塊鏈中的?
在區(qū)塊鏈中,每個區(qū)塊中都有前一個區(qū)塊的哈希值,前一個區(qū)塊叫做當前區(qū)塊的父區(qū)塊。由于每個區(qū)塊都有前一個區(qū)塊的哈希值,當修改當前區(qū)塊的任意數(shù)據(jù)時都會導致區(qū)塊的哈希值發(fā)生變化,這會對前一個區(qū)塊產(chǎn)生影響,因為這其中含有前一個區(qū)塊的哈希值。
比如
當前有兩個區(qū)塊,一個是當前區(qū)塊,一個是父區(qū)塊。當前區(qū)塊中有父區(qū)塊的哈希值,如果需要修改當前區(qū)塊的哈希值,就需要對父區(qū)塊鏈進行修改,而父區(qū)塊又擁有上一級父區(qū)塊的哈希值(以此類推),不僅如此,當前區(qū)塊后續(xù)產(chǎn)生的區(qū)塊的所有哈希值也都必須進行修改。如果只有兩個區(qū)塊就比較好修改數(shù)據(jù),但事實上區(qū)塊鏈上有很多的區(qū)塊。
以比特幣真實數(shù)據(jù)為例
截至發(fā)文前,比特幣區(qū)塊高度為:646795,第646795個區(qū)塊的哈希值為0000000000000000000157df3725ae6c201e68d4f96ad9c82d3715943a7e7987。如果想要修改第646795個區(qū)塊的數(shù)據(jù),那么646794區(qū)塊的哈希地址就會發(fā)生改變,但是修改所有646794個區(qū)塊的哈希值是不可能的,除非修改者擁有51%的算力攻擊,然而想要有這51%的算力攻擊那是更加不可能的(什么是51%攻擊,為什么說修改者難以擁有這51%的算力攻擊?詳情可點擊紅字‘往期推送’進行閱讀了解),且以比特幣十分鐘產(chǎn)生一個區(qū)塊的速度想要修改哈希值那是難上加難,不止需要跟上產(chǎn)塊的速度,還需要一個天文數(shù)字的費用做鋪墊,所以,因此區(qū)塊鏈中數(shù)據(jù)的不可篡改是可信賴的。

3、什么是哈希碰撞?
這里我們還是以比特幣為例:比特幣使用的哈希函數(shù)hash256x2算法,無論輸入是什么數(shù)據(jù)文件,輸出就是256bit。(譯:位(Bit),字節(jié)(Byte),字(Word),SHA始終把消息當成一個位(bit)字符串來處理。比如,字符串“abc”可以被轉(zhuǎn)換成一個位字符串:011000010110001001100011。它也可以被表示成16進制字符串:0x616263.)
每個bit就是一位0或者1
256bit就是256個0或者1二進制數(shù)字串,用16進制數(shù)字表示的話,就是多少位呢?
16等于2的4次方,所以每一位16進制數(shù)字可以代表4位bit。那么,256位bit用16進制數(shù)字表示,當然是256除以4等于64位。
于是你通??吹降墓V?,就是這樣的了:00000000000000000000d9cd28b2d4cea7a7363284a9c4bd7ddc0b4ef14e9275。
Q:怎樣才能碰撞成功獲得打包新區(qū)塊的權(quán)力呢?
A:我們現(xiàn)在假設有十組位字符串:(一組位字符串由256個0和1組成,但凡其中一個1或0產(chǎn)生變化就會生成一組新的位字符串,如下:)
1
●011000010110001001100011......(256個)
2
●011100010110001001100011......(256個)
3
●011100000110001001100011......(256個)
4
●011100011110001001100011......(256個)
5
●011100010010001001100011......(256個)
6
●011100010111001001100011......(256個)√
7
●011101010110001001100011......(256個)
8
●011100010110011001100011......(256個)
9
●011100010110001001110011......(256個)
10
●011100010110001011100011......(256個)
......
(實際還有很多很多位字符串,可以用無數(shù)個來概括,所以在這里就不一一舉例了)
而哈希碰撞就是,當?shù)V工在計算哈希時,剛好與以上某一組(假設第六組)位字符串碰撞成功,然后再使用16進制數(shù)字法算出第六組位字符串的哈希值,誰率先算出正確的哈希值,那么該礦工就有了打包區(qū)塊的權(quán)利,從而生成新區(qū)塊。這也是為什么我們總說挖礦是一道很難的數(shù)學題了,一道超難的數(shù)學題,誰要是最先計算出正確的答案,誰就能獲得獎勵,一個理兒啦!
可是,想要快速碰撞成功可不是那么容易的哦,你要碰撞無數(shù)次才可能有獲得獎勵的機會。最初的挖礦因區(qū)塊高度低,平均碰撞50次就能產(chǎn)生一個新區(qū)塊,可隨著現(xiàn)在的區(qū)塊高度,平均需要碰撞數(shù)十萬億次左右才能產(chǎn)生一個新的區(qū)塊,所以現(xiàn)在能理解為什么家用電腦已經(jīng)無法實現(xiàn)挖礦了吧,再牛逼的家用電腦算力都永遠跟不上挖礦的速度,只有專業(yè)的人才能做專業(yè)的事。