Here are some interesting results on the performance of different miners over the first 280,000 blocks of the Ethereum blockchain. For this period of time I have collected the list of block and uncle coinbase addresses; Raw data can be found here for blocks and here for uncles and we can glean a lot of interesting information from them, particularly about stale rates and how well the different miners and pools are connected.
First the scatterplot:
What we clearly see here are some primary trends. First off, the uncle rates are pretty low compared to Olympic; In total we saw 20750 uncles with 280000 blocks, or an uncle rate of 7.41% (if you calculate this inclusive, i.e. uncles as a percentage of all blocks and not uncles per block, you get 6.89%) – in short, not that much higher than similar numbers for Bitcoin, even in 2011 when the mining ecosystem was more similar to Ethereum, with CPU and GPUs still dominant and low transaction volume. Note that this does not mean that miners are only earning 93.11% of the revenue they would be if they were infinitely well connected to everyone else; Ethereum’s uncle mechanic effectively clips ~87% of the difference, so the actual “average loss” from poor connectivity is only ~0.9%. However, these losses will increase as the network sees more transactions for two reasons: first, the uncle mechanic only works with basic block rewards, not transaction fees, and second, larger blocks will inevitably result in longer propagation times.
Second, we can see that there is a general trend for larger miners to have lower uncle rates. This is of course to be expected, although it is important to analyze (1) why this is happening and (2) to what extent this is actually a real effect and not just a statistical artifact of the fact that smaller samples tend to have more extreme results.
Separated by miner size, the stats are as follows:
|Number of blocks mined||Average uncle rate|
* This result is arguably heavily skewed by a single outlier, the likely defective miner, which is the dot on the chart at 4005 mined blocks and an uncle rate of 0.378; Without this miner, we get an average uncle rate of 0.071 which is more in line with the general trend.
There are four primary hypotheses that can explain these results:
- professionalism inequality: Large miners are professional operations and have more resources available to invest in improving their overall connectivity to the network (e.g. by purchasing better wireless connections, by observing more closely whether their uncle rates are grossly suboptimal due to network issues ) and thus have higher efficiency. Small miners, on the other hand, tend to be tinkerers on their laptops and may not be particularly well-connected to the internet.
- Last Block Effect: The miner that produced the last block “learns” the block immediately instead of waiting ~1 second for it to propagate through the network, thus gaining an advantage in finding the next block
- pool efficiency: The very large miners are pools, and pools are probably more efficiently connected to networking than solo miners for some reason.
- time differences: Pools and other very large miners were not active on the first day of the blockchain, when block times were very fast and uncle rates were very high.
The last block effect clearly doesn’t tell the whole story. If it was 100% the cause then we would indeed see a linear decrease in efficiency: miners who mined 1 block might see an 8% uncle rate, miners who mined 28000 (i.e. 10% of all) blocks would see a 7.2% uncle rate, miners who mined 56000 blocks would see a 6.4% uncle rate, etc.; This is because miners who mined 20% of the blocks would have mined the last block 20% of the time and thus would benefit from an expected uncle rate of 0% 20% of the time, hence the 20% reduction from 8 % to 6.4%. The difference between miners who mined 1 block and miners who mined 100 blocks would be negligible. In reality, of course, the decrease in stale rates with increasing size appears to be almost perfectly logarithmic, a curve that is much more consistent with a theory of professionalism disparity than anything else. The time difference theory is also supported by the curve, although it is important to note that only ~1600 uncles (ie 8% of all uncles and 0.6% of all blocks) were mined during those first hectic two days when uncle rates were high and that can total at most ~0.6% of uncle rates.
The fact that professionalism differences seem to dominate is in some ways an encouraging sign, especially as (i) the factor plays a larger role at small to medium tiers than at medium to large tiers and (ii) individual miners tend to have opposing economic factors that outweigh their diminished efficiency – particularly the fact that they use hardware that they’ve largely already paid for.
Now what about the jump from 7.1% for 1000-10000 blocks to 5.5% for all above? The last-block effect can account for about 40% of the effect, but not all (quick math: the average miner in the first cohort has 1% network share, in the second cohort 10%, and the 9% difference should be a drop from 7.1* to 7.1% * 0.93 = 6.4%) although given the small number of miners it is important to note that any results here should be considered very preliminary at best.
Naturally, the key feature of miners over 10000 blocks is that they are pools (or at least three of the five; the other two are solo miners, despite being the smallest). Interestingly, the two non-pools have uncle rates of 8.1% and 3.5%, respectively, a weighted average of 6.0%, which is not significantly different from the 5.4% weighted average legacy rate of the three pools; Therefore, in general, it appears that the pools are marginally more efficient than the solo miners, but again, the result should not be considered statistically significant. Although the sample size in each pool is very large, the sample size of the pools is small. Also, the more efficient mining pool isn’t really the biggest (nanopool) – it’s Suprnova.
This leads us to an interesting question: Where do the efficiencies and inefficiencies of pooled mining come from? On the one hand, pools are probably very well connected to the network and doing a good job of propagating their own blocks; They also benefit from a weaker version of the last block effect (weaker version because there’s still the single hop round trip from miner to pool to miner). On the other hand, the delay in retrieving work from a pool after a block is created should increase the stale rate slightly: by about 1%, assuming a 200ms network latency. It is likely that these forces roughly cancel each other out.
The third key point to measure is: how much of the differences we see is due to true disparity in how well connected miners are, and how much is coincidence? To check this, we can perform a simple statistical test. Here are the deciles of the uncle rates of all miners that produced more than 100 blocks (i.e. the first number is the lowest uncle rate, the second number is the 10th percentile, the third is the 20th percentile, and so on until the last number is the highest):
[0.01125703564727955, 0.03481012658227848, 0.04812518452908179, 0.0582010582010582, 0.06701030927835051, 0.07642487046632124, 0.0847457627118644, 0.09588299024918744, 0.11538461538461539, 0.14803625377643503, 0.3787765293383271]
Here are the deciles generated by a random model, where each miner has a “natural” stale rate of 7.41% and any differences are due to some being lucky or unlucky:
[0.03, 0.052980132450331126, 0.06140350877192982, 0.06594885598923284, 0.06948640483383686, 0.07207207207207207, 0.07488986784140969, 0.078125, 0.08302752293577982, 0.09230769230769231, 0.12857142857142856]
So we get about half the effect. The other half actually comes from real connectivity differences; In particular, using a simple model where “natural” stale rates are random variables with a normal distribution about a mean of 0.09, a standard deviation of 0.06, and a hard minimum of 0, you get:
[0, 0.025374105400130124, 0.05084745762711865, 0.06557377049180328, 0.07669616519174041, 0.09032875837855091, 0.10062893081761007, 0.11311861743912019, 0.13307984790874525, 0.16252390057361377, 0.21085858585858586]
That’s pretty close, although it grows too fast on the low side and slow on the high side; In reality, the best-fitting “natural legacy distribution” appears to exhibit positive skewness, which we would expect given the diminishing returns from expending increasing effort to keep itself more and more connected to the network. Overall, the impact is not very large; in particular, when dividing by 8 after considering the uncle mechanism, the disparities are much smaller than the disparities in electricity costs. As such, the best approaches to improving decentralization in the future arguably focus heavily on finding more decentralized alternatives to mining pools; perhaps mining pools implementing something like Meni Rosenfeld’s multi-PPS could be a mid-term solution.