NiceHash Successfully Evades the Common Flaws of the Majority of Ethereum Pools
Since the beginning of Ethereum popularity, we at NiceHash observed its development. After careful analysis we found a flaw in Ethereum mining - and also delivered a solution to the flaw.
Flawed Stratum mining protocol
It has all started with a decision made by the Ethereum developers not to support the Stratum mining protocol for Ethereum POW mining. Supporting a particular mining protocol is not something what blockchain developers are absolutely supposed to implement, but the aforementioned Stratum mining protocol is a de-facto mining protocol for years. Bitcoin introduced getblocktemplate method, which ultimately enabled Stratum mining protocol. There was no such support from the Ethereum developers - getwork is all that it is there. The community was forced to take some short-cuts and turn getwork protocol to a push-work instead of a get-work. Several different protocols were created, all including 'Stratum' in their names to indicate similarity to the Stratum mining protocol. The mining efficiency of mining process increased and it looked like everyone was happy about it. But not NiceHash.
After carefully analysing the existing Ethereum "Stratum-like" implementations, we noticed a significant design flaw of these protocols. They enable various malicious activity and they also lower miner's efficiency so that miners never reaches their full potential - their full speed (on the pool side).
Big problem with duplicated shares
We have pointed out some issues in our proposal for Ethereum Stratum mining protocol, which follows the original Stratum mining protocol. Most notably this proposal solves the issue of duplicate work and duplicate shares. Indeed - if you are an Ethereum miner and utilizing some of previous "Stratum-like" protocols, your miner may actually be working on a mining job that is already being worked on by someone else - resulting in not being awarded for your mining work. Recently, another type of attack has been revealed by a member of Ethereum Community Forum (the thread is no longer available). We can seriously ask ourselves, how many more exploits are there for the current flawed designs of so-called "Stratum" protocols, used by most of the pools - even and especially the big ones?
After we did some further investigation, we have found even new design flaws. Apparently, most of the pools take some measurements against the miners that submit (or try to submit) a duplicate share but not taking into consideration the nature of that share. Is it duplicated due to the selection of work provided by the pool or an actual exploit attempt?
Pools made various "Stratum" implementations with design flaws and when it comes to a real world scenario issue? Miners are to take the blame and fall.
If your miner accidentally finds a share that has already been submitted by your co-miner, this share will be marked as a duplicate and rejected by the pool. Some pools even go further and terminate the connection with your miner in this case. And when your miner connects back in, it will have to regenerate DAG file and you will lose precious time with zero mining.
Not to mention the pool ban lists. You may end up there pretty quickly and in this case, your miner will not mine at all any more (on that particular pool).
EthereumStratum as the saviour
When we revealed all these issues, we publicly offered the solution to the problem. We proposed a new protocol called EthereumStratum (www.github.com/nicehash/Specifications/blob/master/EthereumStratum_NiceHash_v1.0.0.txt).
Unfortunately, the community was reluctant to even carefully consider it. The biggest resistance was showed by the big pools - they apparently don't care whether you are working fully optimized as long as you are dedicated to them. Even developers of open source pool software such as Open Etherem Pool didn't show serious interest in fixing these issues.
Mining software developers, on the other hand, showed a completely different behaviour. For example, mining software developer Genoil quickly accepted our proposal for EthereumStratum and implemented it into his forked ethminer. Claymore added EthereumStratum to his Dual Miner as well.
EthereumStratum protocol is there for the protection of miners - to increase your efficiency. It is in the interest of any miner not to be cheated by the pool. And for that reason, we recommend Ethereum miners to use only Ethereum pools that properly support EthereumStratum.
Ethereum Mining with NiceHash
Our NiceHash service supports only EthereumStratum thus it can never cheat you out. You can mine with us using Genoil's ethminer or Claymore's Dual Miner.
- pay you directly in Bitcoins on a real pay-per-share (PPS) basis,
- pay you for time lost generating DAG,
- and pay you for fast job switches.
- Your efficiency with NiceHash will be higher than with any other Ethereum pool and you will earn more. If you do not believe the words, try it for yourself and see.