Skip to content

Instantly share code, notes, and snippets.

@icook
Last active June 11, 2018 05:54
Show Gist options
  • Save icook/57e1dfaa08aa248f44f78814c11ae53e to your computer and use it in GitHub Desktop.
Save icook/57e1dfaa08aa248f44f78814c11ae53e to your computer and use it in GitHub Desktop.
PowerPool Equihash/Cryptonight/AuxPow Implementation Tips

This is a brain dump of information that might be useful. Hopefully it doesn't ramble too bad. Upfront warning that there is documentation, but it's not very complete and I think incorrect/out of date in places. That said the coding style is reasonably consistent (PEP8), commenting is ok, and logging is good.

SimpleCoin is split into 3 main packages:

  • powerpool - A Python Gevent based stratum mining server. https://github.com/simplecrypto/powerpool
  • simplecoin_multi - A Python Flask based web application that manages payouts and user interface. https://github.com/simplecrypto/simplecoin_multi
  • simplecoin_rpc_client - A tool for running payouts on a remote server. This is the only way to run the payouts. Each coin should have a payout server with a wallet enabled, and a mining server with wallet disabled. They are recommended to be on separate machines.

The only modifications needed should be in powerpool, with some minor configuration changes in simplecoin_multi (for stats about the algo, etc).

Powerpool is broken into components which are described here: http://powerpool.readthedocs.io/en/latest/api.html. You will need to design a new JobManager instance, two reference implementations are here: https://github.com/simplecrypto/powerpool/tree/master/powerpool/jobmanagers. This is the code that handles creation of stratum jobs/block serialization etc.

Modifications will also be needed in the StratumServer component, supporting the different stratum commands for equihash.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment