Nonce 是礦工用來驗證新區塊的任意數字。它是一個隨機或偽隨機數。
在 PoW 共識下,nonce 是區塊頭的一部分。而區塊頭包含以下內容:
挖礦程序產生一個隨機數,將其附加到當前區塊頭的哈希值,然後重新哈希該值,並將其與目標值(一個256 位元的數字,即區塊頭的雜湊值)進行比較。這個過程重複進行,直到得到的雜湊值滿足要求(小於或等於目標值)。然後,礦工被認為找到了解決方案,並被授予區塊。
比特幣區塊中的 nonce 是一個 32 位元(4 位元組)欄位。因此,它提供了 2³²(=4,294,967,296)位元的搜尋空間。
然而,由於搜尋空間龐大,幾乎不可能在沒有計算的情況下「猜測」。這種迭代計算消耗時間和資源,構成了所謂的 "工作證明(PoW)" 中的 "工作"。這個計算過程也被稱為 "挖礦"。
區塊難度在整個網路中保持相同。理論上,所有礦工都有相同的機會找出正確的哈希值。加密貨幣網路通常會設定一個目標區塊數量,希望在特定時間內處理,並根據需要調整難度,以確保實現這個目標。例如,比特幣的難度大約每兩週固定一次。如果處理的區塊數量未達到此目標,則難度將降低,難度降低的幅度取決於處理時間超出限制的程度。