Author

Topic: A short note about variance and pool payouts (Read 5336 times)

donator
Activity: 2058
Merit: 1054
April 01, 2011, 07:23:37 AM
#3
Quote
great explanation, thank you.

I would like to shamelessly add that there is a another "method of determining pool payouts" in existence. This is zero-variance method used by a number of "mining contract" providers like myself. With this method provider takes all the risks of high variance and customer having 0 variance receives exactly amount of expected BTC generation. Also please note that such ''mining contracts" are a form of pool where participants instead of directly contributing working mining hardware (CPU cycles) contribute something else like fiat money or even bitcoins.
I don't agree that mining contracts are a form of mining pools. Mining pools are generally understood to be a place where you can put in your own mining capacity. Mining contracts are an alternative variance-reduction service which caters to a different market.
member
Activity: 79
Merit: 10
Since the last difficulty change, my average has been consistent with the theoretical average I've calculated. I use "Share-based". However, before the last difficulty change, my average dropped so low for such a long time that i had to switch to Pay-Per-Share until the difficulty changed. It was a bit suspicious, but I'm not someone who throws around accusations, especially if i had some really good days with that pool, and also that i had problems with my computer during the second half of that change. I'll monitor it during this difficulty, if it happens again, I'm switching pools altogether, especially that my hash/s is stable since the last change.
donator
Activity: 2058
Merit: 1054
I have noticed a lot of confusion in these forums regarding the "fairness" of mining pool payouts, and I'd like to clarify some points. I don't have the time to write a long post that aspires to convince anyone; I'll just explain some facts for the benefit of those who will take my word for it.

If you mine solo at 500MH/s for a month, you will receive, on average, 223 BTC. This does not mean you're guaranteed to gain exactly 223 BTC, it could easily be 100 or 300 BTC. The exact amount you'll receive is a random variable, a quantity affected by chance which is not known in advance. The most important things to know about a random variable are its expectation and variance. The expectation is the average value of the variable, while the variance is a measure of how far it will tend to deviate from this average. If you were, in fact, guaranteed a 223 BTC payout, your expectation would be 223 BTC and your variance would be 0. In reality, for the mining scenario described, the expectation is 223 BTC and the variance is 11100 BTC^2.

Generally speaking, variance is bad, and solo mining with little capacity has huge variance. It is a general principle that variance can be reduced by joining forces, and this is exactly what a mining pool does - brings many miners together to reduce the variance of all without a significant impact on their expectation. Usually the pool operator takes a small fee for his service, which reduces the expectation for the participants - but this is worth it for the greatly reduced variance.

It is very important to realize that most pools still have some variance. If your payout from a pool is low, you don't generally know if it's because of a flaw of the pool (such as cheating) or because the pool just had an unlucky day. You can however reach some conclusions by examining the payout over a long period of time, preferably with some statistical know-how.

Generally, pools work by rewarding participants for submitting "shares", hashes for a block which satisfy the requirements for difficulty 1. These prove that some work was done. Occasionally, a submitted share will satisfy the real difficulty requirement, and the pool will benefit.

Several methods of determining pool payouts are in existence:

 - Pay per share: Every share submitted receives a fixed BTC reward known in advance. This has virtually 0 variance and is thus good for beginners. However, the operator is subject to enormous variance, and will thus take a large fee to cover his risk. This means the expectation for participants is low, so it's not an attractive long-term solution.

 - (Fixed-weight) Share-based: Every time a block is found, its reward is split between participants according to the number of shares they submitted. This method is vulnerable to a form of cheating known as "pool-hopping". There is strong evidence, yet no conclusive proof, that such cheating actively takes place in pools which still use this method. Cheating can reduce the payout for honest participants by up to 30%, and trying to prevent it requires obscuring pool statistics, so this method should be avoided.

 - Score-based: Each share submitted receives a score based on its age, and the block reward is split between participants according to their score. A controllable, mathematically sound implementation of the idea, which is immune to pool-hopping, was suggested by me; the methods currently used by slush and BTCmine are similar but slightly weaker. The variance of this method is slightly higher than share-based, but this is dwarfed by the risk of having your expectation greatly reduced by cheating. There is a myth that score-based is disadvantageous if you only mine several hours a day; in fact the expectation (which is the more important part) is exactly the same, and only the variance can slightly increase.

I hope this has helped some people to make sense of the arguments being thrown around. I'll be happy to hear feedback and questions.
Jump to: