What is pool hopping and how do pool hoppers affect other miners?
Are there ways to prevent it?
Some mining pools have a reward method for which some times are better to mine than others; normally, miners contribute to the pool equally through good and bad times, and their reward averages out to what is statistically expected.
Pool-hopping is the practice of mining in a pool only during the good times, and leaving during the bad times; by so doing, a pool-hopper can get more out of the pool than the value they contribute to it, increasing their rewards at the expense of other miners. Pool-hopping gets its name from the act of constantly hopping into and out of the pool (to either other pools or solo mining).
The most well-known form of pool-hopping is with pools using the proportional method, which is among the oldest, simplest, most widely used and most prone to hopping. By all accounts hopping in this context was first discussed in a paper from January 2011 by Nakamoto Ryo; a more accurate analysis was given shortly after in Optimal pool abuse strategy by Raulo; these results were extended in Analysis of Bitcoin Pooled Mining Reward Systems by myself.
In the proportional method, a block's reward is distributed between miners in proportion to the number of shares each of them submitted since the previous block; the reward per share is the block reward divided by the number of shares in the round. Because of this, the reward of a share submitted at any given time is affected by the number of shares already submitted since the last block; a share submitted early in the round will have a higher reward on average than a share submitted later.
It can be shown that until the number of shares in the round is 43.5% of the difficulty, a submitted share will have higher than normal reward on average; the optimal way to exploit a single proportional pool is to mine in it until this point is reached, hop to a different pool, and return when a block is found. The gain that can be achieved by following this strategy is up to 28.1%, depending on the ratio between the hashrates of hoppers and continuous miners in this pool (the more hoppers, the less they will gain). The gain can be higher if more than one proportional pool is taken advantage of (for example, 51.6% can be achieved with 2 pools).
The extra profits of hoppers come at the expense of the continuous miners. The exact loss depends on the ratio between hoppers and continuous miners; when they are equal the loss is about 17.1%, and the theoretical limit when there are only hoppers is 43.5%.
Slush's method, which scores shares based on the time they are submitted, was designed to combat pool-hopping, but is only an incomplete solution. SMPPS which strives to converge to the full value of each share in the long run can only be hopped to minimize the time until being paid in full, not to increase the expected reward.
Modern methods make sure that the reward per share depends only on the future of the pool, not its past. This way, without being able to divine future random events, any time is as good as any other to mine, so there can never be any gain or loss from hopping (with the exception of block-withholding attacks). The most popular such methods are PPS, PPLNS and DGM.
Advanced forms of pool-hopping, possible in some naive reward method implementations, include difficulty retarget hopping, tx fee hopping and hashrate fluctuation hopping.
Pool hopping is a mechanism by which certain miners may exploit the payment mechanisms of pools to dramatically increase personal profits.
The original mechanism by which funds were distributed to miners is the simplest and most obvious: Each miner submits "shares" of work and when the pool finds a block, the divide the block reward based on the proportion of the shares - if you did 50% of the work you get 50% of the reward, if you did 3% of the work you get 3% of the reward. Simple.
Unfortunately this creates an imbalance wherein blocks solved in less than average time are worth more per share than blocks that took average times or longer to solve. This makes proportional pay systems inherently exploitable.
To simplify the concept, imagine you're at the world's strangest casino. The only game in the house is rock-paper-scissors and you're playing against the other patrons. If you win the first game after you sit down at a table, they pay you 10 times your bet. The second game pays 9 times, the third pays 8 and so on until eventually you're not even earning your bet back. It seems obvious that the optimal strategy is to hop from table to table taking advantage of the 10x payout rule as many times as possible without every hitting diminishing returns.
Pool hopping is much the same. Mathematically it works out that diminishing returns begin when all workers combined have submitted a number of shares approximately equal to 43% of the current difficulty. After this point, your shares aren't worth any more than average and it becomes more profitable to hop to another pool with fewer shares. This strategy produces, on average, about 28% more income for a pool-hopping miner.
The effect of pool hopping on the other users of the pool comes from a shift in one factor of mining without a corresponding shift in the other: time vs. hashrate. Without hoppers, the value of shares in a proportional pool differs with time - shares submitted early in a round are worth a great deal more than those submitted later, but as long as hoppers are not present, the value of shares average out to a fair value. While hoppers do not change the average number of shares per block or the number of shares an honest miner submits, they do decrease the duration of the higher-paying portions of a round. With the most profitable portion of the round taking significantly less time to complete than the remainder, a miner submitting shares at a constant rate will have far more shares on average in the less profitable parts of a round than in the most profitable, thereby reducing their overall average share value. The more hoppers are present, the shorter the profitable span becomes and therefore the more dramatic the effect.
Preventing pool-hopping is simple: When creating a pool, simply choose an algorithm for funds distribution that has been proven immune or even hostile to hopping - i.e. anything but proportional. When choosing a pool to mine in, one should similarly choose a pool which has chosen a fair payment schema.
My first answer only refers to the " how do pool hoppers affect other miners?" part of the question. The loss to full time miners at a standard proportional reward pool can be calculated as:
Maximum loss of share value for fulltime miners =
(exp(x) * (x * y * E1(x) + y - 1) - y) / (exp(x) * (y - 1) - y)
where x = shares already submitted to pool in round as a fraction of difficulty,
y = (pool hopper hashrate - fulltime miner hashrate) / (average hashrate up to "hop point"), and
E1(x) = Exponential integral (n=1, x)
More details: http://organofcorti.blogspot.com.au/2012/08/61-bitlcnet-pool-hopping-and.html
As for preventing it, if you're a pool operator use a fair reward method: Pay Per Share, Double Geometric Method or PPLNS.
If you're a miner, mine at a pool using one of the above reward methods. Either that or mine solo.