Node Program Installation

A step-by-step guide to install and set up the DPoPS program on your XCASH node and become a delegate.

Introduction

This guide is assuming that you have already followed the step of the server setup guide, or that you are comfortable and knowledgeable about your Linux instance.

This guide will walk you through installing, registering, and preparing a delegate node on your instance. Whether you are experienced in Linux or completely new to it, you will be able, at the end of the guide, to have your delegate node running and start securing the X-Cash public network (provided you get elected as a delegate 😉).

The xcash-dpops program is used to manage the block validation, communicate with the other delegates and forge blocks. It has also been designed to automatically retribute the voters of their shares.

Requirements

System Requirements

In the first beta version, X-Cash's DPoPS will only run on a Linux/Unix OS. We recommend installing it on a Ubuntu VPS/dedicated server (18.04) for the best compatibility.

The delegate node will need to transit a lot of information, notably messages to the other delegates to verify the block information, As time goes by, the features and information that the delegates handle will increase (notably when the X-Cash Foundation will add token creation, NFT, sidechains, smart contracts, and other exciting features ⭐).

The recommended system requirement is designed to be future-development proof, meaning that a hardware update should never be needed and still comfortably handle the xcash-dpops program.

Minimum

Recommended

OS

Ubuntu 18.04

Ubuntu 18.04 or 20.04

CPU

4 threads, 2.0 GHz or more per thread

4 threads, 2.0 GHz or more per thread

RAM

6GB

32GB

Hard Drive

50GB

2TB

Bandwidth Transfer

100GB per month

500GB per month

Bandwidth Speed

100 Mbps

500 Mbps

It is estimated that the blockchain and decentralized database size will increase by 9GB per year.

The minimum requirements will suffice at the inception of the new consensus. However, as new features are brought to the program and the blockchain, hardware updates will be needed.

Dependencies

The dependencies will be automatically installed and updated with the installation script.

The following table summarizes the tools and libraries required to run xcash-dpops program.

Dependencies

Min. version

Ubuntu package

GCC

4.7.3

build-essential

CMake

3.0.0

cmake

pkg-config

any

pkg-config

OpenSSL

any

libssl-dev

Git

any

git

MongoDB

4.0.3

Install from binaries

MongoDB C Driver (includes BSON library)

1.13.1

Build from source

xcash-core

Latest version

download the latest release or build from source

Time Synchronization

The xcash-dpops program uses the system time to calibrate itself and get the signal to send and receive data. It is important that the system time is accurate, otherwise, the program will not work as intended.

To check your system time, use the following command, and verify that the setting System clock synchronization: yes

timedatectl

If it says no, run the following command:

timedatectl set-ntp true
systemctl restart systemd-timesyncd

Installation

Installer Script

The Installer Script has been designed to easily interact with the xcash-dpops program and provide easy steps for installation and updates. You can also use this script to restart the programs if you are not comfortable with the command-line interface.

To run the latest version of the installer script, run the following command that will fetch the autoinstaller.sh script from the official xcash-dpops repository:

bash -c "$(curl -sSL https://raw.githubusercontent.com/X-CASH-official/xcash-dpops/master/scripts/autoinstaller/autoinstaller.sh)"

You will be prompted with the installer menu of the xcash-dpops program:

The installation script enables you to install and manage your xcash-dpops program easily.

Installing the X-Cash DPoPS program

Before starting, it is recommended to start the installer script in a multiplexer window such as byobu to avoid corrupted installation in case of SSH disconnection.

Once you have prepared your Linux instance by following the server setup guide, you can run the installer script to easily install, build and configure the node, as well as download the blockchain.

xcash-dpops is the program needed to run and manage a delegate node. It is responsible for sending messages to the other delegates, organize the consensus, relay and forge new blocks, etc...

To start the installation process, run the latest version of the autoinstaller.sh script:

bash -c "$(curl -sSL https://raw.githubusercontent.com/X-CASH-official/xcash-dpops/master/scripts/autoinstaller/autoinstaller.sh)"

Choose Install (1) in the X-Cash DPoPS Installation Settings section and press ENTER

1. Installation Directories

