Skip to main content

Nonce | Bitcoin Glossary | Mapping Bitcoin

Nonce

Minería

Also known as: number used once

A 32-bit number in the block header that miners increment to produce different hash outputs when searching for a valid proof of work. Miners vary the nonce (and other fields) until the resulting block header hash falls below the difficulty target.

Overview

The nonce ("number used once") is a 32-bit field in the Bitcoin block header that miners manipulate when searching for a valid proof of work. By changing the nonce and rehashing the block header, miners produce different hash outputs, looking for one that falls below the current difficulty target.

The Nonce in the Block Header

Block Header (80 bytes):
┌──────────────┬──────────────────┬──────────────┐
│ Version (4B) │ Prev Block Hash  │ Merkle Root  │
│              │    (32B)         │    (32B)     │
├──────────────┼──────────────────┼──────────────┤
│ Timestamp    │ Difficulty Bits  │   Nonce      │
│   (4B)       │     (4B)         │   (4B)       │
└──────────────┴──────────────────┴──────────────┘
                                      ↑
                              Miners vary this

The Nonce Space Problem

The nonce is only 32 bits, meaning it provides 2^32 (about 4.3 billion) possible values. Modern ASIC miners can exhaust the entire nonce space in less than a second. When this happens, miners must change other fields to get a new set of hashes to try:

  • Timestamp: Can be adjusted within a valid range
  • Coinbase transaction: Changing the coinbase data alters the Merkle root, producing an entirely new nonce space
  • Extra nonce: A field within the coinbase transaction specifically used for this purpose

Mining Loop

while true:
    for nonce in 0 to 2^32 - 1:
        hash = SHA256(SHA256(header_with_nonce))
        if hash < target:
            return block  // Valid block found!
    // Nonce space exhausted
    modify_coinbase_extra_nonce()
    recompute_merkle_root()

Common Misconceptions

The nonce is not a secret or cryptographic value — it is simply a counter that miners iterate through. There is nothing special about the winning nonce; any value that produces a hash below the target is equally valid. The process is pure brute force with no mathematical shortcut.