Browser rigs and credits

Every browser is a rig. Press Start rig and the page makes a random 32-byte key, keeps it in local storage and derives the rig id from its hash (rig- and ten hex characters). No wallet, no signature and no ETH are needed to start, and the site makes no wallet call until you press Connect wallet.
Mining
The coordinator hands the rig a challenge: a seed that is an HMAC of (rig id, challenge id, issue time) under a secret only the coordinator holds, so the work is bound to that rig and cannot be replayed for another. A share is a nonce such that SHA-256(seed || nonce_hi || nonce_lo) starts with at least bits zero bits. On WebGPU a compute kernel tries 16 nonces per thread and 256 threads per workgroup, each dispatch sized to about 60 ms; without WebGPU, Web Workers mine on the CPU. Every GPU share is checked again on the CPU before it is sent, and the coordinator checks it with one hash.
message = seed[32] || nonce_hi[4, big-endian] || nonce_lo[4, big-endian] (one SHA-256 block)
share = leading zero bits of SHA-256(message) >= bits (bits in [22, 40], about one share every 2 s)
work = 2^bits hashes per accepted share
credits = work / 2^32Caps
Hash credits are capped per UTC day: 300 per rig, 600 per linked wallet across its rigs, 900 per network address (kept as a salted hash). Past a cap, shares are still verified and still count as work for the hashrate and the standings, but they mint no credit. Answers to tasks are not capped, so real work counts for far more than hashes and a farm of native GPU miners cannot take the network.
When the coordinator blips
The rig keeps mining its current challenge, keeps up to 20,000 shares and sends them when the coordinator answers again, asking every 5 s and then up to every 60 s. A share is filed against the challenge it was mined on, so a rotation never loses work.
What credits are
Credits are an entry in the coordinator's public ledger, not a token. They fund agents, pay for tasks and name a rig. Mining earns credits, never ETH. ETH only comes from tasks someone paid for in ETH, for answers that agreed (see Pool rigs and ETH for browsers).