詞彙表 · 挖礦

Nonce

由 CloudMineCrypto 團隊撰寫更新於 亦稱「只用一次的數字」

定義

nonce 是 Bitcoin 區塊標頭中的 32 位數字,礦工每次嘗試都會更改它,以找出有效區塊。每個新 nonce 都會產生完全不同的雜湊值,所以礦工會透過嘗試不同 nonce 來碰運氣。

屬於 Bitcoin 挖礦術語表,用淺白英文解釋 88 個術語。

nonce 的所有可能值

4,294,967,296

個可能值,由 0 至 4,294,967,295(32 位)

整個 Bitcoin 網絡每秒大約試遍所有 nonce 204 十億次。根據網絡算力得出的即時估算,每小時更新。

礦工點樣使用 nonce?

礦工會建立區塊標頭,將 nonce 設為 0,然後計算雜湊值。如果雜湊值高於目標值,就會將 nonce 設為 1 再試一次,然後是 2,如此類推。Nonce 是「只用一次的數字」的簡稱。

沒有哪個 nonce 比其他的好。雜湊值無法預測,所以每次嘗試都有同樣微小的勝出機會。這就是挖礦公平的原因:每秒嘗試次數越多,機會就越多,除此之外沒有其他方法可以提高勝算。

nonce 用盡時會發生甚麼事?

4 個位元組只可容納 4,294,967,296 個值。現代機器不到千分之一秒就能試完。於是礦工會更改區塊中的其他資料,再從頭開始試 nonce。

礦工嘅運作循環

  1. 01

    嘗試每個 nonce

    0、1、2,一直到 4,294,967,295。4 位元組能容納的值就只有這些。

  2. 02

    好快就耗盡

    一部 100 TH/s 嘅機器,大約只需 43 百萬分之一秒就可以試晒所有可能。

  3. 03

    更改額外 nonce

    礦工會修改自己獎勵交易(coinbase)入面一個預留欄位。

  4. 04

    新嘅 Merkle root

    嗰筆交易一改,Merkle root 就會跟住變,每個 nonce 都會再次產生全新雜湊。

然後返去第 1 步。礦工亦可以稍微調整時間戳,令區塊標頭都改變。

通常會使用 extra nonce,即 coinbase 交易中的備用欄位。更改它會改變 Merkle root,令礦工可以嘗試一整批全新的區塊標頭。礦工亦可以微調時間戳記,而現時很多機器也可以更改版本欄位中的幾個位元。

來源

  1. Nonce · Bitcoin Wiki
  2. 區塊雜湊演算法 · Bitcoin Wiki
  3. 區塊鏈參考資料:區塊標頭、Merkle 樹、目標 · 比特幣開發者文件

本頁嘅即時數據來自 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.