礦工如何使用 nonce?
礦工會建立區塊標頭,將 nonce 設為 0 並計算它的雜湊。如果雜湊值高於目標值,就把 nonce 設為 1 再試一次,接著試 2,依此類推。Nonce 是「只使用一次的數字」的縮寫。
沒有哪個 nonce 比其他的更好。雜湊值無法預測,所以每次嘗試的獲勝機率都一樣低。這就是挖礦公平的原因:每秒嘗試次數越多,機會就越多,沒有其他因素能幫上忙。
Nonce 用完時會發生什麼事?
四個位元組只能表示 4,294,967,296 個值。現代機器不到千分之一秒就能試完所有值。所以礦工會更改區塊中的其他內容,再從頭開始試 nonce。
礦工的運算迴圈
- 01
逐一嘗試每個 nonce
0、1、2,依此類推,直到 4,294,967,295。這就是 4 位元組能表示的所有數值。
- 02
很快就會耗盡
一台 100 TH/s 的機器,大約只要 43 百萬分之一秒就能全部試完。
- 03
更改額外隨機數
礦工會編輯自己獎勵交易(coinbase)中的備用欄位。
- 04
新的 Merkle 根
這筆交易一旦變更,merkle root 也會跟著變,每個 nonce 都會再次產生新的雜湊值。
通常會改用額外 nonce,也就是 coinbase 交易中的備用欄位。更改它會改變 Merkle 根,產生一整組新的區塊標頭供礦工嘗試。礦工也可以微調時間戳記;如今許多機器還能調整版本欄位中的幾個位元。
來源
- Nonce(隨機數) · Bitcoin Wiki
- 區塊雜湊演算法 · Bitcoin Wiki
- 區塊鏈參考資料:區塊標頭、默克爾樹、目標值 · Bitcoin 開發者文件
本頁即時數據來自 CloudMineCrypto API 和公開區塊鏈資料,並會定期更新,且會在各處標示。僅供教育用途,不構成財務建議。