After finding out there are 3 current efforts for stratum mining, we'd like to propose a standard that works best for all miners and pool ops.
We've outlined the specs here:
http://Http://siamining.com/stratumMajor benefits include scalability and future proof protocol.
Good to see you finally also believe that stratum or tcp based mining is necessary, however, there is already a stratum based protocol available which works fine on suprnova (
https://sia.suprnova.cc) with a recent version of sgminer: (
https://github.com/bitbandi/sgminer/tree/sia) and I don't see it necessary to rewrite or reinvent the wheel again.
A compiled, good working windows version is available too:
http://cryptomining-blog.com/wp-content/download/sgminer-5.4.0-sia-windows-x64.zipThe stratum based implementation already has all benefits it can have like vardiff, tcp based connections, low stales, low rejects and reconnecting to the last job after a connection failure etc.
I've documented my implementation too and already posted it to several developers, if anyone has further interest, don't hesitate to contact me.
Couple points:
- VarDiff is independent of stratum. We already have it implemented with getwork. It's been available on our pool since day one.
- You point out that you have a working version of stratum based protocol that works with your pool. However it lacks features. If stratum is necessary for the long term success of pools and mining, then it is worthwhile to implement it properly. Our protocol is true to the intent of the original stratum. As it is miners who build the Merkle tree rather than the pool.
There is no way our protocol could be described as a "getwork over TCP", and if you do not agree we suggest that you re-read the specification.
Our work is also publicly documented. Anyone can read it and criticize.
I see no advantage over "true" stratum how you call it versus getwork over tcp until you have a mining farm of multiple Petahash running. Entropy is fair enough with my implemenation, pool efficiency is > 98% and I have reports from miners that they don't have any issues at all with duplicates or stales which they had on your pool. Also the miners are established and well tested.. Everyone knows and used sgminer before, everyone knows how to tune mining using the Intensity and worksize settings.
GBT-TCP (getblocktemplate over tcp) would indeed be a real advantage and also something new which would improve things a lot, allthough there are also some disadvantages and security risks.
I remember you saying in Slack that stratum is not necessary at all for Sia, so i'm a bit surprised about your sudden turnaround and the sudden fork of "my" sgminer and your custom stratum implementation. It would have been much, much easier to simply implement the already working stratum, work together and release it instead of going this way, however, some people seem to like to reinvent the wheel.
However, technically I see no problem in supporting your stratum version too on a separate port, it will just be confusing for the miners who don't know which miner and port they should choose.. IMHO "keep it simple" is better
I'll be releasing my stratum modules and MPOS mods to the public, there is already a second pool integrating and testing everything, when this is successful people can choose what they use and open their own pools too.