====== Zcash and Zclassic Stratum Mining Pool Installation ====== This tutorial goes over installing and configuring the [[https://github.com/joshuayabut/z-nomp|Z-Nomp]] stratum mining pool for Zcash and Zclassic. Z-Nomp exists as a heavily modified version of Nomp and is not backwards compatible. It also uses Node.js native C++ bindings to do Equihash verification. ===== System Requirements ===== * GNU/Linux Installation (Recommended Debian or Ubuntu) * Zcash or Zclassic Full Node * Node.js v7+ **[Node 0.10 is deprecated and is not supported!!]** (follow these instructions) * Redis key-value store v2.6+ (follow these instructions) ===== Downloading & Installing ===== Use your operating system's package manager to install the required dependencies. Then the npm package 'n' will need to be installed in order to download that latest Nodejs stable package. After that the Z-Nomp repository may be cloned and installation can begin. sudo apt-get install build-essential libsodium-dev npm redis-server git sudo npm install n -g sudo n stable git clone https://github.com/joshuayabut/node-open-mining-portal.git z-nomp cd z-nomp npm update npm install Start the Redis database. sudo service redis-server restart ===== Z-Nomp Pool Configuration ===== Create the config.json configuration file. //Optionally: Change the parameters if desired (but this is not a requirement).// cp config_example.json config.json Create your coin-specific configuration files for the coins that you would like to mine. You may choose to execute any one of these or multiple commands. cp pool_configs/zclassic_example.json pool_configs/zclassic.json cp pool_configs/zcash_example.json pool_configs/zcash.json cp pool_configs/zcash_testnet_example.json pool_configs/zcash_testnet.json Edit the relevant coin-specific configuration files. nano pool_configs/[YOUR CONFIGURATION FILE] **Mandatory Configuration Changes** ^ Parameter ^ Value ^ | enabled | true | | address | use a new address generated using 'zcash-cli getnewaddress' | | zAddress | use a new address generated using 'zcash-cli z_getnewaddress' | | tAddress | use a new address generated using 'zcash-cli getnewaddress' | | daemons.host | IP address of server running wallet | | daemons.port | network port of server running wallet | | daemons.user | rpc username set in wallet configuration file | | daemons.pass | rpc password set in wallet configuration file | **Required if payment processing is enabled** ^ Parameter ^ Value ^ | paymentProcessing.paymentInterval | interval in seconds to run payments (default: 20) | | paymentProcessing.minimumPayment | minimum balance to send payment | | paymentProcessing.daemon.host | IP address of server running payment wallet | | paymentProcessing.daemon.port | network port of server running payment wallet | | paymentProcessing.daemon.user | rpc username set in wallet configuration file | | paymentProcessing.daemon.pass | rpc password set in wallet configuration file | ** Port Configuration Options** ^ Parameter ^ Value ^ | diff | starting stratum difficulty (default: 0.05) | | varDiff.minDiff | minimum stratum difficulty (default: 0.04) | | varDiff.maxDiff | maximum stratum difficulty (default: 16) | | varDiff.targetTime | set target to submit a share every X seconds | | varDiff.retargetTime | adjust stratum difficulty every X seconds | | varDiff.variancePercent | variance below this percentage is ok | | tls | Enable TLS support or not for this port (default: false) see tlsOptions | Please note that 1 difficulty is equivalent to 8192 network difficulty. It is divisible, ie 0.5 diff is equivalent to 4096 network difficulty. Whenever a miner submits a share, the pool counts the difficulty and keeps adding them as the amount of shares a miner got. ie: Miner 1 mines at 0.1 difficulty and finds 10 shares, the pool sees it as 1 share. Miner 2 mines at 0.5 difficulty and finds 5 shares, the pool sees it as 2.5 shares. **Optional Configuration Changes** ^ Parameter ^ Value ^ | walletInterval | interval in minutes to transfer coinbase rewards (do not set lower than 10) | | rewardRecipients | "t1S7mng6rnLvSF276wB4zWCcn2JSjKfuEp1": 1.0 (this will add a 1% pool fee) | ** tlsOptions ** Place where your SSL/TLS certificates are here, please note due to the nature of SSL certs, we will not provide support for implementing them. Claymore's miner will work with self signed certificates but Optiminer will not. You can get free certificates from [[https://letsencrypt.org/|https://letsencrypt.org/]] ^ Parameter ^ Value ^ | enabled | Enable TLS support (default: false) | | serverKey | Where the SSL private key is located | | serverCert | Where the SSL certificate is located | | ca | Where the CSR goes | ===== Start Z-Nomp ===== Time to start the server and start mining! If enabled, the web server will be available at http://server_ip:8080. npm start