Shared Maximum PPS
From Eligius
Note: Eligius has switched to the Capped PPS with Recent Backpay reward system
Contents |
Basic Idea
Miners accumulate Pay-Per-Share as usual. When a block is found, the pool counts the total unpaid PPS credits. If there are sufficient pool funds earned to pay them all in full PPS, that happens. If not, the miners are paid proportional to available funds. Remaining pool funds accumulate toward future payouts. The difference between a miner's actual (SMPPS) earnings and PPS earnings is retained as "extra credit", and considered in future blocks.
Pseudocode
Each time miner "m" submits a valid share the pool increments "sharesSubmittedSinceLastBlock[m]."
Each time a miner submits a share, it runs this algorithm:
miner.Earned += 50 BTC / pdifficulty
Each time the pool finds a block it runs this algorithm:
totalFunds += 50 BTC availableFunds = totalFunds - totalReward
totalEarned = 0 for each miner m totalEarned += m.Earned + m.ExtraCredit
for each miner m
reward = m.Earned + m.ExtraCredit
if totalEarned > availableFunds:
reward = reward * (totalFunds / totalEarned)
m.Reward += reward
totalReward += reward
m.ExtraCredit += m.Earned - reward
m.Earned = 0
Important note: since Eligius pays miners directly from the coinbase transaction, the actual payouts are sometimes delayed from when they are assigned to a miner's Reward. No more than about 50 BTC can be paid out each time the pool finds a block.
Important note: ExtraCredit is not earnings due payment. There is no guarantee the pool will ever find blocks sufficient to pay off all extra credit, and it is in fact statistically unlikely to ever due so.
Other notes:
- The complicated formula involving "difficulty" is basically the block reward divided by the expected number of shares-per-block. This is what makes Eligius pool-hopper-proof: the amount you get per share doesn't change (except when the difficulty changes).
- The amount of BC earned for a share does not depend on how many shares were contributed by other miners.
- The "else" branch happens when the pool doesn't have enough BC to pay out the ideal amount. Instead of paying you with just BCs (which it doesn't have enough to do), you are instead issued a fiat "extra credit" which has no value in itself, but the pool will count as earnings in future rounds.
- "pdifficulty" is an abbreviation for "pool difficulty", calculated as difficulty*(2^32-65535)/(2^32-1)
Variants
Note: Eligius does not currently use any variants, just vanilla SMPPS!
Equalized SMPPS (ESMPPS)
Note: Eligius does not currently use this variant!
With ordinary SMPPS, extra credit is weighed equally with current round shares in bulk. This means that if you earn 5 BTC worth of extra credit on round 1, you will be paid some proportion of that every round until it is all gone, even if it means shares from the current round have to be underpaid.
With the Equalized variant, extra credit is tracked on a per-share basis as a percentage, and shares with a smaller percentage paid are chosen for payment before shares that have already been paid as much. So if you get paid 95% of PPS for the shares in round 1, you will not be paid for those shares again until every other share since then has been paid at least 95% as well.
This is better than vanilla SMPPS, since it allows newbies (who may be sustaining the pool's existence) to earn on par with veteran miners (who may have moved on to greener grass).
Proportional / Pay Per Share (PPPS)
Note: Eligius does not currently use this variant!
Difference between PPS and actual earnings is not issued as extra credit, and is discarded entirely. By discarding it, the pool is free to begin building up a new buffer as soon as the unlucky round has finished.
Recent SMPPS (RSMPPS)
Note: Eligius does not use this variant!
The order of issued "extra credit" is remembered, and rewards are given starting at the most recent shares first. Therefore, the current round's shares are rewarded PPS in full first, and only after that are unpaid shares from the previous round considered. If there is still remaining reward to be distributed, this continues to go back round by round paying for underpaid shares.
This system aims to prioritize the most recent miners first.