Algorithms

簡單的比特幣探勘算法

  • January 17, 2019

我試圖弄清楚簡單的比特幣探勘算法是如何在簡單的 c 或 c# 或一些偽語言中工作的。我在<http://pastebin.com/EXDsRbYH>找到了一個範例,但不幸的是,目前尚不清楚它的作用。我無法執行它。

假設我只有一個輸入:一個比特幣錢包“abc …”,我想用它來開採比特幣。我需要簡單易懂的算法,該算法將在一台機器上進行比特幣探勘,在一個 cpu 上使用一個執行緒 [我知道這需要很長時間才能完成 :)]

最簡單的礦工會這樣工作:

  1. 使用指定憑據從給定池/比特幣請求新的Getwork
  2. 對於 nonce=0;nonce<0xFFFFFFFF;nonce++
  • 設置 Getwork 數據隨機數
  • SHA-256 散列 Getwork 數據(塊頭
  • 檢查hash結果是否小於Getwork Target,如果是,送出分享
  • 如果收到 Getwork 後超過 1 秒,請停止循環
  1. 轉到:1

現在,如果您想要一些可以與目前使用的礦工相提並論的東西,您需要考慮:

  • OpenCL計算,沒有這個你永遠不會得到顯卡的高算力。
  • 中間狀態,或者換句話說散列優化。Getwork Data 的前半部分沒有改變,因此計算每個雜湊的中間狀態沒有意義。
  • Longpolling,讓您計算較少陳舊的塊。
  • Rollntime,最小化與池的通信。

引用自:https://bitcoin.stackexchange.com/questions/3044