Mining-Pools
自己的比特幣礦池礦工算法
我從礦池收到這些變數:
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 消息。