Feel free to run your own bithereum pool if you have the resources and expertise to handle the work involved in maintaining one. The code within this repo is a forked version of z-nomp modified for Equihash coins.
- Bithereum daemon (refer to Bithereum's core repo)
- Node.js v7 (How to install node)
- Redis key-value store v2.6+ (How to install redis)
Make sure you have done all the requirements before continuing. If you use old versions of Node.js or Redis that may come with your system package manager then you will have problems. Follow the linked instructions to get the last stable versions.
Follow the installation instructions for your bithereum daemon. Your bithereum.conf file (usually located in ~/.bithereum/ folder by default) should end up looking something like the following.
txindex=1
daemon=1
rpcuser=bithereum
rpcpassword=bithereum
rpcport=8332
Clone this repository run the following commands from within the root level of the cloned folder. Alternatively, you can install this pool by using the pool installation script here.
sudo apt-get update -y
sudo apt-get install npm -y
sudo npm install n -g -y
sudo n v7
sudo apt update
sudo apt install redis-server -y
git clone https://github.com/BTHPOS/pool-z-nomp.git pool
cd pool
npm update
npm installUpdate bth.json or bth_testnet.json to fit the changes you would like for your pool. Each file will have an enabled field at the top of the JSON. Set enabled equal to true for the file you would like to use. Be sure config files not in use have enabled set to false.
npm start-
Redis security warning: be sure firewall access to redis - an easy way is to include
bind 127.0.0.1in yourredis.conffile. Also it's a good idea to learn about and understand software that you are using - a good place to start with redis is data persistence. -
For redundancy, its recommended to have at least two Bithereum daemon instances running in case one drops out-of-sync or offline, all instances will be polled for block/transaction updates and be used for submitting blocks. Creating a backup daemon involves spawning a daemon using the
-datadir=/backupcommand-line argument which creates a new daemon instance with it's own config directory and coin.conf file. Learn about the daemon, how to use it and how it works if you want to be a good pool operator. For starters be sure to read: -
Use something like forever to keep the node script running in case the master process crashes.
-
Use something like redis-commander to have a nice GUI for exploring your redis database.
-
Use something like logrotator to rotate log output from Z-NOMP.
-
Use New Relic to monitor your Z-NOMP instance and server performance.
- In
config.jsonset the port and password forblockNotifyListener - In your daemon conf file set the
blocknotifycommand to use:
node [path to cli.js] [coin name in config] [block hash symbol]
Example: inside zclassic.conf add the line
blocknotify=node /home/user/z-nomp/scripts/cli.js blocknotify zclassic %s
Alternatively, you can use a more efficient block notify script written in pure C. Build and usage instructions are commented in scripts/blocknotify.c.
When updating Z-NOMP to the latest code its important to not only git pull the latest from this repo, but to also update
the node-stratum-pool and node-multi-hashing modules, and any config files that may have been changed.
- Inside your Z-NOMP directory (where the init.js script is) do
git pullto get the latest Z-NOMP code. - Remove the dependenices by deleting the
node_modulesdirectory withrm -r node_modules. - Run
npm updateto force updating/reinstalling of the dependencies. - Compare your
config.jsonandpool_configs/coin.jsonconfigurations to the latest example ones in this repo or the ones in the setup instructions where each config field is explained. You may need to modify or add any new changes.
- Matthew Little / zone117x - developer of NOMP
- Jerry Brady / mintyfresh68 - got coin-switching fully working and developed proxy-per-algo feature
- Tony Dobbs - designs for front-end and created the NOMP logo
- LucasJones - got p2p block notify working and implemented additional hashing algos
- vekexasia - co-developer & great tester
- TheSeven - answering an absurd amount of my questions and being a very helpful gentleman
- UdjinM6 - helped implement fee withdrawal in payment processing
- Alex Petrov / sysmanalex - contributed the pure C block notify script
- svirusxxx - sponsored development of MPOS mode
- icecube45 - helping out with the repo wiki
- Fcases - ordered me a pizza <3
- Those that contributed to node-stratum-pool
Released under the MIT License. See LICENSE file.