Pages

Sunday, 26 August 2012

6.1 Bitlc.net - Pool hopping and unfulfilled promise.



0. Introduction


Pool:  Bitlc.net
Bitcointalk.org forum thread: https://bitcointalk.org/index.php?topic=10121.msg145350#msg145350
Pool op: Jim Nelin
Publicly identifiable pool operator: Yes.
Legally incorporated company: Yes
Payout method: Standard proportional reward
Hoppable? Yes.
Fee:  No fee
Block confirmations for payout:  0, payout is immediate.
Orphaned blocks: paid
Transaction fees: Paid to miners.
Current pool hashrate:  50 to 500 Ghps
Availability of public statistics: very good
  • All rounds since the start of the pool are available via json API.
  • Data includes txid , round shares, start and finish times for each round, number of valid share submitted, number of valid and invalid shares submitted.
  • Block announcements delayed by up to two hours to reduce profitability of strategic mining ("pool hopping").
  • Worker stats available via json API.
Accuracy of public statistics: Good. There were only three blocks with suspect data: block height 136037, 136049, and 136060. Data for these blocks contains either too many shares per round or round duration too short, indicating an unlikely 1 to 4 Thps average pool hashrate for these rounds.
Are public statistics likely to be reflecting actual data? Yes
Public perception of pool and pool op: Average to poor. Many miners have made complaints relating to the lack of ETA for a pool hopper proof reward system.

Should I mine here right now? No.

Should I mine here once a fair  payout method change is instituted? Uncertain.


1.  Starting with promise.
Forum member Jine (Jim Nelin)  announced Bitlc.net (at that time, Bitcoins.lc). He identified himself publicly on his website and on the Bitlc.net forum thread, and legally incorporated Bitlc.net - one of the few pools to do so.

From the start, the website had a very fast, attractive and user friendly interface compared to many pools at the time, and quickly gained hashrate. Within a month and a half the Bitlc.net had gained 5% of the network hashrate, and a month and a half later this had dropped to 2% of the network hashrate. Currently, Bitlc.net's base hashrate (when the pool isn't being used by pool hoppers) is about 0.5% of the network hashrate.

Why did a pool many useful applications for miners (including an online wallet service) and a website with a very good user interface fail so terribly? I believe the answer is twofold. 

Firstly, the pool doesn't take fees, and actually pays orphaned blocks, and provides a zero confirmation payout. The business plan was to provide value added services to miners for which they would want to pay, however few of these projects have eventuated. One, a bitcoin exchange, has been in the planning stages since the pools inception. A lack of income for the pool operator means difficulty in finding time to manage the pool and although Jine responds a quickly to miner complaints, it could be argued that some of these problems could have been solved by being able to spend more time monitoring the pool.

The second reason I believe the pool is failing is that the reward method is still a standard proportional reward method. Fulltime miner lose a significant proportion of income to pool hoppers, so why would anyone aware of this mine there? Even delaying the announcment of new blocks by a random delay of up to two hours does not prevent pool hoppers from benefiting at the expense of fulltime miners.

2. A potted history of Bitlc.net.
The following timeline of events is taken from the Bitlc.net forum thread. Plots of hashrate and percentage of network hashrate follow for reference.








Note that the pool's percentage of the network hashrate is in an almost continual decline since August 2011. The changes in the pool hashrate hide this somewhat, but hashrate as a percentage of network hashrate is a reasonable gauge of a pool's popularity. Bitlc.net's popularity started to wane permanently within two and a half months of starting.

I have a few opinions about that:

  • Inability to deal with pool hopping proxies. Proxies such as Multiclone and ABC Pool put the pool under a load that it could not manage. However, rather than changing to a fair reward method, Jine attempted almost any other fix to reduce the problem - banning IPs and accounts, delaying withdrawal of earned coins, delaying statistics by a random amount (first up to one hour, then up to two hours), making the pool statistics vary randomly for some users, beefing up the pool to attempt to deal with the massive onslaught of hashes the start of a round brought. 
  • Jine's attempts to reduce the negative effects of pool hoppers on the pool have not prevented pool hoppers from using the pool, and did not prevent the negative effects of pool hoppers on fulltime miners. From the forum thread, it seems many pool users left the pool once they realised pool hopping would affect their earnings and Jine was delaying the changeover to a fair reward method.
  • Inability to devote sufficient time to the pool and complete promised tasks and updates on time or at all.
