How the pool works
No black box. Below is exactly how the Ancient Stoa Pool turns your hashpower into a payout — from the moment your rig asks for work to the day your STOA arrives. Every step is the real implementation, written plainly.
01Getting work to your rigs
The pool runs next to a StoaChain node. StoaChain is a Chainweb-style chain with 10 braided chains that each target a block roughly every 30 seconds. The pool pulls a fresh unit of work from the node and hands it to your rigs over the standard Stratum protocol.
It mines one chain at a time, paced by the node — the same discipline the proven reference miner uses. It holds that chain's work until the node signals the work is superseded (an instant push), one of your rigs solves it, or a short liveness timer fires — then it fetches the next chain. This keeps every rig grinding a single coherent job to full depth instead of being yanked between chains.
Every ~500 milliseconds the pool re-issues the current job with a freshly advanced timestamp. That hands each rig a brand-new search space, so a fast ASIC never burns through its ~2-seconds-worth of nonces and stalls waiting for the next block.
Each connection is given a unique nonce range, so no two rigs ever grind the same numbers — every rig's work is additive, and your fleet's combined hashrate is the sum of its parts.
02Difficulty & shares
Your rig is given a fixed difficulty target, set as a power of two (a “level”) by the operator and calibrated to the connected hardware — currently the level the StoaChain ASICs are tuned for. The pool does not silently change your difficulty mid-session.
A share is a hash that clears that target: proof your rig is doing real work. Every accepted share is weighted by its difficulty, and that weight is what later earns you a slice of a block. Shares that don't clear the target are simply not counted.
(A per-connection variable difficulty exists in the engine but is intentionally disabled: a single fixed level is the right fit for a uniform ASIC fleet and avoids the instability that auto-adjusting difficulty caused. Distinct fixed levels per hardware class are the planned path for mixed fleets.)
03Finding & confirming blocks
When a share also clears the far harder network target, it isn't just a share — it's a block. The pool submits it to the node immediately. It submits at most one block per unit of work (the node primes a single payload per work item, so a duplicate would be rejected).
A found block only becomes earnings once the hub independently confirms it stayed canonical at a safe depth on its own chain. A block that loses the race to a competing one (an orphan) is never credited — so a re-org or an orphan can never over-pay anyone.
04Splitting the reward — PPLNS
Each confirmed block's full reward is split across the last N accepted shares from the whole pool, weighted by difficulty — the classic Pay-Per-Last-N-Shares scheme. Older shares beyond that window don't earn.
PPLNS makes the pool pool-hop resistant: you're paid for sustained contribution, not for jumping in just before a block lands. The split is exact to the smallest unit — no dust is lost or invented; the per-worker credits for a block always sum to exactly one block reward.
The pool fee is applied at payout time, not when a block is attributed. You are credited the gross amount as you mine, and the fee comes off once, at the daily payout.
05Aggregation & the daily payout
Your earnings accrue across all 10 chains. Once per day the pool sweeps every chain's balance onto chain 0 and pays everyone in a single bulk transaction — up to 5,000 worker addresses at once — so payout gas stays negligible no matter how many miners join.
You hold your keys. Payouts go only to the address you proved ownership of; the pool never holds your spending keys and can never move your funds. Your authoritative balance is tracked on the hub, independently of the mining box.
06Your data, kept fair
For attribution the pool only ever needs the recent shares (the last-N window) plus a short recent slice for the live hashrate estimate. It keeps a rolling window of recent shares and prunes older raw shares — they are never read again. (This is also why the pool stays fast and stable over long uptimes.)
What is kept permanently: your earnings, your lifetime accepted-share count, and your full payout history. Those are never pruned. Pruning old raw shares never touches a single unit of what you're owed.
Finally, the hashrate on your dashboard is an estimate derived from your accepted shares over a short window — so it naturally bounces from minute to minute, and two identical rigs will often read very differently at any instant. Your earnings track the real work done, not the jumpy live gauge — watch the accepted-share count and owed balance over time, not the momentary hashrate.
This page describes the live pool faithfully and is updated whenever the algorithms change. Mining is competitive and on-chain; nothing here is a guarantee of profit.