documentation
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
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
| milestone | epoch | cumulative | % of 21M | reward/min |
|---|---|---|---|---|
| Start | 0 | 0 | 0% | 207.90 |
| Day 1 | 1,440 | 295,126 | 1.4% | 202.04 |
| Day 7 | 10,080 | 1,903,735 | 9.1% | 171.57 |
| Day 21 | 30,240 | 4,827,162 | 23.0% | 122.56 |
| Day 69 | 100,000 | 10,395,000 | 49.5% | 51.97 |
| Day 208 | 300,000 | 15,592,500 | 74.2% | 12.99 |
| Day 694 | 1,000,000 | 18,900,000 | 90.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
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)
§3
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)
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
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 2× improvement, which is roughly where a second fee pays for itself.
§5
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
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.
| parameter | value |
|---|---|
| genesis target | type(uint256).max >> 16 |
| retarget window | every 60 epochs (~1 hour) |
| target submits | 50 per epoch |
| clamp | 4× per window |
| floor | never 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
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.
| era | epochs | fee | days |
|---|---|---|---|
| 0 | 0 – 99,999 | 0.00002 ETH | 0–69 |
| 1 | 100,000 – 199,999 | 0.00001 ETH | 69–139 |
| 2 | 200,000 – 299,999 | 0.000005 ETH | 139–208 |
| 3+ | 300,000+ | keeps halving | 208+ |
§8
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 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.
| source | side | amount | when |
|---|---|---|---|
| LP seed | NONCE | 210,000 | once, at deploy |
| Epoch tax | NONCE | 4% of the epoch's emission | every epoch |
| Submit fee | ETH | 50% of every fee | every submission |
| Deposit | both | everything accumulated | every 60 epochs |
| Trading fees | both | 1% of volume | harvested to the treasury |
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
Locking NONCE multiplies your mining score, linearly, up to 2×.
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
Worth reading before you spend electricity on this. These are enforced by the contract, not by promise.
| action | possible? |
|---|---|
| Lower the submit fee | yes — one-way, never upward |
| Change the tax split | yes — total capped at 5% |
| Change the treasury address | yes |
| Adjust the stake target | yes |
| Collect LP trading fees | yes — anyone can trigger it; destination is fixed |
| Raise the fee | no |
| Exceed 5% total tax | no |
| Change the emission curve | no — supply and H are constants |
| Withdraw LP principal | no — no decrease or burn path exists |
| Redirect LP fees | no — the recipient is immutable |
| Mint tokens | no — only mining and the one-time seed |
| Pause mining | no — there is no pause function |
§12
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.
| interface | for |
|---|---|
| Browser | Web Workers on this page — connect a wallet and press start |
| CLI | Rust, GPU-accelerated, for anyone running real hardware |
| MCP server | Any MCP-compatible agent, as a set of tools |
| Agent skill | An agent that installs, configures and runs the miner for you |