比特幣居然是這樣挖出來的(高能預警,全程燒腦)

比特幣居然是這樣挖出來的(高能預警,全程燒腦)

傳統的挖礦比如黃金,需要準備鐵鍬、鑽機、燈、礦車等一系列設備,才能開始工作。

比特幣生產被稱為挖礦,是因為生產過程很像挖黃金。挖比特幣也需要準備一系列的工作,比如先構建一個區塊頭。

△區塊頭

曠工在填寫好這些信息後,會生出一個區塊頭,但是該區塊頭暫時不被比特幣系統認可。

需要找到本區塊的哈希值,然後廣播給全網,獲得全網認可後,把該區塊鏈接到當前的區塊鏈上,形成一個+1區塊鏈,不斷重複此過程就叫挖礦。

說簡單點,任何曠工都可以填寫該信息,此時每個曠工填寫的區塊都是「假區塊」,一旦有某個曠工找到了該區塊的哈希值,它的「假區塊」就變成了真區塊,被比特幣系統認可,然後獲得比特幣獎勵。

所以,挖礦的本質是找到本區塊的哈希值,找到該哈希值的曠工會獲得比特幣獎勵。

如何找到該區塊的哈希值呢?

你猜,你猜,你猜猜猜。

其實找哈希值的過程真是靠猜。那如何猜呢?

找到區塊頭裡Nonce的哈希值,小於難度目標的哈希值。難度目標是固定的,我們要猜的就是這個隨機數Nonce,區塊的哈希值就是Nonce哈希運算後得出的哈希值。

我們以277316的區塊舉例,難度目標為0x1745fb53,哈希計算後的哈希值為:

0x0000000000000003A30C00000000000000000000000000000000000000000000

*如何哈希計算?可以查看《精通比特幣》8.7.2難度表示

我們要找到一個小於目標哈希值A的哈希值B,通過把Nonce套進公式,會得到一個哈希值B,拿該哈希值和目標哈希值A比較,小於A,那就尋找成功。

為方便理解,我把與Nonce有關的公式做了修改。你也可以查找精通比特幣,8.7.1工作量證明演算法,查看原公式。

公式如下:

聽風很帥=》1ce654cf64656ba43247

聽風很帥(1)=》512198e52aa12427531

聽風很帥(2)=》101654c68d5321c9647

聽風很帥(3)=》0cb82dq9846fa6c48647

聽風很帥(4)=》0465464ce20cc21e7541

聽風很帥(5)=》14edc1cad25121e25487

()里的數就是Nonce,公式右邊是哈希值,通過不斷地Nonce+1的方式套進公式,讓左邊哈希運算,得出右邊的哈希值。

然後拿該哈希值與目標哈希值0x0000000000000003A30C00000000000000000000000000000000000000000000比較。如果運算出的哈希值小於該值,就找到了正確的Nonce。

平時我們的理解是A+1<A+2,但是A+1經過哈希運算後,就可能大於A+2。得到的哈希值與運算完全沒有規律,只要輸入變化一點點,得出來的哈希值就千變萬化。所以要不停拿數字進去套,直到找出符合條件的Nonce。

不斷拿Nonce去套的過程,也叫哈希碰撞,就是試圖找到一個符合條件的Nonce。

最終套到924591752時,得出哈希值

0000000000000001b6b9a13b095e96db41c4a928b97ef2d944a9b31b2cc7bdc4

拿它與目標值比較

0000000000000003A30C00000000000000000000000000000000000000000000

左邊0數量一樣,1比3小,證明是我們要找的Nonce

然後曠工把924591752填入Nonce,再把區塊接入區塊鏈中,接著廣播給其他節點驗證是否小於目標值,其他節點驗證驗通過,把該區塊加入區塊鏈中。

驗證過程就很簡單,把得出的Nonce套進公式,就會得出一樣的哈希值輸出。只有同一個輸入,才能得到同一個輸出。

拿輸出結果與目標哈希值一對比,就知道是否小於目標值。比特幣的挖礦需要N億次計算,驗證答案是否正確,只需要1次計算即可。

這就是比特幣的挖礦,不斷把Nonce套進公式,直到找出符合條件的那個Nonce,然後經過哈希運算,把哈希值填入區塊,廣播給全網認證,認證通過獲得比特幣獎勵的過程。


推薦閱讀:

CryptoNote inside
幣包:維基鏈穩步發展競猜應用測試版上線
門羅幣(Monero)公告 - 拒絕礦霸,拒絕密鑰重複使用!
如何在BitMEX(比特幣24小時交易量NO.1)上交易?

TAG:比特幣Bitcoin | 虛擬貨幣 | 科技 |