documentation

How NONCE works

NONCE is an ERC-20 token whose only issuance path is proof of work. There is no pre-mine, no allowlist and no team allocation: every token in circulation was produced by someone burning compute to find a hash. This page is the complete mechanism, including the parts that are unflattering.

§1

Emission

Supply is capped at 21,000,000. Of that, 210,000 (1%) is minted once at deploy straight into the liquidity contract — not to any wallet — which leaves 20,790,000 to be mined. The seed is carved out of the 21M, not added on top, so total supply can never exceed the cap.

Rewards decay on a smooth curve rather than in halving cliffs. There is no night where the reward drops by half and half the miners leave.

A(t) = 20,790,000 × t / (t + H)      cumulative
R(t) = A(t + 1) − A(t)                per epoch
H = 100,000 epochs. The per-epoch reward is the exact difference, so the rewards sum to A(t) with no rounding drift.
025%50%75%100%1d7d30d69d1y3.8y
Cumulative emission as a share of the 20,790,000 mineable. Time is logarithmic — on a linear axis the first week, where the reward falls fastest, would be a sliver against three flat years. The marker is epoch 100,000, where half is out.
milestoneepochcumulative% of 21Mreward/min
Start000%207.90
Day 11,440295,1261.4%202.04
Day 710,0801,903,7359.1%171.57
Day 2130,2404,827,16223.0%122.56
Day 69100,00010,395,00049.5%51.97
Day 208300,00015,592,50074.2%12.99
Day 6941,000,00018,900,00090.0%1.72

Half the mineable supply is out at roughly day 69, three quarters at day 208. The tail never fully exhausts — the curve approaches the cap asymptotically, so there is always a reward, however small.

§2

The epoch

One epoch is 60 seconds. Each epoch has a pot, and everyone who submits a valid hash during it shares that pot.

If nobody mines an epoch, its emission is not burned. It rolls into the next epoch that does get a submit. The contract computes this in one step from the closed-form curve rather than looping, so a gap of ten epochs and a gap of ten thousand cost the same gas.

pot(e) = A(e + 1) − A(lastOpenedEpoch)
Opening epoch e absorbs everything since the last opened epoch.

§3

Mining

Mining is a search for a keccak256 digest at or below the current target. The preimage is 84 bytes:

digest = keccak256(challenge ‖ msg.sender ‖ nonce)
require(uint256(digest) <= target)
Verification on chain costs about 30 gas plus calldata.

Your address is inside the preimage. A solution is therefore worthless to anyone else: it cannot be lifted out of the mempool, resold, or replayed from another wallet. That is also why there is no per-wallet cap — splitting across wallets does not reduce the work.

The challenge rotates once per epoch, not once per solution. 0xBitcoin rotates per mint, which invalidates every other miner's in-flight work the instant someone lands a solution and makes small or browser mining pointless. Per-epoch rotation gives every wallet its own independent search space for the full minute.

§4

Submitting

You may submit up to 10 times per epoch, and only your best hash counts. Extra submits are rerolls: a better hash replaces your previous one, a worse hash changes nothing but still costs the fee.

The rational play is to mine for most of the minute, submit once near the end, and only submit again if a materially better hash turns up. The reference miner defaults to rerolling at a improvement, which is roughly where a second fee pays for itself.

§5

Distribution

Not winner-takes-all. Everyone who submits a valid hash earns something, in proportion to how good their best hash was.

score  = type(uint256).max / uint256(bestDigest)
share  = score / totalScoreThisEpoch
reward = epochPot × share

A GPU explores more of the space and so usually finds a better hash than a laptop, and earns more. But a laptop is never shut out, and never spends a whole session earning nothing the way a winner-takes-all chain would leave it.

§6

Difficulty

The target is a spam filter, not a reward mechanism. It sets the minimum hash quality worth putting on chain; it has no effect on how the pot is split.

parametervalue
genesis targettype(uint256).max >> 16
retarget windowevery 60 epochs (~1 hour)
target submits50 per epoch
clamp4× per window
floornever easier than genesis

