At bitfly our main goal is to always provide the most profitable mining pools to ensure our miners get the highest possible amount of coins for their hashrate. In order to compare our pools with our competition we initially set up an internal comparison system. After realizing how valuable a representative mining pool comparison is, we decided to make our system public and expand it to many other coins / algorithms (even one we do not offer mining pools right now).
The payout of a mining pool is influenced by lots of variables like network difficulty, total hashrate of the pool, pool server latency, payout method, fees, pool luck and many more. Comparing systems with so many changing variables is not trivial and needs a special approach.
The naive method to compare mining pools is to select a few candidates for a coin and mine x days on the first, then x days on the second and so on. After having mined on all candidate pools you compare how much coins you have received from each pool. This method has a key problem as it does not take into account changes in the network difficulty of the coin. While mining on the first pool the difficulty could have been higher or lower compared to when mining on the other pools. Especially with young coins one can expect large difficulty variations. Also if x is short pool luck will influence the results significantly.
Another method is to mine on all tested pools at the same time using multiple GPUs/ASICS. While this method will yield much better results than the first approach our experience shows that it still has its problems. First if the tested period is to short, pool luck will still influence the results. Furthermore, even if two rigs are built from the same components, their hashrate might not be to 100% similar and will still be subject to large variance. If we want to detect pool performance differences in the range of 1–2% such a hashrate difference will also have an significant impact on the results.
Similar to the second approach mentioned in the previous point, we use identical hardware to mine at several pools at the same time. Instead of mining directly to each pool all our miners go trough a local proxy which is counting each submitted and accepted share in order to accurately calculate the amount of accepted hashrate sent to each pool.
Second we have integrate with APIs provided be to pool to continuously monitor the accumulated balance of our mining accounts.
In order to calculate our comparison results we compare how much we have earned on each pool during the last 7 days and weight those values by the amount of confirmed hashrate sent to each pool.
Example: We want to compare two Ethereum mining pools, pool A and pool B. Our mining proxy shows that for pool A we have submitted a total confirmed hashrate of 198 MH/s over the last 7 days. For pool B we have submitted a total confirmed hashrate of 185 MH/s over the last 7 days. During that period our balance on pool A has increased by 0.115 ETH while on pool B our balance has increased by 0.113 ETH. This gives for pool 0.115 / 198 * 1000 = 0.5808 ETH/GH/s/Week and for pool B 0.113 / 185 * 1000 = 0.6108 ETH/GH/s/Week. Which means that during the measured period pool B was around 5% more profitable compared to pool A.
As we need to allocated mining hardware for each benchmark we cannot include an unlimited amount of coins & pools in the tests. Currently we benchmark the following coins & pools:
One of the key points of a good mining pool is a fair payout independent if you mine with a huge farm or just 1 GPU. We adjust the hashrate for each benchmarking session so that each pool receives at least 1 share every 5 minutes.
In the unlikely event that our mining farm suffers network or power issues benchmarking will be paused for all coins & pools. Benchmarking will resume as soon as the farm is online again.
We continuously monitor all our rigs & ASICs and restart them if they experience any issues.
Such an event will have no impact on the benchmarking results as during this time we will neither submit shares to a pool nor will the our pool balance change.
Currently there are two distinct types of pool rewards methods in use by most pools.PPS
PPS is short for Pay Per Share and means that each share will be rewarded a fixed amount of coins depending on the current network difficulty. Miners will receive their reward independent if a pool actually finds a block or not. Miners essentially sell their hashrate to the pool for a fixed price. How and if the pool sets the price varies from pool to pool. Some base it on the block reward & the actual network difficulty, some also include an estimation of the transaction fee reward in their price. As the actual risk of finding a block lies with the pool operator this reward method is usually subject to higher pool fees. The benefit of this method is that miners will receive their reward independent if the pool actually finds a block.PPLNS
PPLNS is short for Pay Per Last N Shares and means that after a block is found, the block reward is distributed to all miners of the pool according to the amount of hashrate submitted during the last N hours. N can range from 1 to several hours. Usually the distributed reward includes the full block reward and all transactions fees. As the risk of finding an block lies with the miners and not the pool operator this reward method is usually subject to lower fees compared to PPS. The drawback of this method is that if a pool does not find a block for a prolonged period of time the miners will not receive any reward for their submitted hashrate.
In general you should always choose the most profitable pool which provides servers as close as possible to your mining location. We do not recommend miners from Europe to mine on a Chinese pool server and vice versa, independent on the actual profitability of the pool.
Please contact us at [email protected]