Understanding the PPLNS reward scheme.
The fastest path from "I have a GPU or ASIC" to "shares are landing" on the testnet demo. Five steps.
01 Shares, the unit of work
A pool cannot see how hard an individual miner is working by looking at the blockchain alone — blocks are found too rarely for that. Instead each miner submits shares: hashes that meet a difficulty target far easier than a real block. A share is proof that a miner is doing the work, and it is the accounting unit every reward scheme is built on. The more hashing a miner does, the more shares it submits in a given window. None of this is money — on this stack the result is testnet coin units with no monetary value.
02 What PPLNS means
PPLNS stands for Pay Per Last N Shares. When the pool finds a block, it does not look at every share ever submitted — it looks back over the last N shares the pool received, across all miners, and attributes the block’s coinbase to those miners in proportion to how many of those N shares each one contributed.
The size of that window — the value of N — is the key parameter. A larger N reaches further back in time and smooths out short-term luck; a smaller N reacts faster to who is hashing right now. N is operator-configurable in the pool engine, so you tune the window to suit your miners.
03 PPLNS versus PPS and FPPS
PPLNS is one of several schemes, and the trade-off between them is variance versus operator risk.
- PPS — Pay Per Share. The pool attributes a fixed amount for every valid share, the moment it arrives, whether or not a block is found. Miners get a perfectly smooth, predictable result, but the operator absorbs all the luck: if blocks come slowly, the pool has attributed more than it has found.
- FPPS — Full Pay Per Share. Like PPS, but the fixed per-share amount also accounts for the transaction-fee portion of a block. Still smooth for the miner, still operator-carried variance.
- PPLNS. The pool attributes only when a block is actually found, sharing it across the recent window. The operator carries no shortfall — you never attribute more than a block actually produced — but an individual miner sees more run-to-run variance, because their result depends on blocks landing while their shares are in the window.
04 Why the stack defaults to PPLNS
The pool engine ships defaulted to PPLNS for two reasons.
First, it rewards consistent miners. Because the window only ever contains recent shares, the miners who stay connected and contribute steadily are the ones represented when a block lands. Someone who hops in only when conditions look good is rarely in the window at the right moment.
Second, it lets the operator keep the fee low. Under PPS or FPPS the operator is underwriting variance and usually charges a higher fee to cover that risk. PPLNS carries no such shortfall, so you can run a lean fee. The fee itself is operator-set — you choose the percentage the pool retains from each found block before attribution, and PPLNS is what makes a small number sustainable.
05 Orphaned blocks
Sometimes the pool finds a block that the wider network does not ultimately accept — two valid blocks appear at the same height and the chain builds on the other one. That block is orphaned. It never makes it into the canonical chain, so it produces no coinbase, and there is therefore nothing to attribute for it. Under PPLNS an orphaned block is simply not paid; the shares that would have shared it stay in the window and count towards the next block the pool does land.