How paging works
paging turns your idle CPU and GPU into a compute worker. It runs verified jobs in the browser and pays out in USDC, in real time. No download, no extension, no background process.
Sign in with your wallet
There are no passwords. You connect a Solana wallet and sign a one-time nonce; the signature proves you own the address. Nothing leaves your wallet but that signature, and signing in costs nothing on-chain.
Your wallet address is your identity across paging: it is what the leaderboard ranks and where payouts are sent.
Your browser registers as a worker
Press start on Earn and paging checks for WebGPU, then registers your machine as a worker. Compute runs in a dedicated background thread, so the page stays responsive and closing the tab stops everything immediately.
The worker then polls for jobs. Each job the server hands back is small and self-contained: an integer seed and a size.
Run a verified compute job
A job is a deterministic integer kernel that runs as a WebGPU compute shader on your hardware. It expands the seed across roughly a million units of work and folds them into a single digest. Because the math is pure 32-bit integer arithmetic, the result is exact and reproducible.
// the same deterministic integer kernel runs on your GPU
// (as a WebGPU compute shader) and again on the server.
// pure 32-bit integer math, so digests match bit for bit.
fn step(x: u32) -> u32 {
var v = x * 1664525u + 1013904223u; // LCG
v = v ^ (v >> 16u); // avalanche
return v;
}
// ~1M units per job — the server recomputes and verifies the digest.When your worker returns its digest, the server recomputes the same kernel from the seed it issued and compares. A digest that does not match is rejected and the worker is flagged; only verified work is ever paid. The size, and therefore the work credited, is fixed server-side, so a client cannot inflate its own reward.
Earn USDC as jobs settle
Each verified job credits your balance in USDC, shown in dollars everywhere on the site. There is also an uptime drip while you have recent verified work, so an actively working machine keeps earning between jobs. Everything is capped daily to keep the ledger honest.
Balances are gasless and instant: the moment a job verifies, your balance and the leaderboard update live over a server-sent event stream. Nothing to sign, no fee while you work.
// live balance update, streamed over SSE as you earn
event: message
data: { "balance": 1043210, "sessionEarned": 512, "throughput": 26214 }
// balance is an integer ledger in USDC base units — 1043210 = $1.043210Withdraw to your Solana wallet
Earned USDC settles on an off-chain ledger first, then withdraws on-chain to the wallet you signed in with. A short unlock applies after you begin working before your first withdrawal, and there is a brief cooldown between withdrawals.
A withdrawal debits your balance atomically before the transfer, and if the on-chain send fails the amount is automatically refunded, so you can never lose or double-spend a balance. Track it all on Payouts.
Common questions
What do I need to start?
A recent Chrome or Edge with WebGPU and hardware acceleration enabled, plus a Solana wallet. That is it. There is nothing to install.
Will this stress my hardware?
It is ordinary WebGPU work, the same class of load as a 3D web game. Stop the worker or close the tab and it ends at once. There is no background process left running.
How is the work verified?
The compute kernel is deterministic, so the server recomputes each job from the seed it issued and checks your digest against its own. Only matching, verified jobs are credited.
Why are balances shown in fractions of a cent?
The ledger is denominated in µUSDC to match USDC's six on-chain decimals. Small drips read precisely, and your withdrawal transfers those base units straight to your wallet.