At the genesis target, roughly one in 65,536 hashes qualifies — a laptop at 2 MH/s finds well over a thousand valid hashes a minute, so nobody is priced out at launch.

§7

Fees

Each submit costs a small ETH fee on top of gas — 0.00002 ETH at launch, about five cents. Half goes to the treasury, half into the liquidity pool.

The fee halves automatically every 100,000 epochs, and it is a one-way ratchet: the owner can lower it at any time, including to zero, but the contract will not let anyone raise it. Ever.

eraepochsfeedays
00 – 99,9990.00002 ETH0–69
1100,000 – 199,9990.00001 ETH69–139
2200,000 – 299,9990.000005 ETH139–208
3+300,000+keeps halving208+

§8

Tax

Before each epoch is split among miners, 5% is taken: 1% to the treasury and 4% into protocol liquidity. Miners keep 95%.

The split is adjustable by the owner but the total is capped at 5% in the contract. It can be moved to 0%/5% or 5%/0%, but never to 6%. Over the full curve that is about 207,900 NONCE to the treasury and 831,600 into liquidity.

There is no transfer tax. Buying, selling and moving NONCE costs nothing beyond gas.

§9

Liquidity

Liquidity is not seeded with anyone's capital — it is built by mining. The 210,000 NONCE seed plus 4% of every epoch forms the token side; half of every submit fee forms the ETH side. Roughly hourly the contract pairs what has accumulated into a NONCE/ETH position on Uniswap v4.

The position is full range and the position NFT is held by the contract. There is no function to decrease or burn that liquidity, by anyone, including the owner. Trading fees are separate: they are paid out in both ETH and NONCE to the treasury wallet.

sourcesideamountwhen
LP seedNONCE210,000once, at deploy
Epoch taxNONCE4% of the epoch's emissionevery epoch
Submit feeETH50% of every feeevery submission
Depositbotheverything accumulatedevery 60 epochs
Trading feesboth1% of volumeharvested to the treasury
miningevery epoch4% of emissionNONCE side50% of each feeETH sideaccumulatorsheld by the token
Uniswap v4 positionfull range · NFT held by the contracttrading feesETH and NONCEtreasury wallet

There is no arrow back out of the position. No function decreases or burns that liquidity — not for the owner, not for anyone.

The starting price is derived from whatever has accumulated rather than chosen in advance. Picking a price first and depositing later is what leaves one side unconsumed. A consequence worth stating plainly: the launch price is set by mining activity, so it is low and thin at first and rises as fees flow in.

§10

Staking

Locking NONCE multiplies your mining score, linearly, up to .

effectiveScore = score × (1 + min(staked / stakeTarget, 1))
stakeTarget    = max(epochReward × 5, 100 NONCE)

The target is not a fixed number. It tracks the emission curve, so it is about 1,040 NONCE on day one and shrinks as rewards do. A fixed target would quietly punish anyone who arrived late, charging them months of mining for the same boost an early miner got for a few minutes.

§11

What the owner can and cannot do

Worth reading before you spend electricity on this. These are enforced by the contract, not by promise.

actionpossible?
Lower the submit feeyes — one-way, never upward
Change the tax splityes — total capped at 5%
Change the treasury addressyes
Adjust the stake targetyes
Collect LP trading feesyes — anyone can trigger it; destination is fixed
Raise the feeno
Exceed 5% total taxno
Change the emission curveno — supply and H are constants
Withdraw LP principalno — no decrease or burn path exists
Redirect LP feesno — the recipient is immutable
Mint tokensno — only mining and the one-time seed
Pause miningno — there is no pause function

§12

Where to mine

Four interfaces, one hash function. The browser miner, the CLI and the agent tooling all run the same batch loop, which is checked byte-for-byte against digests generated by the contract itself — a second implementation would be a second chance to disagree with the EVM by one byte and have every solution silently rejected.

interfacefor
BrowserWeb Workers on this page — connect a wallet and press start
CLIRust, GPU-accelerated, for anyone running real hardware
MCP serverAny MCP-compatible agent, as a set of tools
Agent skillAn agent that installs, configures and runs the miner for you

back to the miner