I finally got around to finishing part 2 of the BitcoinPool series:
Neighbourhood Pool Watch 8.2 BitcoinPool: The great anomaly hunt.Lots of weirdness happening at this pool, and it seems that the BitcoinPool miners are suffering:
6. Discussion and summary.
What has the great anomaly hunt revealed? Some strange and improbable anomalies, certainly. For a start, It is extremely improbable that the statistics of rounds 480 onward are distributed as they should be.
To answer my initial questions:
Did the anomalous rounds occur equally at all times, or only for a particular epoch of time?
Rounds 1 to 479 have very different statistics to those from 480 onward
Did the anomalous rounds occur equallyfor all sized rounds, or for some particular sized rounds only?
For rounds 480, the number of rounds having shares per round between 0 to 0.11 x D, and 0.36 to 0.51 x D are improbably small, and the number of rounds having shares per round greater than 2.3 x D are improbably many.
These facts do not really help us explain what the cause of the anomalies are. I have not been able to determine the way this could occur - either accidentally or on purpose. For example:
Block withholding attack (see Meni Rosenfeld's "Analysis of Bitcoin Pooled Mining Reward Systems" for details): A "sabotage" attack is unlikely - the anomaly has been occurred at BitcoinPool for nearly 18 months (at the time of writing), and I find it unlikely that anyone would be able to keep up this kind "no reward" of attack for so long. Also, to what end? If I'm the first analyst to find this, it's not an obvious problem for the pool. A "lie in wait" attack might be more likely, but I'm not sure how to calculate how profitable it would be for BitcoinPool's piecemeal reward function. Certainly possible though.
From pool op Geebus:
"The efficiency of any given miner, if not returning a share that could have potentially have had the answer to that block due to not hashing it before another entity in the bitcoin network solves a block, and long polling triggers, could change the outcome. "
Although this might seem intuitive to some, the efficiency of an arbitrary miner cannot affect the number of shares required for the pool to solve a block. Only valid shares received by the pool are recorded; non shares that are not sent by low efficiency miners are not recorded.
Pool operator malfeasance (someone with access to the pool server and data base): I think this is unlikely. If, for example, round with few shares are not being recorded and simply being added to the next round, then we would expect to see a spike in the next largest sized round, then a slight dip for the next largest shares per round /D bin, and slightly more than expected for the remainder of larger shares per round /D bins. The histogram shows that this is not the case. Applying some sort of function to the result of the number of shares per round (as was almost certainly the case for bitclockers.com before they became a PPS pool) would not have had such an apparently discontinuous effect on the pools shares per round / D distribution.
The most likely of the explanations that I've been able to analyse (and some I couldn't) seems to be a "lie in wait" attack. Even this is quite unlikely though - the hashrate required to make such an attack usefully profitable is quite high, and the pool's total percentage of the network is less than 0.2%.
So I'm not sure what the mechanism behind the anomalies is, or whether it's an internal or external attack, or if perhaps the shares are not being recorded properly in some strange way that targets only specific sized rounds. I am however quite confident that this is not just a period of bad luck for BitcoinPool - there are just too many extremely improbable anomalies for that to have occurred.
Until Geebus and FairUser can investigate and solve this problem, I'd avoid mining at BitcoinPool.com - the last 18 months history of the pool suggest you'll earn an average of only 80% of your expected mining reward.