You will be prompted to choose different installation directories for:

  • The xcash-dpops program

  • The blockchain file

  • The delegate database

We very highly recommend using the default locations, as several update and installation programs are referencing to these paths.

2. Delegate mode

You will be then asked if you want to configure the xcash-dpops program as a shared delegate or a solo delegate.

Shared Delegates - Rely on the vote of others to be elected into the top 50 and get a forging position. By choosing the shared delegates options, the program will configure your node to automatically retribute your voters. Later, when configuring your node, you will be able to chose a private group. This option enables you to choose which voters you decide to retribute. This option should be preferred if you are running a delegate node with a close group of people. You can configurate a private group in the Register delegate section.

If you wish to run a shared delegate node, you will have to prefund the delegate wallet to ensure that the first block reward payments can be sent without issue.

Solo Delegates - In some cases, delegates who owns a consequent amount of XCASH can be "elected" in the top 50 by voting for themselves. They don't need to setup fees as the block reward will be distributed to the delegate wallet. Solo delegates have to manually empty the delegate wallet and send the block reward to the wallet of their choice.

You will be able to change this setting whenever you want in the installer script menu (option 9).

Press ENTER for the default setting (shared delegate), or type No for solo delegate.

If you choose to install the program as a shared delegate, you will need to set up your delegate fee and the minimum payment amount.

The shared delegate fee is the percentage of fees that are taken from the reward and kept by the delegate. It can be used to pay for the server hosting, to finance projects in the X-Cash ecosystem, etc...

Type in your desired delegate fee expressed in % with up to 6 decimals.

The xcash-dpops program will set up a wallet service that will automatically handle the payment of the voters, just like a mining pool would. The shared delegate minimum payment amount is the minimal threshold of XCASH to be sent periodically to the delegate's voters.

Type your desired minimum payment amount (minimum: 10,000 XCASH, maximum: 10M XCASH) as a whole number.

3. Block reward wallet

You will be asked to provide a wallet to receive the block reward when you are forging a new block.

You can either restore an existing wallet or choose to create a new wallet.

Leave empty or type YES to create a new wallet, or type No to choose to restore an existing wallet using the mnemonic seed.

Create a new wallet - If you choose to create a new wallet (YES), the installer will then ask you if you want to automatically generate a password for the wallet or provide a custom one. Press ENTER for the default setting (YES), or type No to provide a custom password.

Restore a wallet - If you choose to not to create a new wallet and restore an existing one instead (No), the installer will ask you to provide your wallet mnemonic seed and a new password.

4. Block Verifier Keys

Your block verifier key is used to identify yourself as a delegate. It is mandatory to store it securely. You will be asked if you want to create a new block verifier secret key, or import an existing one:

Type I to import your secret key, or C to create a new one.

Generate the block verifier keys - If it is your first time setting up a delegate node, you will need to generate a new block verifier key pair (C). By choosing to generate a new key pair, it will automatically be added to your xcash-dpops settings

Import the block verifier keys - If you already have a block verifier key, you can choose to import it (I). The program will then ask you to give your block verifier private key. You will most likely already have a block verifier key pair if you have already registered as a delegate in the past and are just trying to reinstall the node program.

5. Finishing

Once these settings have been provided, you will have an installation summary displayed.

The wallet password you have chosen or generated automatically will be displayed again at the end of the installation process. It is however a good idea to save it now.

The script will then install automatically the different programs and dependencies needed for the xcash-dpops program.

The installation script will follow automatically the next step of installation. Some of these steps might take a while. Indeed, the script will download the blockchain (~16GB as of 01/06/2020), create a new wallet and synchronize it. Depending on your server connection and specifications this could take up to several hours.

Screencap of all the steps of the installer script

Once the script has installed everything, you will be prompted with your X-Cash Delegate wallet data.

Make sure to copy this information in a secure place, as this is the wallet that will receive the block reward. You will need the block verifiers key to register yourself as a delegate. Losing this information will result in a loss of funds.

By default, the wallet is named delegate-wallet and is stored in ~/xcash-official/xcash-wallets/

Now that the program is installed, your delegate wallet initialized, and the different services running, you can go register yourself as a delegate. Follow the register delegate guide to continue the node setup.