詞彙表 · 挖礦

Nonce(隨機數)

作者:CloudMineCrypto 團隊更新於 也稱為「只使用一次的數字」

定義

Nonce 是比特幣區塊標頭中的 32 位元數值,礦工每次嘗試都會更改它,以找到有效區塊。每個新 nonce 都會產生完全不同的雜湊值,所以礦工會透過嘗試不同的 nonce 來猜答案。

收錄於Bitcoin 挖礦術語表,以淺白英文解說 88 個術語。

Nonce 的所有可能值

4,294,967,296

可能值:0 至 4,294,967,295(32 位元)

整個比特幣網路每秒大約會把所有可能值跑完 189 十億次。根據網路算力即時估算,每小時更新。

礦工如何使用 nonce?

礦工會建立區塊標頭,將 nonce 設為 0 並計算它的雜湊。如果雜湊值高於目標值,就把 nonce 設為 1 再試一次,接著試 2,依此類推。Nonce 是「只使用一次的數字」的縮寫。

沒有哪個 nonce 比其他的更好。雜湊值無法預測,所以每次嘗試的獲勝機率都一樣低。這就是挖礦公平的原因:每秒嘗試次數越多,機會就越多,沒有其他因素能幫上忙。

Nonce 用完時會發生什麼事?

四個位元組只能表示 4,294,967,296 個值。現代機器不到千分之一秒就能試完所有值。所以礦工會更改區塊中的其他內容,再從頭開始試 nonce。

礦工的運算迴圈

  1. 01

    逐一嘗試每個 nonce

    0、1、2,依此類推,直到 4,294,967,295。這就是 4 位元組能表示的所有數值。

  2. 02

    很快就會耗盡

    一台 100 TH/s 的機器,大約只要 43 百萬分之一秒就能全部試完。

  3. 03

    更改額外隨機數

    礦工會編輯自己獎勵交易(coinbase)中的備用欄位。

  4. 04

    新的 Merkle 根

    這筆交易一旦變更,merkle root 也會跟著變,每個 nonce 都會再次產生新的雜湊值。

接著回到步驟 1。礦工也可以稍微調整時間戳記,這同樣會改變區塊標頭。

通常會改用額外 nonce,也就是 coinbase 交易中的備用欄位。更改它會改變 Merkle 根,產生一整組新的區塊標頭供礦工嘗試。礦工也可以微調時間戳記;如今許多機器還能調整版本欄位中的幾個位元。

來源

  1. Nonce(隨機數) · Bitcoin Wiki
  2. 區塊雜湊演算法 · Bitcoin Wiki
  3. 區塊鏈參考資料:區塊標頭、默克爾樹、目標值 · Bitcoin 開發者文件

本頁即時數據來自 CloudMineCrypto API 和公開區塊鏈資料,並會定期更新,且會在各處標示。僅供教育用途,不構成財務建議。

現在來看看挖礦是怎麼運作的。

Claim a free 8-hour mining plan in the CloudMineCrypto app and watch your estimated BTC tick up from live network data. Withdraw to your own wallet, Lightning included. Rewards are estimates.