Mining-Pools

自己的比特幣礦池礦工算法

  • December 30, 2016

我從礦池收到這些變數:

job_id, prevhash, coinb1, coinb2, merkle_branch version, nbits, ntime, clean_jobs.

我必須對他們做什麼?

你能寫出一步一步的公式來解決這個問題嗎?

我必須對游泳池做出什麼反應?

您知道層協議定義嗎?我在這裡找到了描述:https ://slushpool.com/help/#!/manual/stratum-protocol 。作為先決條件,您需要知道如何計算塊雜湊。有關定義,請參見<https://en.bitcoin.it/wiki/Block_hashing_algorithm>。

當您為單獨探勘計算雜湊時,只有滿足目前難度的雜湊才有價值。相比之下,在礦池挖礦時,您將向礦池送出雜湊值,該礦池的難度要求明顯較低,因此礦池可以看到您實際上在工作。當礦池找到一個區塊時,您產生的“份額”數量將決定分配給您的區塊獎勵部分。

請注意,我無法提供程式碼範例或更詳細的解釋,因為我從未編寫過比特幣礦工。既然你想寫探勘軟體,你的工作就是找出答案:-)

不久前,我寫了一篇文章比特幣挖礦的艱難方式,描述瞭如何處理來自礦池的價值。

快速總結是您將 coinb1(紅色)、extranonce1(綠色)、extranonce2(黃色,由礦工生成)和 coinb2(藍色)連接在一起形成 coinbase 交易,例如:

挖礦交易

這與池中的 merkle_branch 數據相結合,為整個塊生成 Merkle 雜湊。然後你建構一個塊頭並迭代頭中的所有 nonce 值。當所有 nonce 都用完後,增加 extranonce2 並重試。如果你成功了,你會用你的 nonce 向礦池發送一條 JSON 消息。

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