I think it would not take much to make Bitlc.net a well used pool once again. JIne would need to:
  • Change to a fair reward method.
  • Monetise Bitlc.net so he could afford to spend more time completing promised upgrades and applications. Whether the monetisation would be as Jine initially intended with miners paying for value added services (much like Bitminter's "perk" system) or a flat fee, without earning from the pool it would be impossible for Jine to spend the amount of time that running a pool demands.
  • Bitlc.net must cost Jine significant money - he pays at 0 confirmations (and hence pays orphaned blocks)  and pays transaction fees to miners. If he can outlay this sort of cash and keep the pool running for more than a year, then he is well positioned to change Bitlc.net low fee PPS pool, making the changeover to a fair reward method simple.

2. Do Bitlc.net's round lengths appear geometrically distributed?
Are Bitlc.net's published round statistics accurate and reliable? Data used for the following analyses are here. Each row contains the blockheight, the unixtime the block was solved, how many valid shares were submitted before the round was solved, the duration of the round and the bitcoin mining difficulty (D) at which the round solved.

Readers should be aware from previous posts that number of shares required to solve a round is a geometrically distributed variable with respect to D. This makes analysing (shares per round) / D   a useful method to provide evidence that a pool is accurately reporting it's data and paying it's miners fairly.

First a visual inspection. Below are plots showing a comparison of Bitlc.net's (shares per round) / D with simulated data:

  • Chronological ordering of total round shares as a fraction of D.
  • Boxplots of total round shares as a fraction of D, grouped by difficulty period.






This simple visual inspection of Bitlc.net's published shares per round data does not show any significant variation from simulated data.

3. Theoretical comparisons i: Quantiles and empirical cumulative distribution function.


As discussed in previous posts, the cumulative distribution function (CDF) of Bitcoin pooled mining round lengths describes the probability that a round will be solved after a given number of shares have been contributed. For example, a large probability means that most rounds will be solved when a large number of shares are submitted. Since shorter rounds are more common, we expect the CDF to rise rapidly, and then level out and approach 1 at larger round lengths.

The comparison plot below on the left is a QQ plot  (quantile-quantile) to compare the quantiles from Bitlc.net's distribution of (shares per round) / D and what that distribution should be theoretically.

Quantiles are points taken at regular intervals from the cumulative distribution function (CDF). The empirical quantiles are from Bitlc.net (shares per round) / D  data, and the theoretical quantiles are calculated using the number of rounds in the dataset, so that there are the same number of theoretical as empirical data with the same cumulative probabilities. The empirical quantiles are then plotted as a function of theoretical quantiles, and the relationship here should be y = x. 

The comparison plot below on the right shows the difference between the theoretical CDF for geometrically distributed variables and the empirical CDF (eCDF) for Bitlc.net round lengths. The ecdf is is defined as:
ecdf = n/max(n) where 'n' is the nth datapoint in a set of data ordered by size







The QQ plot shows that the (shares per round) / D data does not vary significantly from those expected from a geometric distribution and the QQ line is very close to the expected y=x. The eCDF and theoretical CDF are very similar indicating the probability distribution for Bitlc.net's (shares per round) / D data is similar to that of a geometrically distributed variable.



4. Theoretical comparisons ii: The Kolmogorov-Smirnov test.

We can assess the comparison between the eCDF and the theoretical CDF more rigorously using the Kolmogorov-Smirnov testIn this case:

If:
H0 = Bitlc.net's  round lengths belong to a geometric distribution,
HA = Bitlc.net's  round lengths do not belong to a geometric distribution,
Then:
p value = 0.9995428
This means we cannot reject H0 as a hypothesis, and provides evidence that Bitlc.net's round lengths are distributed geometrically.


5. Theoretical comparisons iii: Moments.
Mean, median, variance, skewness and kurtosis are statistical parameters that we have previously used to analyse the distribution to which a pool's round length random variable belongs. The theoretical geometric distribution statistics and experimental parameters are shown in the table below.

The upper and lower bound for the mean, median, and standard deviation are the 95% confidence intervals for the sample statistics. For the skewness and kurtosis the lower and upper bounds are the bias-corrected and accelerated 95% confidence intervals as per D. Wright & J. Herrington.

The 95% confidence intervals for mean, median and standard deviation do not exclude the theoretical population mean, median, and standard deviation parameters of a geometric distribution where mean = D. Kurtosis and skewness are quite close to the expected values, and support the conclusion that the rounds are indeed geometrically distributed.


From the foregoing four sections,  we can conclude the historical round data from Bitlc.net is likely to have been accurate and honest.

6. Pool hopping and fulltime miner earnings loss
Having concluded that the available data is indeed accurate, we can use the data to determine what the expected payment per share is for fulltime miners at Bitlc.net. 

Firstly, is Bitlc.net being mined strategically? If so, we would expect shorter rounds to have a higher average hashrate, and longer rounds to have a lower average hashrate. The plot below is of the pool's chronological hashrate with short and long round coloured in terms of their CDF.



After the start of August 2011 (when thread posts reveal proxy pool hopping started) the separation in hashrate for the long (red) rounds and the short (blue) rounds becomes increasingly marked - short rounds have a much higher average hashrate than longer rounds. This is as we would expect if the pool was used by pool hoppers.

To estimate the amount of fulltime miner share value lost as a result of pool hoppers. In post 4.2: Slush's score method and miner earnings I derived a function for determining the maximum possible loss of expected share value for fulltime miners to pool hoppers at a  pool with a proportional reward method:


Maximum loss of share value for fulltime miners =  
 (1 - (1 - exp(-x) + f(x)))/(1 - (1 - exp(-x) * (x + 1) + x * exp(-x))) 
where x = shares already submitted to pool in round as a fraction of difficulty, and 
    f(x) = the expected earnings from shares submitted to rounds longer than the "hop point"

For a standard proportional pool, f(x) is:
f(x) = exp(x) * E1(x) * exp(-x) * x
= E1(x) * x 
where E1(x) is the exponential integral E(n=1)

In order to determine the actual change in expected share value for fulltime miners, the ratio of the of the hashrate of those miners who submit shares only to the "hop point" to those who mine fulltime, so that the equation above becomes:

Maximum loss of share value for fulltime miners =  
 (1 - y*(1 - exp(-x) + f(x)))/(1 - y*(1 - exp(-x) * (x + 1) + x * exp(-x))) 
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 
    f(x) = the expected earnings from shares submitted to rounds longer than the "hop point"
After substituting and simplifying, the earnings for fulltime miners in terms of the expected earnings for a share is:
(exp(x) * (x * y * E1(x) + y - 1) - y) / (exp(x) * (y - 1) - y) . . . 1.

So the following variables need to be determined: y, the ratio of pool hopper hashrate to fulltime miner hashrate, and x, the point at which pool hoppers tend to leave the pool (in terms of shares already submitted to pool in round as a fraction of difficulty). To help determine a typical change in hashrate with respect to round length for Bit.lc, below are plots of (shares per round) / D  and average hashrate for the round from August 2011 onward which have been separated into groups of fifty rounds.




In each plot, the hashrate for longer rounds is always lower than the hashrate for shorter rounds. As the hashrate contributed by pool hoppers increases, the decrease in hashrate becomes more pronounced. Fulltime miners have been increasingly losing earnings at this pool since August last year.

The last one hundred rounds at Bitlc.net have had comparable average hashrates per round. The plot below combines the last 100 rounds.


The spread of hashrate below 0.435*D is most likely due to pool hoppers leaving Bitlc to mine at pools where the expected value of  share is higher, or inaccurate estimations of when rounds have started. This makes it very difficult to model a function to determine the actual (rather than average) pool hashrate. However, an estimation of the pre and post "hop point" hashrates can be made by taking the median hashrate before 0.435 and after 2 * D. This method results in an estimated pool hopper hashrate of 288.15 Ghps and fulltime miner hashrate of 86.45 Ghps.

Assuming pool hoppers stop submitting shares at 0.435*D on average,  expression 1. results in 0.703. This means that fulltime miners at Bitlc.net earn only 70.3% of expected earnings - a 29.7% loss in earnings. 

While many miner advocates are concerned about loss of earnings for Deepbit.net's fulltime miners, that percentage loss is minimal compared to the loss of earnings experienced by fulltime miners at Bitlc.net.

7. Conclusions

  • Bitlc.net began with a good service and great ideas. Unfortunately the pool has stagnated with few recent updates and an unfair reward method.
  • Bitlc.net could be a much more successful pool if the reward method was changed and if monetised in such a way that Jine was able to spend more time on the pool or delegate someone to manage it.
  • Fulltime miners at Bitlc.net currently lose approximately 30% of their expected earnings to pool hoppers. By comparison, at Deepbit.net the current percentage loss of earnings for fulltime proportionally rewarded miners to pool hoppers is 1.9%.
  • Mining at a 5% fee PPS pool would earning the fulltime miners at Bitlc.net 35% more than they earn at Bitlc.net currently.






Donations help give me the time to investigate pools and write these posts. If you enjoy or find them helpful, please consider a small bitcoin donation:
12QxPHEuxDrs7mCyGSx1iVSozTwtquDB3r



No comments:

Post a Comment

Comments are switched off until the current spam storm ends.