A high-performance Merged Mining Pool Software centered around Doge/Litecoin
- Stratum Networking. Tested for 1000+ concurrent clients.
- ZMQ subscriptions for real-time communication with the blockchain
- Unique extranonce generation for a parallel client workload
- Merged mining for resource efficiency
- API service for a front-end website
- RPC failover for high availability
- Multiple payout schemes for client rewards
- Single coin mining for testing
- Variable difficulty
Open config.example.json to get started.
You'll need access to a blockchain RPC and a ZMQ block notification URL.
For ZMQ notifications you have to start your nodes with block notification on:
// Assuming your node is on the same machine as this pool
-zmqpubhashblock="tcp://127.0.0.1:<your-port-here>"
//Remote nodes need additional configuration if they're on WAN or LAN (firewalls, port forwarding, etc.)
-zmqpubhashblock="tcp://0.0.0.0:<your-port-here>"
The pools have been tested with Postgres 16. Once installed, you can log into the Postgres server w/
sudo -u postgres psql # Unix
psql -U postgres # Windows
Open the directory below to find scripts that will set up your databases.
persistence/schemas
You can skip 3-multi-pool-partition.sql if you're still testing.
Once you have it running, your client can connect with the following login:
- username: yourPrimaryCoinMinerAddress-yourAux1CoinMinerAddress.rigID
- password: none
I hope to have created a system in which multiple chains can be supported from one project. As such, most coins can be merged mined from this same project.
Centered around type Generator interface{} (and a future type RPC interface{}) any coin, in any coin family, can be supported as a go module or a microservice.
Feel free to contact me via Github Discussions to discuss how you can implement your chain.
New features may be discussed, but are generally based around Stratum and chain updates.