What is Network Protocol?
As you know from our previous article How the Mining Pool Works: PPLNS vs. SOLO, a pool is a special software communicating the “mining work” to the miners of the pool and collecting the solutions to be passed back to the cryptocurrency node running behind. The target share difficulty is purposely lower than required for a block solution — this way all participating miners can submit their solutions to the pool to get accounted and rewarded for the shared work they perform together towards mining a new, valid block. What is Share and the Share Difficulty When You Are Mining at the Pool?
The defined set of rules that the miners’ software uses (and we include the ASIC devices here as well, as to the pool they are just like another GPU miner) is called a “network protocol”. It describes what commands can be sent from the pool to the miner, and back.
What is Stratum?
Historically the protocol for the interaction with the miners, named “Stratum”, originates from the Bitcoin pools. When Ethereum has arrived and first pools for it started to appear, initially the protocol used was more or less one to one identical to the node’s RPC protocol (that’s why it was called EthProxy as it was proxying the commands from the miner to the node directly). Then the pool makers have decided to adopt Stratum protocol for Ethereum mining.
However, due to the fact that the Ethereum mining process is different from the Bitcoin, it could not be used directly. That is how a special version of the specification tailored for Ethereum was born. Initially, it was more or less a direct clone of the Bitcoin Stratum with minimal changes so the mining of ETH could be done. This is the protocol our pools supported from the start.
The time has passed and the protocol has evolved quite a bit to be more network efficient, and miner-optimized. The driving force behind the protocol change was NiceHash, a system allowing to buy and sell hashing power. In order for it to work, they have developed their own variation of the protocol and published it as EthereumStratum_NiceHash/1.0. NiceHash would still support the original protocol, but it required some special tricks to work (for example, the miner password has to be set to ‘#’ so NiceHash knew the pool uses the older protocol version). The newly proposed specification supported more specific things for the Ethereum mining process.
Then the Ethereum-compatible ASICs were released, and of course, for whatever reason, they have introduced yet another revision of the Stratum protocol. First Ethash ASIC miners were: Antminer E3 by Bitmain and A10 by Innosilicon. Because ASICs are usually pretty uptight about its firmware and capabilities, the circuits were supporting only what they thought is the right implementation and therefore (unlike NiceHash) didn’t work on the pools that did not support their particular variation of the Stratum protocol. When a few of our miners have approached us regarding support for Innosilicon A10 devices, we knew it is a top priority to provide the option of using the ASICs on our pools (which historically were pretty GPU-centric).
Our pool has contacted Innosilicon and our extremely talented team of developers worked hard to bring support to these two EthereumStratum variations for our pool miners. After the testing, we’re proud to announce that 2Miners pools for Ethereum protocol and now able to work with any of the three breeds of Stratum protocol. This keeps them compatible with even the oldest mining software but provides additional flexibility and optimizations for the NiceHash orders running on the pools, as well as full support for Innosilicon A10 ASIC miners (and likely other similar ASICs which are pending validation). If you have an ASIC, give https://eth.2miners.com a try and tell us about your results in our Telegram chat.
Safe sails and we will keep you posted on further developments of our pools. “2Miners” — literally — “to our miners”!