Developers, miners and geeks,
I need to have a getwork proxy functionality added to cgminer and am willing to pay 5BTC for its development.
OverviewLast year I had 5 computers distributed all over my flat running cgminer to run different types of mining rig. Since each instance operated its own set of pools and work items, I thought it would be a nice feature to have only one of them operating as proxy, i.e. it on one side connects to pools and handles work items and on the other side allow other cgminer instances to connect and get served.
At that time I asked Con how feasible such a feature would be. His response was that it is doable, but since I was the only one requesting it, maybe not worth the work. With the subsequent feature advances in cgminer, I was able to reduce the number of instances to two and gradually refrained from my idea.
Until recently, when it became hot again: I started operating Asicminer BE blades that are interfaced over Ethernet and use getwork as work API. The best way to operate them is to use a Stratum proxy. While generally doable, I miss lots of cgminer features (most relevant: pool backup / recovery, stability, scalability). With that, I realize that the proxy functionality I had in mind before to cascade multiple cgminer instances would also be useful to support BE blades.
I am familiar with cgminer myself and have already a concept of how it could be realized (similar to hotplug_thread()). If I had 5 days of free time in a row, I'd do it myself - but obviously in today's interesting Bitcoin times I don't have it. Therefore I am offering a 5 BTC bounty to the skilled and motivated developer capable to develop that proxy functionality.
RequirementsFrom a functional point, the requirements should be clear by the title. I need cgminer to be able to
- act as a getwork proxy at a configurable port
- allow getwork based miners to connect (example: other cgminer instances, BE blades)
- keep track of the getwork clients (identified by username)
Initial testing can be accomplished by connecting multiple cgminer instances to the proxy. If required, I can provide wireshark traces of the communication between blades and Stratum proxy; also I will do qualification testing and performance evaluation with a larger scale BE blades setup myself.
Beside the functional requirements, I am asking for
- a cgminer compliant open source license to be used
- the coding style to be kept consistent (wish: Linux kernel coding style)
- sufficient code quality to get integrated into cgminer upstream
Alternative: stand alone proxyIf it makes development and testing easier for you, you are free to derive a getwork proxy component from existing cgminer. That is, this component would only use the pool and work management from cgminer, but not support mining devices itself (which btw. equals a hotplug-enabled cgminer with no active devices). cgminer's main source file is not modular enough to really support such an approach, just noting it here for completeness.
ProcessBefore you start hacking into your keyboard, please contact me for further details via email (visible from my forum profile).
Thanks,
zefir