Mining-Pools
如果沒有解決方案怎麼辦?
如果我理解錯誤,請告訴我。
假設我想創建一個新塊並驗證以前的交易。為此,我需要:
- 選擇我想要包含在我的區塊中的交易
- 計算這些交易的默克爾根
- 我選擇(?)一個我希望“創建”這個塊的時間戳(這是一個普遍的共識嗎?)
- 我開始通過連接上述值並從隨機數 0 開始計算雜湊值,增加到 2^32-1
- 當我找到一個有足夠零的雜湊時,我向網路宣布我的證明並收取我的費用
這裡有一個問題:沒有辦法保證存在解決方案。由於我希望礦池成員都同意包含哪些交易以及使用哪個時間戳,因此對於給定的塊,可能不存在解決方案。
當然,其他礦工也會遇到這個問題。如果所有“大”礦工都選擇沒有任何解決方案的區塊怎麼辦?網路會不會當機?
由於我希望礦池成員都同意包含哪些交易以及使用哪個時間戳,因此對於給定的塊,可能不存在解決方案。
通常情況並非如此。使用最廣泛使用的分層協議,礦工對區塊中的內容沒有任何發言權,除了隨機數和額外隨機數(額外隨機數是 coinbase 交易的一部分)。因此,如果一個給定的區塊和它的所有 nonce 都沒有解決方案,礦池只是用新的交易、不同的交易順序或只是不同的時間戳構造一個新的區塊,並告訴礦工去處理它。
至於時間戳,它根本不需要匹配實時。時間戳只需要大於前一個區塊的中位時間過去(最後 11 個區塊的中位時間戳),因此時間戳可能不是實時的。
如果所有“大”礦工都選擇沒有任何解決方案的區塊怎麼辦?網路會不會當機?
礦工不會只在他們選擇的區塊上工作。他們可以建造另一個街區並繼續努力。網路不知道也不關心礦工是否必須建構不同的區塊來開採。