Table of Contents

Zcash and Zclassic Stratum Mining Pool Installation

This tutorial goes over installing and configuring the 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

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/

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