How to Set Up Your Znode

Znode Setup Guide

DISCLAIMER: This guide assumes a basic knowledge of Putty and Linux and comfortable in dealing with command line commands. We are not responsible for any loss for using this guide without the pre-requisite knowledge. Do not proceed with this guide if you have any doubts and turn to a Znode provider.


List of Znode Providers (arranged in alphabetical order)

These providers have informed us that they are hosting Zcoin Znode hosting services. These are recommended if you don’t have the technical expertise to follow these instructions.

We do not endorse or recommend any particular Znode provider (even those run by team members) and none of these are affiliated to Zcoin in anyway.

Do your own due diligence when picking them. Some Znode providers may be run by team members in their own personal capacity but shall not be considered an official Zcoin provider. We will delist providers that are reported as scams or have acted irresponsibly but hold no responsibility for having them listed in this list as it is impossible for us to police.

You should only need to provide your address that you deposited your XZC in or the transaction ID. Some providers may ask for the key you generated with znode genkey (either way is okay). You should NEVER need to deposit 1000 XZC to them or to an address outside your PC/mac wallet or to give any of your private keys (that is obtained via dumpprivkey).

Here’s an alphabetical list:

Getting Started

Whether you are hosting with a Znode provider or doing it on your own, ensure you have the latest Zcoin wallet and you have already obtained your 1000 XZC (preferably just a bit more to cover fees when you’re transferring around). Steps 1 and 2 are still required even if you are going for a Znode provider.

The video below should be watched together with the setup guide and not alone or else it may not make sense.

Step 1: Encrypt and Backup your wallet on your Desktop wallet

If you haven’t done so already, make sure you encrypt your wallet on your local desktop wallet (PC/Mac/Linux).

Go to Settings > Encrypt Wallet.

After you have encrypted your wallet, it is also recommended to do a backup via File > Backup Wallet. It is recommended to store this wallet on a separate physical drive or pen drive. The wallet.dat is encrypted so even if the wallet.dat is exposed, if your password is long enough, it will be secure.

Please don’t forget your password! No one can help you if you lose your password. 

Step 2: Generate a Znode key and deposit your 1000 XZC on your Desktop wallet

Although it isn’t a good idea to leak out your Znode key, even if this information is out, your 1000 XZC is safe. If a third party gets hold of this Znode key, all they can do is start/stop your Znode.

Your deposit address is where you will be depositing your 1000 XZC.

On your local desktop wallet, click on Help > Debug Window and enter in the following commands.

znode genkey

This generates the Znode key. Copy it into Notepad or a txt file. Some providers will provide this key for you, this works as well.

getaccountaddress ZN1

This generates the Znode Deposit Address for your 1000 XZC. Copy it into the same Notepad or txt file. If you have multiple Znodes, you can also create additional addresses and unique znode keys for each of them.

znode genkey

getaccountaddress ZN2

znode genkey

getaccountaddress ZN3

And so on.

Send EXACTLY 1000 XZC into the Znode Deposit Address that you just created in one single transaction. Do not send 500 and then another 500! It has to be in one single transaction! Do not tick subtract fee from amount. 

It is not recommended to send it direct from an exchange as they might deduct certain withdrawal fees resulting in less than 1000 XZC in that transfer.

You will now need to wait for 6 confirmations (about 30 minutes) for this transaction to be valid as your Znode deposit. We can proceed with the other steps in the meantime.

Special Notes only for those who are creating more than one Znode:

If you are doing more than one Znode, special care is required to ensure that you are creating deposits properly. You do not want to break the previous 1000 XZC deposit you just made by taking funds from that deposit.

To do this, on your local desktop wallet turn on coin control by going to Settings > Options > Wallet and click on Enable coin control features. This will enable fine grained control of which funds you are using when making your next 1000 XZC deposit.

Then go to your Send tab, and you will see Coin Control Features. Click on Inputs. You should see your 1000 XZC deposit there. Right click and click Lock Unspent. This means that when making your new deposit, your wallet will not touch these funds.

Once you have done this, you can make the next 1000 XZC deposit for your next Znode. Repeat this everytime you have made a new Znode.

