Nonce

礦工何時停止等待新交易?

  • November 9, 2016

我知道我的問題可能聽起來對以下問題很熟悉: 礦工何時決定停止收集交易並開始計算雜湊以試圖獲勝?

但實際上,該主題中標記為答案的回复並沒有回答問題:礦工何時停止等待/收聽新交易

根據上面連結中的答案,礦工將開始計算隨機數,但據我所知,隨機數是塊頭雜湊計算的結果。由於區塊頭包含由區塊中包含的所有交易生成的默克爾樹根的雜湊,因此等待和添加新交易意味著默克爾樹的根的雜湊將不斷變化,因此礦工如何確定停止和集中從穩定的交易源(或默克爾樹的根雜湊)“探勘”隨機數

如果你看不懂我的語言,讓我們通過一個例子來簡化問題:礦工 A 收到交易 a1,然後開始計算 1 分鐘的 nonce 數(假設在這段時間內,沒有新的交易來中斷這個過程)但是隨後有一筆交易 a2 到了,礦工 A 會怎麼做?將 a2 添加到候選塊中,獲取 merkle 樹根的新雜湊並重新啟動以找到隨機數?還是直接忽略交易a2?如果 A 選擇忽略要包含的新事務,誰能告訴我它何時會這樣做(假設收集的所有事務不大於 MAX_BLOCK_SIZE 常量)?

對我的一些問題的任何答复或解釋都非常感謝。謝謝!!

他們從一開始就沒有“等待”。

礦工不斷增加隨機數併計算雜湊。新交易 a2 到達後,立即將其添加到 Merkle 樹中,重新生成塊頭,並繼續使用新的塊頭進行雜湊處理。

將其稱為“重新啟動”是一種誤導,因為這意味著正在失去一些進展。採礦是無進展的。無論底層塊頭是什麼,每個雜湊都是一個獨立的試驗,具有相同的成功機率。

為了強調這一點,假設您有一個區塊頭 h1,您已經在其上嘗試了十億個 nonce 值,以及一個剛剛生成且尚未嘗試過 nonce 的區塊頭 h2。如果您可以選擇接下來要散列哪個雜湊,您應該選擇哪個,以獲得最大的隨機數獲勝機會?答案是,這沒有區別——它們的機率完全相同。所以切換到h2並沒有什麼壞處。

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