Mining
隨機數選擇
在 PoW 系統中,您必須測試不同的 nonce,直到找到與目前難度和目前數據集兼容的雜湊。
有許多礦工同時測試許多隨機數。
我的問題:
- 有重複工作的風險嗎?為什麼?(兩個不同的礦工最終可以測試相同的隨機數?)
- 在最流行的礦工軟體(例如 genoil’s)中如何選擇隨機數?
如果您查看 Genoil原始碼
random_device engine; uint64_t start_nonce; if (_ethStratum) start_nonce = _startN; else start_nonce = uniform_int_distribution<uint64_t>()(engine);
在分層模式下(即連接到池時),nonce 由池決定,否則它是隨機生成的。
由於礦工地址作為工作證明的一部分包含在塊頭中。不同的礦工選擇相同的隨機數的可能性很小。
硬幣基數(在 sucesfull 雜湊上接收硬幣的地址)是礦工將處理的標頭的一部分,因此:
如果單獨挖礦,如果每個旅遊礦工直接連接到節點並傳遞自己的硬幣基地址 - 0 機會。如果每個礦工直接使用 node 並讓 node 設置它的 coinbase,機會非常小(2^64 範圍),而不是你在同一節點上與 negibour 相同的隨機數(儘管這取決於 node 和礦工,node 可以充當一個礦池並為每個礦工提供不同的隨機數(如果他們接受)。如果在池中挖礦,coinbaise 始終是池,因此每個池都確保每個礦工的 nonce 不會發生衝突(哦,有人提到池中的礦工擊中相同的 nonce 並不重要,我認為正好相反,因為您正在為池做較低難度的 pow,但仍在處理真正的塊雜湊,因此這些會產生實際的完整難度塊雜湊,因此不要在池上重複工作非常重要)。
當兩個礦工同時送出解決方案時,它永遠不會是相同的解決方案(當然,如果它適用於所有池都想要阻止的同一個隨機數上的同一個池)誰更快地找到任何解決方案,或者我剛剛說服了我自己)