Extranonce Explained: How Your Miner Searches Past the 4-Billion Nonce Cap
The block header nonce is a 32-bit field (~4.29 billion values). Bitcoin double-SHA-256s the 80-byte header; when that nonce range is exhausted, miners need a…

Your Bitaxe can burn through every possible value of the header nonce in a blink. The nonce field is only 32 bits wide — a little over four billion tickets — and once those are tried, the header has to change somehow or the miner is stuck hashing the same work forever. That "somehow" is the extranonce: extra search space that lives in the coinbase transaction, not in the six header fields. When the extranonce changes, the merkle root changes, the header changes, and the nonce range is fresh again.
The block header nonce is a 32-bit field (~4.29 billion values). Bitcoin double-SHA-256s the 80-byte header; when that nonce range is exhausted, miners need a different header. The usual way is to change an extranonce inside the coinbase, which rebuilds the merkle root. Stratum splits that space: extranonce1 comes from the pool, and extranonce2 is chosen by the miner within a size the pool advertises. On Bitmern Solo, keep BTC easy-start host btc.bitmernsolo.com with port :3132, username WALLET.worker, password x. Current Effort is not a find guarantee.
This post is the "what happens after the nonce wraps" lane. For the inner hashing loop, read what is a nonce. For the six header fields, read the Bitcoin block header explained. For how the merkle root is built, read block templates and the merkle root explained. For the coinbase itself, read the coinbase transaction explained.
Bitmern Solo is solo infrastructure: flat 1% fee on finds only, you keep 99%. Nothing in this post is financial advice, and nothing here promises a find.
The one-sentence version
The extranonce is how your miner gets a new header to hash after it has already tried every nonce on the current one.
Why four billion is not enough
Proof of work needs many independent attempts. Each attempt is "take this header, double-SHA-256 it, see if the hash is low enough." The cheapest thing to change between attempts is the nonce — field six of the header. Bump it, hash again.
A 32-bit nonce only holds values from 0 to 2³² − 1. That is about 4.29 billion candidates. On modern ASICs — even small home boards — that range can be scanned very quickly. When every nonce has been tried for a given header:
- Trying them again is useless: same header, same hashes.
- The miner must change something else in the header.
- Changing previous hash or nBits is not the miner's job (those come from the chain and the network).
- Changing the merkle root is allowed — if the miner changes something that feeds into that root.
That something is usually data inside the coinbase transaction. The extranonce sits there.
Where the extranonce lives
The extranonce is not one of the six header fields. It lives in the coinbase — the special first transaction that creates the block reward and fees. Changing any byte that ends up in the coinbase changes the coinbase's transaction ID, which changes the merkle root, which changes the header you hash.
So the chain of effect is:
extranonce changes
→ coinbase bytes change
→ coinbase txid changes
→ merkle root changes
→ header changes
→ full fresh 32-bit nonce range to search
You never type an extranonce into AxeOS. Firmware and the Stratum job handle it. What you do need to understand is why jobs keep updating and why "nonce" alone is not the whole search story.
Stratum's split: extranonce1 and extranonce2
Stratum does not send your miner a finished coinbase. It sends the coinbase in pieces plus a merkle branch so the miner can rebuild the root locally. Those pieces include room for an extranonce, and Stratum splits ownership of that room:
Piece Who sets it Role extranonce1 Pool Fixed for your connection / session (or until the pool rotates it). Keeps workers from colliding on the same coinbase space. extranonce2 Miner The miner rolls this within the size the pool advertised. Each new value → new merkle root → new nonce runway.On subscribe / authorize, the pool tells the miner how many bytes of extranonce2 it may use. More bytes means a vastly larger search space before the miner needs a brand-new job from the pool. Fewer bytes means the miner will ask for (or receive) fresh work more often once local space is used up.
Exact byte sizes and job cadence are pool- and firmware-specific. This post does not invent those numbers — see your AxeOS logs and the job messages if you are debugging. The idea is what matters: pool owns extranonce1; miner rolls extranonce2; together they expand search past the 4-billion nonce cap.
How this differs from "just rolling the nonce"
Knob Where it lives What changes in the header Nonce Header field 6 Only the nonce bytes Extranonce2 Inside coinbase Merkle root (field 3) nTime (timestamp rolling) Header field 4 Timestamp (see nTime / timestamp rolling after it publishes) Version rolling Header field 1 Certain version bits (firmware/pool negotiated)Nonce rolling is the inner loop — fastest, cheapest, no merkle rebuild. Extranonce rolling is the next layer out: slightly more work (rebuild merkle root), but it unlocks another full nonce space. Timestamp and version rolling are further knobs some firmwares use. For a Bitaxe on Bitmern Solo, you usually do not configure any of this by hand; you configure host, port, username, and password, and the stack does the rest.
Why the pool cares about extranonce1
If every miner on a pool used the same coinbase template and the same extranonce space, two miners could accidentally search identical headers and submit duplicate work. Extranonce1 gives the pool a way to partition the space: each connection gets a distinct prefix (or rotation), so workers stay out of each other's way while still building toward the same payout address in the coinbase.
On Bitmern Solo, that payout address comes from the wallet in your WALLET.worker username. The coinbase is built to pay that wallet (minus the flat 1% fee — you keep 99%). Extranonce changes do not change who gets paid; they change the search fingerprint while keeping the payout lock the same. Read the coinbase transaction explained for how that payout is locked in.
Job updates and "stale" work
Even with a large extranonce2 space, the pool will still send new jobs when:
- A new block appears on the network (previous hash must update).
- The template's transaction set changes enough that the pool wants a new merkle branch.
- Share difficulty or other job parameters change.
- The pool rotates extranonce1 or other session state.
When a new job arrives, work on the old job becomes stale. Submitting shares against an obsolete previous hash or obsolete template wastes effort. That is normal; the fix is a clean stratum connection and timely job handling — not "more extranonce." See stale shares fix and stratum protocol explained.
What this means for a Bitaxe on Bitmern Solo
You do not pick extranonce values. You do this:
- Point the miner at
btc.bitmernsolo.comwith port :3132. - Set username to
WALLET.worker(wallet you control + a worker label). - Set password to
x. - Let AxeOS subscribe, authorize, and receive jobs.
- Watch accepted shares on the matching coin tab.
Each accepted share is proof that — for some combination of nonce, extranonce2, and the rest of the header — your miner found a hash below the pool's share bar. Read share difficulty explained. A block-level find is the same kind of proof at the network target; Bitmern Solo's flat 1% applies on finds only.
Current Effort on the dashboard is an ops / attribution signal. It is not a find guarantee. Burning through nonce ranges and extranonce space does not make the next hash "due." Every hash is an independent draw — see proof of work explained and Current Effort explained.
A worked picture (EXAMPLE values only)
EXAMPLE ONLY — illustrative sizes, not Bitmern Solo or network claims
Header nonce space: 2^32 ≈ 4.29 billion candidates per header
Extranonce2 size: 4 bytes → 2^32 distinct merkle roots
Combined (cartoon): ~2^32 headers × 2^32 nonces per header
(real firmware also may roll nTime / version)
Meaning for you: when nonce wraps, bump extranonce2,
rebuild merkle root, start nonce at 0 again
Those powers of two are a teaching sketch. Your firmware's actual extranonce2 size and rolling order come from the Stratum handshake and the job — do not treat the example as a pool specification.
Checklist: extranonce without the jargon fog
1. Confirm the four stratum fields
Symptom: Miner offline or no shares.
Fix: In AxeOS set:
Host: btc.bitmernsolo.com
Port: 3132
Username: WALLET.worker
Password: x
Easy-start for BTC on a Bitaxe is :3132. If the URL looks wrong, read stratum URL mistakes.
2. Look for accepted shares, not "nonce progress"
Symptom: You want proof search is working.
Fix: Open the matching coin tab and look for fresh accepted shares. Shares prove work across whatever knobs the firmware is rolling — nonce, extranonce, and friends.
3. Treat job updates as normal
Symptom: Logs show frequent new jobs.
Fix: New tips and template updates are expected. Frequent stales or rejects need debugging — rejected shares fix — not hand-tuned extranonces.
4. Do not invent extranonce settings in AxeOS
Symptom: You want a menu for extranonce1 / extranonce2.
Fix: There usually is not one for home Bitaxe setups. The pool and firmware negotiate it. Changing host/port/user/password is your job; rolling extranonce2 is the miner's.
5. Read Current Effort as a signal, not a promise
Symptom: Effort is high after hours of hashing.
Fix: Exhausting nonce ranges does not schedule a find. Current Effort is not a find guarantee.
What this post will not invent
- No chip or Bitaxe model hashrate claims
- No claim about Bitmern Solo's exact extranonce2 byte size
- No current network difficulty, target, or odds
- No financial advice, ROI, or time-to-block promises
- No claim that "using more extranonce" increases luck on the next hash
Common extranonce misunderstandings
- "The nonce never runs out on a home miner." It can and does; that is why extranonce exists.
- "Extranonce is a seventh header field." No. It lives in the coinbase and affects the header through the merkle root.
- "I must set extranonce1 myself." The pool sets it. You set
WALLET.workerand the stratum endpoint. - "More extranonce2 bytes means I will find a block sooner." More space means more unique headers before you need a new job — not a higher chance per hash.
- "Shares ignore the extranonce." Shares are hashes of full headers. Whatever built that header — including extranonce2 — is part of the proof.
- "High Current Effort means the extranonce space is almost done and a block is coming." No. Current Effort is not a find guarantee.
Soft next step
Open AxeOS and confirm host btc.bitmernsolo.com, port :3132, username WALLET.worker, password x. Then open the matching coin tab on Bitmern Solo and watch accepted shares arrive. Each share is evidence that your miner is searching real headers — nonce, extranonce, and all — against real jobs. Keep the easy-start fields as above.
Start mining
Start Mining — after login, open the matching coin tab and confirm workers / shares / hashrate.
FAQ
What is an extranonce in Bitcoin mining?
Extra bytes in the coinbase transaction that the miner (and pool) can vary. Changing them changes the merkle root, which gives a fresh header and a fresh 32-bit nonce range to search.
What is the difference between extranonce1 and extranonce2?
In Stratum, extranonce1 is provided by the pool (often per connection). Extranonce2 is rolled by the miner within a size the pool advertises.
Why is the header nonce only 32 bits?
That is how the Bitcoin block header is defined. Four bytes for the nonce was enough in early designs; ASICs outgrew it, so search expanded via coinbase extranonce and other rolling fields.
Do I configure extranonce on a Bitaxe?
Usually no. You configure stratum host, port, username, and password. Firmware rolls extranonce2 as it searches.
What does Bitmern Solo charge?
A flat 1% fee on finds only — you keep 99%.
Does Current Effort mean I am about to find a block?
No. Current Effort is an ops / attribution signal — not a find guarantee. See Current Effort explained.


