當前位置: 首頁>>算法&結構>>正文


從程序員的角度來看比特幣挖掘算法

網頁區塊(Blocks)中表示,比特幣挖掘過程實際上是在解決數學問題,但再閱讀Block hashing algorithm這篇文章感覺還是不太理解沒。也想嘗試閱讀bitcoind源代碼,但閱讀代碼比閱讀文檔需要多得多的時間:)

誰可以從程序員的角度解釋比特幣挖掘過程(挖礦)?

比特幣挖掘

 

最佳解釋

挖掘算法如下:

  • 步驟0 – 從網絡中檢索前一個區塊的哈希(散列)。
  • 第1步 – 收集被稱為區塊(“block”)的潛在交易清單列表。這個交易清單來自peer-to-peer比特幣網絡。
  • 第2步 – 計算一個潛在交易塊和一個隨機數的哈希(散列)值。
  • 第3步 – 如果哈希(散列)值超過當前設定的難度級別,則已開采該塊。如果不是,則從步驟1重新開始。對來自步驟1的交易清單的任何增加以及來自步驟2的隨機數的變化意味著有可能在接下來的周轉中滿足該準則。

從程序員的角度來看,偽代碼可能看起來像這樣:


P := The hash of the previously mined block
B := A block of transactions
H := A hash function
D := Difficulty Level

0 Retreive P
1 Construct/Modify B
2 IF H(P, B, Some Random Number) > D END
3 GOTO 1

需要注意的是,上麵的描述中可能有一些不準確的地方,但大多數情況下,這應該足夠好。下麵是一些更有用的補充說明:

什麽是哈希(散列)?

哈希是一種將數據(字符串或者二進製數據序列)轉換為一定範圍內的數字的函數。哈希具有輸出基本上不可預知(在給定範圍內)的特性。用於比特幣挖掘的特定哈希函數是將SHA256應用兩次。

難度級別如何工作?

哈希函數的這種不可預測的性質意味著,輸入隨機數據(交易+隨機數)本質上會產生一定範圍內的隨機數。進一步限製期望輸出的範圍,影響一個人在一輪中找到它的可能性。這創建了一種方式:基於算法可以在網絡上運行的次數概率性地確定找到解決方案的頻率。特別是,當你聽到術語千兆或千赫時,這是指步驟3可以運行的次數。隨著整個網絡每秒哈希次數的增長,網絡會自動提出困難級別,以便在大約10分鍾內找到解決方案。

當一個區塊被挖掘時會發生什麽?

當一個區塊被開采時,礦工將該區塊發送給網絡上的所有其他礦工,作為它找到它的證據。該塊包含事務列表,找到的哈希,特定的隨機數以及對前一個哈希的引用。當每個礦工接收到新開采的礦塊時,它會刪除該礦塊內存在的所有正在開采的交易(因為它們已經在塊鏈中得到確認),並將該塊廣播給其他做同樣事情的礦工。傳播發生得非常快。注意:該礦區的原礦商獲得“礦工費”,這是對除了”coinbase”獎勵之外的所有交易中未使用的硬幣的獎勵,其開始時為50比特幣,每210,000個區塊後減半(大約每隔4年)。與礦工的花費相比,比特幣獎勵最終會變得很小,以至於微不足道。

比特幣工作原理

比特幣挖掘算法

參考資料

 

本文由《純淨天空》出品。文章地址: https://vimsky.com/zh-tw/article/3814.html,未經允許,請勿轉載。