比特幣挖礦演算法具體是什麼?比特幣演算法原理詳解

買賣虛擬貨幣

比特幣挖礦演算法具體是什麼?比特幣演算法原理詳解,比特幣是區塊鏈的前身實現,區塊鏈是比特幣的後期提煉;如果初次接觸比特幣,當你想和別人交流的時候,面對的第一個概念可能就是挖礦,比特幣目前使用的共識機制是POW,使用的挖礦演算法是SHA2-256,那麼,比特幣挖礦演算法具體是什麼?

1、block的版本version

2、上一個block的hash值: prev_hash

3、需要寫入的交易記錄的hash樹的值: merkle_root

4、更新時間: ntime

5、當前難度: nbits

挖礦的過程就是找到x使得

SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) TARGET

上式的x的範圍是0~2^32,TARGET可以根據當前難度求出的。除了x之外,你還可以嘗試改動merkle_root和ntime。由於hash的特性,找這樣一個x只能暴力搜尋。

一旦你找到了x,你就可以廣播一個新的block,其他客戶端會驗證你的block是否合法。如果你的block被接受,由於每個block中的第一筆交易必須是將新產生25個比特幣傳送到某個地址,當然你會把這個地址設為你所擁有的地址來得到這25個比特幣。

比特幣從開始到現在的每一筆交易記錄都儲存在網路上,整個比特幣網路維護的一個巨大的交易記錄檔案(現在大約12G)。這個檔案的更新週期平均是10分鐘,新加入的交易記錄叫做一個block,而這個碩大的檔案由一串block組成,叫做block chain.

為什麼是25個比特幣?

這是規定。最初是50個比特幣,每產生剩下比特幣的一半,這個所得就會減半,這樣最終能產生的比特幣總量趨近於2100萬。如果你現在仍然聲稱挖到了50個比特幣,這是不會被其他客戶端接受的,這個block就算白挖了。

怎麼保證更新週期平均是10分鐘?

TARGET越小,解出x的難度就越大,每產生2016個block(約14天),網路會根據這段時間產生新block的平均間隔調整之後的TARGET。

是不是計算速度最快的人總是先解出來?

不是。你總是想把挖礦所得據為己有,所以每個人在計算時,傳送挖礦所得的地址是不一樣的,這樣merkle_root就不同,也就是說每個人是從不同的初始狀態開始求解的。

同時解出來怎麼辦?

Blockchain會出現分叉,部分客戶端接受了A,部分接受了B,直到某個分支變得更長,所有人就會選擇這個更長的分支。如果你挖出來的不幸沒有被選中,你的挖礦所得就無效了。

既然選更長的分支,那我用很低的難度去求解怎麼辦?

客戶端在眾多分支中找到符合當前難度且最長的。

這些計算浪費了嗎?

如果你要把一筆錢花兩次,你需要這麼做。挖到一個新的block,但是藏著不廣播,並繼續挖礦。找到商家A,支付比特幣,讓網路上的其他人挖到block並寫入這筆交易記錄。找到商家B,支付比特幣,寫入自己挖的block。如果你能搶先挖到兩個block並廣播出去,所有人會以你這個更長的分支為當前的blockchain,商家A收到的比特幣就不被承認了。這樣攻擊成功的概率取決於你計算hash的速度。整個網路的計算力足夠高的話,這樣的攻擊或者成功率極低,或者成本極大。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;