27

What is pool hopping and how do pool hoppers affect other miners?

Are there ways to prevent it?

Murch
  • 75,206
  • 34
  • 186
  • 622
Dr.Haribo
  • 8,439
  • 10
  • 43
  • 62

3 Answers3

25

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.

toss
  • 3
  • 4
Meni Rosenfeld
  • 19,700
  • 37
  • 70
8

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.

David Perry
  • 14,378
  • 5
  • 62
  • 99
  • 3
    If pool hopping works, that means hoppers get more than their fair share. That means someone must get less than their fair share. Take one guess who that is. – David Schwartz Oct 16 '12 at 19:21
  • I'm sorry but I have to downvote for the wrong and very misleading remark that hopped pools pay fairly over the long term. Will undo when that's fixed. – Meni Rosenfeld Oct 16 '12 at 19:43
  • I disagree with these statements but will remove that paragraph anyway, in the interest of not being flamed for agreeing with math and common sense instead of popular hatred/opinion. I think you're working with an altered definition of "fair" that is only correct for PPS or other newer methods. Prop says you get a % of pool income based on shares and you do whether the pool is hopped or not. You're being paid exactly what you're supposed to be paid. – David Perry Oct 16 '12 at 20:25
  • By way of explanation: Imagine you're a dedicated miner on such a pool and hoppers show up and your pool solves a block in only 10% of the expected time - your shares are worth proportionally more than average too. At the times when the miners leave your shares are worth proportionally less than average. Hoppers aren't stealing from regular users, their share values will even out, they are simply mining at whatever place is most profitable for them right now - the failure of prop isn't that it lets hoppers "steal" it's that hopping creates volatility that pools are supposed to prevent. – David Perry Oct 16 '12 at 20:29
  • @DavidSchwartz it's not that hoppers are getting "more than their fair share" it's that there are periods of time on prop pools that everyone gets more than their fair share and the hoppers only hang around for those times. All miners' shares are still worth the same amount averaged over time and it still takes the same number of shares on average to solve a block. Hoppers are essentially gambling on short blocks in such a way that actually does ensure higher profitability. There's plenty of controversy to go around WRT hopping but no one has shown me actual MATH one way or another yet. – David Perry Oct 16 '12 at 20:30
  • @DavidPerry: That is absolute nonsense. A miner with X MH/s mining in a proportional pool, will earn less for his mining over the long run if the pool is hopped then if it's not. As for math, I assume you've read https://bitcoil.co.il/pool_analysis.pdf and in particular Appendix B? – Meni Rosenfeld Oct 16 '12 at 21:20
  • @MeniRosenfeld How about something with a little less calculus and no nonsense assumptions like an "infinite number of hoppers" - monte carlo simulation perhaps? Actual data from an actual hopped PPS pool? I'm sorry but when you open your statement with the assumed premise of an infinite number of hoppers you destroy all credibility. – David Perry Oct 16 '12 at 21:32
  • @DavidPerry: If there are some times when everyone gets more than their fair share, there must also be some times when everyone gets less than their fair share. It should all even out so everyone gets their fair share overall. But if pool hoppers are there when everyone gets more than their fair share and gone when everyone gets less, then it won't even out. The hoppers will only get more than their fair share and the non-hoppers will only get less. – David Schwartz Oct 16 '12 at 21:35
  • @DavidSchwartz seriously consider what you're saying here. Imagine we're talking about actual resources - a gold mine. The "honest" gold miner only ever sells to one market, whether they're paying well or poorly right now. The "dishonest" miner watches 10 different markets and sells to whoever is more profitable - the premise that since the "dishonest" miner makes more than the "honest" miner's expected average, he must be stealing from the honest miner is nonsense. – David Perry Oct 16 '12 at 21:37
  • @MeniRosenfeld in short, your assumption in this paper relies on the concept that the infinite number of miners bring the pool to 43.5% instantaneously and therefore steal all of those profits from the honest miners. This is ridiculous nonsense - regular miners get shares in during the first 43.5% as well and when blocks are found early are paid disproportionately. Of course it looks like theft if you assume regular miners never get shares in while the pay is above average. – David Perry Oct 16 '12 at 21:39
  • @DavidPerry: That's not what happens here though. This is like gold miners who cooperate by splitting all the gold they find based on hours worked. The "honest" gold miner digs even when there is no vein in sight. The "dishonest" gold miner joins the cooperative the second they find a vein and leaves as soon as the hard work of finding the next vein starts. And he is stealing from the honest miners, just as the pool hopper is, by getting a greater share of the profits relative to the work he contributes and leeching off the others willing to do the equally-necessary but less rewarding work. – David Schwartz Oct 16 '12 at 21:43
  • I'm done arguing this in comments. No one can find any data on this subject that doesn't require an advanced mathematics degree to verify or have ridiculous premises like infinite numbers of miners. There is no data on this as far as I'm concerned and that brings this to a difference of opinion which I refuse to continue arguing. I removed this paragraph from my post, there's nothing to argue about any more. I'll gladly debate with you elsewhere if you'd like :) – David Perry Oct 16 '12 at 21:47
  • @DavidPerry: OOC is handy with both simulations and analyzing empirical data in NPW, you may want to look at his work. Or do a simulation yourself if you won't listen to common sense. I derived the potential loss when there are infinitely many hoppers because it's easiest; obviously if there is some finite power X of hoppers the losses will be more than 0 and less than 43.5%, depending on X. Don't worry, I'm done arguing with you in either these comments or elsewhere, you should do your homework. – Meni Rosenfeld Oct 17 '12 at 09:32
  • 3
    I've been chatting with Meni outside of comments and I think I see where my brain was failing me yesterday - let's just say it all boils down to "don't do (then argue about) research while you're sick and pumped full of mind-altering medications." I'll amend my answer to include the corrected information and apologize for the ridiculousness of this comment thread. I'll be the first to admit I'm wrong, once proven, but half the point of admitting mistakes is to learn from them and I can get quite stubborn when I'm failing to understand how or why I was incorrect :P – David Perry Oct 17 '12 at 17:47
  • PPS = pay per share. I think what you mean is "proportional" – Highly Irregular Oct 17 '12 at 18:47
  • I've fixed it. Next time you might want to try suggesting an edit :) – David Perry Oct 17 '12 at 19:05
  • Feel free to delete any of my comments, including this one. – David Schwartz Oct 21 '12 at 16:46
  • I'd blow away this whole thread, but I don't want to be accused of covering up the evidence of my failure. I shall leave such decisions to my fellow moderators. – David Perry Oct 23 '12 at 04:40
3

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.

organofcorti
  • 337
  • 1
  • 9