(Art by z1xwitch)

Software for a bitcoin mining pool backend

What is all this then?

So there is a fancy new protocol for communication from bitcoin mining programs and bitcoin mining pools. The short story is that previous protocols use 32-bits that miners can change. FPGA miners can blast through 32-bits in seconds, ASIC miners can do it way faster than that. Stratum allows for 64-bits (or more) of data to be changed at the worker side without talking to the server allowing for way less client/server communication.

That was all well and good but we seemed to be lacking stratum implimentations to use. Maybe they existed but I couldn't find them so I made my own and opened it up.


You can build from most recent source from GitHub using ant:

GitHub SockThing


  • Supports Stratum protocol. Mostly tested with cgminer.
  • User selectable difficulty
  • Easy High Availability with Multiple Nodes - see HHTT High Availability
  • Limitations

  • Stratum only - no getwork - no getblocktemplate - no http
  • Backend only: build your own web interface
  • Setup

    The ANT build results in a single self contained jar containing all the required libraries. It expects one command line parameter, a configuration file to use.

      java -jar SockThing-0.5.0.jar prod.cfg
    Sample config

    It expects an address to pay with the blocks found, a bitcoind to use to get information from to build blocks and to submit found blocks to. An SQL database is expected to save share information to credit workers for work done. Other config is added as features are added.


    SockThing is designed to be easily customized. The authentication handler can be implemented to do anything pool specific you like AuthHandler.

    To do something other than simple save shares to a database, ShareSaver can be implemented.


  • Builds
  • Pools Using SockThing

  • Horrible Horrendous Terrible Tremendous Mining Pool
  • If you know of any others, please let me know


    Fireduck 1209k