You can always verify you’re doing this correctly by going into Help > Debug Window and typing znode outputs which would display all znode capable deposits.

Step 3: Create a znode.conf file on your Desktop wallet

We now need to find out the transaction id and index of your Znode deposit. To do this, on your local desktop wallet go to Help > Debug Window type

znode outputs

You will receive an output that looks something like this:

{ "d6fd38868bb8f9958e34d5155437d009b72dfd33fc28874c87fd42e51c0f74fdb" : "0", }

The first portion is your Transaction ID and the second number (typically 0 or 1) is the Index. Do not simply put 0 or 1 as the index. You must get it from znode outputs

Now create a znode.conf file in your Zcoin data directory. The default location of the Zcoin data directory are listed below:

~/Library/Application\ Support/zcoin/


Open it to edit it and enter in the following format.


LABEL: Any name that you want to call your Znode in one word. For e.g. ZN1
IP: Your Znode VPS IP and port (8168 for mainnet and 18168 for testnet)
ZNODEPRIVKEY: This is the znode key that you obtained from typing znode genkey earlier.
TXID: This is the Transaction ID for the transaction in which you got your 1000 XZC deposited which you obtained just now through the znode outputs command.
INDEX: This is the Index of your transaction which you obtained just now through the znode outputs command.

To make things clearer let’s show a made up example of how a znode.conf would look like. This example shows two Znodes.

ZN1 XrxSr3fXpX3dZcU7CoiFuFWqeHYw83r28btCFfIHqf6zkMp1PZ4 d6fd38868bb8f9958e34d5155437d009b72dfd33fc28874c87fd42e51c0f74fdb 0
ZN2 7ER1fSLSDkmQmXX5i2rG7BUQFt8YeEfsNE6CDyjefFX2ZjgLEcJ ce4134046f75d9a7d0b2e86fb26e208095a9995eff5e169a4e2e047226120351 0

Once you have entered the necessary details, save your znode.conf. Restart your Zcoin wallet so it would take the new settings.

Note for multiple Znodes:

If you are creating more than one Znode, the “znode outputs” command will return several transaction hashes and indexes. Just determine which one is the new one by comparing it with your existing znode.conf and see which one is not in it.

You will then add the new corresponding details in new line in znode.conf. Remember to restart your Zcoin wallet whenever you edit your znode.conf.

Step 4: Get a VPS

There are many providers to choose out there.

Select a VPS package that meets the minimum requirements:

  • 1 GB of RAM (2 GB recommended)
  • 40+ GB of disk space

Note: The blockchain will grow at a rate of about 20 GB per year. Please make sure you pick a VPS with sufficient disk space!

When choosing a server, please remember reliability is more important than price. If your Znode goes offline, you will potentially miss out on payouts which would be more than your VPS cost.

Pick Ubuntu 18.04 64-bit and install it.

Once it is done, the VPS provider should give you a username (usually root) and a password. Use a SSH client like Putty or if the VPS provider provides, it open up a console window.

Step 5: Configuring Your VPS

Creating a New User

It is always good practice to create a new user to run the Znode so that the Znode application does not run with root access.

On your newly created VPS, Login as root.

Create a new user with the following command, replacing <username> with a username of your choice.
adduser <username>
You will be prompted for a password. Enter and confirm using a new password (different to your root password) and store it in a safe place.

You will also see prompts for user information, but this can be left blank.

Once the user has been created, we will add them to the sudo group so they can perform commands as root. Only commands/applications run with sudo will run with root privileges, while others will run with regular privileges
usermod -aG sudo <username>
Now, while still as root, we will update the system from the Ubuntu package repository.
apt update

apt upgrade

Installing a Firewall

We are installing UFW (uncomplicated firewall) to further secure your VPS server. This is optional but highly recommended.

While still in root user on your VPS (or alternatively you can sudo within your newly created user).
apt install ufw
(press Y and Enter to confirm)

The next step opens port 8168 which is required for your Znode to communicate.
ufw allow ssh/tcp

ufw limit ssh/tcp

ufw allow 8168/tcp

ufw logging on

ufw enable
(press Y and Enter to confirm)

You now have a firewall setup!

