@David's comment on this answer suggests that naive approaches to mining pool management don't work. What attacks are possible on such naive approaches, such as every miner gets a share proportional to his work?


The primary problem is an "attack" of sorts referred to as "Pool Hopping." Pool hopping was first described in a paper by Bitcoin forum member Raulo and between the paper and the ensuing discussion, it was determined that there is a strategy by which pools utilizing a proportional payout method can be exploited to maximize the miner's payout at the expense of other miners in the pool.

The attack works something like this:

  • If the number of shares submitted to a pool are less than or equal to 43% of the current difficulty, the miner mines at this pool.
  • If another pool has a lower share count, the miner switches to that pool instead
  • If no pools in the miner's list are at or below the 43% mark, the miner switches to a pool with a fair payout system as backup.

The math for why this works is well described in the paper I've linked, but the basic concept is this: If I submit one share and it's the only share in the pool so far and it just so happens to be the share that solves the block, my share was worth 50 BTC to me. If my share is one of two, it was worth 25 BTC and so on. Shares submitted in "short rounds" (i.e. rounds that take n < difficulty shares to solve) are worth more each than those in "long rounds" (n > difficulty shares). If a miner stays at a pool for a long time, the long and short rounds even out. Pool hopping ensures that you're always part of those "short rounds."

The full explanation is somewhat more complex, but that's a fairly basic explanation. 43% was chosen due to the math explained in Raulo's paper and there are a few scripts and applications to automate the pool hopping process, some free and some commercial.

There is rampant argument about the ethics of pool hopping, but there is little argument as to its effectiveness. Even hopping between a single proportional pool and a fair-scored backup pool sees substantial earnings increases. Hopping between multiple vulnerable pools increases gains dramatically.

  • "Hopping between multiple vulnerable pools effectively multiplies these gains by the number of available pools" - That's not literally true. The potential rewards asymptotically scale as the logarithm of the number of pools (but, in the limit of few continuous miners, scales as the hashrate of the continuous miners). – Meni Rosenfeld Oct 20 '11 at 19:02
  • Modified my wording. I think my insecurity over that last sentence was actually what sparked my Pool Hopping Math question, which you answered so excellently. I seem to have forgotten to change my wording here :) – David Perry Oct 20 '11 at 19:27

The problem isn't with giving every miner a share proportional to his work - this is the ideal, and the problem is how to give every miner a share proportional to his work. By itself this isn't an unambiguous specification of how rewards are given. Two reasonable interpretations are:

  1. Split each block's reward according to the number of shares submitted since the last block. This is the proportional system which suffers from the pool-hopping problem.
  2. Give each miner a reward directly proportional to the number of shares submitted, regardless of blocks found. This is the PPS system, which puts the operator in a lot of risk so it only makes sense if he charges a high fee. In the future, though, the infrastructure will exist to reduce the operator's risk and thus allowing PPS with a modest fee.

The different reward systems try to offer the ideal of fair payments while minimizing variance, maturity time, vulnerability and so on. Summary of mining pool reward systems and Analysis of Bitcoin pooled mining reward systems analyze the different methods and the background for their necessity.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.