Allocating a Swap File (Optional if your VPS/server has 2gb or more RAM)

Allocating a swap file can guard your VPS server against out of memory errors in the event your RAM is fully utilized. This step is optional if your VPS / remote server has a lot of RAM. It is generally not needed if you have 2 gb of RAM or more. It may work with 1 gb of RAM as well.

Swap is an area on a hard drive that has been designated as a place where the operating system can temporarily store data that it can no longer hold in RAM. Basically, this gives you the ability to increase the amount of information that your server can keep in its working “memory”, with some caveats. The swap space on the hard drive will be used mainly when there is no longer sufficient space in RAM to hold in-use application data.

The information written to disk will be significantly slower than information kept in RAM, but the operating system will prefer to keep running application data in memory and use swap for the older data. Overall, having swap space as a fall back for when your system’s RAM is depleted can be a good safety net against out-of-memory exceptions on systems.
fallocate -l 4G /swapfile

chmod 600 /swapfile

mkswap /swapfile

swapon /swapfile

nano /etc/fstab

Add the following line at the end of the file (press tab to separate each word/number
/swapfile none swap sw 0 0
then press Ctrl + X to close the editor, then Y and Enter save the file.
Then reboot the server.
reboot now

Your VPS is now ready for operation.

Step 6: Installing Zcoin in your VPS

After logging into the new user on your VPS you created in Step 5, type the following to download the latest Zcoin Linux package.

cd ~


tar xzvf zcoin-

Create a new config file for your Znode.


mkdir ~/.zcoin

nano ~/.zcoin/zcoin.conf

This will create a new directory and also open up a new text file called zcoin.conf in a text editor called nano.

In that new file type the following and change the bolded parts to match your actual details. The rpc username and password can be anything you wish (try to make it longer a bit).

The ZNODEPRIVKEY is from what you got from Step 2.


Press Ctrl-X to save and press Y to confirm it.

Type following commands to start your zcoind daemon and let it sync this will take a few hours.

cd ~/zcoin-0.14.0/bin

./zcoind -daemon

Go make yourself a coffee or watch something else! If you want to speed up the sync, you can use a current blockchain snapshot from here:

You can always check the status of syncing by typing

./zcoin-cli getinfo

and check how far the block number has gone in relation to our Block Explorer. Once it has synced, it’s now time to start your Znode!

Step 7: Start your Znode

Now let’s go back to your local desktop wallet (not the VPS). Hopefully you will have already gotten 6 confirmations. If not, wait a bit more!

Remember if you haven’t restarted your local desktop wallet after creating znode.conf, please restart your wallet.

Once it’s up again go to your Znodes tab. If you have done it correctly, it should show your Znodes on the My Znodes tab. Click Start-Missing which starts all your Znodes that were listed in your znode.conf.

Your Znode should show PRE_ENABLED status now and after about 15 minutes or so, should transition to ENABLED. If it transitions to EXPIRED, there might be something wrong with your setup, double check again.

Step 8: Getting your Znode Payments

Your first payment may take a week or more to show but afterwards should take place once every few days. As an estimate, divide the total number of Znodes by 288 and that will get you roughly the interval of your payouts in days. For example, there are 4,000 Znodes, the payout would be 4000/288 ≈ 14 days. The more Znodes there are, the longer the queue and wait between payouts.

IMPORTANT NOTE: Everytime you start a znode, your node will get penalised which delays payments. Therefore although there is also a znode start-many  command, it isn’t recommended since it would also restart nodes that have no issues. If one of your znode servers has an issue (for e.g. the server was rebooted), only restart the znodes which are down by using the znode start-alias command and not the start-many command.

If you want to understand the way Znode payouts work better, please refer to: Understanding Znode Payments

To get an idea how to verify your Znode is running correctly, please refer to our GitHub Wiki on Znode Diagnostics.

Additional tips

The following tips are not covered by this guide but can ensure smoother running of your Znode.

  • Ensure that your Znode is automatically started after a VPS reboot using cron, monit, or systemd
  • Set Ubuntu to automatically download and install new upgrades
  • Further secure your Znode by modifying the SSH configuration file or install and configure fail2ban