Skip to content

Setup Validator

Part 1 - Setup server components

Requirements

The most common way for a beginner to run a validator is on a cloud server running Linux. You may choose whatever VPS providers that your prefer, and whatever operating system you are comfortable with.

The transactions weights in Galital Testnet were benchmarked on standard hardware. It is recommended that validators run at least the standard hardware in order to ensure they are able to process all blocks in time. The following are not minimum requirements but if you decide to run with less than this beware that you might have performance issue.

Minimum Hardware :

  • 6GB ram, 60 GB Storage, 2 CPU , stable server uplink connection with fixed IP

Ideal Hardware :

  • 60GB ram, 300 GB Storage, 6 CPU, stable server uplink connection with fixed IP

Using Ubuntu 20.04 :

Update your Ubuntu

sudo apt-get update

Validator

Install & Configure Network Time Protocol (NTP) Client NTP is a networking protocol designed to synchronize the clocks of computers over a network. NTP allows you to synchronize the clocks of all the systems within the network. Currently it is required that validators' local clocks stay reasonably in sync, so you should be running NTP or a similar service. You can check whether you have the NTP client by running:

If you are using Ubuntu 18.04 / 19.04 / 20.04, NTP Client should be installed by default.

timedatectl

If NTP is installed and running, you should see System clock synchronized: yes (or a similar message). If you do not see it, you can install it by executing:

sudo apt-get install ntp

ntpd will be started automatically after install. You can query ntpd for status information to verify that everything is working:

sudo ntpq -p

WARNING: Skipping this can result in the validator node missing block authorship opportunities. If the clock is out of sync (even by a small amount), the blocks the validator produces may not get accepted by the network. This will result in ImOnline heartbeats making it on chain, but zero allocated blocks making it on chain.

Installing the Galital Testnet Binary


Install and enable Chrony

Chrony is time synchronization service. It will keep time on server in sync, which is crucial for validator to operate without interruption.

sudo apt install chrony
sudo systemctl enable chrony

Firewall configuration

Configure firewall ports to allow SSH and Validator service to communicate.

sudo ufw allow 22
sudo ufw allow 30333
sudo ufw enable

Setup fail2ban

It provides basic-level protection against distributed brute-force attacks.

sudo apt install -y fail2ban && sudo systemctl enable fail2ban && sudo service fail2ban start

Install Galital Validator binaries

wget https://github.com/starkleytech/galital/releases/download/2.0.1/galital && sudo chmod +x ./galital && sudo mv ./galital /usr/bin/galital

Create user account to run Validator

It is recommended to run validator as non-root user. For that create dedicated user account which will be used to run validator.

sudo adduser galital

when adding user you will be asked to provide password and some additional details for the account. Only password is mandatory, other parameters can be left blank.

Create Galital Validator service

Create service file file in /lib/systemd/system/tal.service

sudo nano /lib/systemd/system/galital.service

Content of galital.service file (make sure to change "A Node Name" and replace it with your moniker):

[Unit]
Description=Galital Validator
After=network-online.target

[Service]
ExecStart=/usr/bin/galital --port "30333" --name "A Node Name" --validator --chain galital   
User=galital
Restart=always
ExecStartPre=/bin/sleep 5
RestartSec=30s
LimitNOFILE=8192

[Install]
WantedBy=multi-user.target

If you need to change port, you can setup with --prometheus-port --rpc-port and --ws-port

then start the service

sudo systemctl enable galital && sudo service galital start 

Check if validator is started

To ensure that Galital Validator process works:

ps aux | grep galital

You should see similar output:

galital   8108  9.9 21.0 1117976 419772 ?      Ssl  May17 601:17 /usr/bin/galital --port 30333 --name "A Node Name" --validator --chain galital

Check if your node is appearing in the telemetry UI : https://telemetry.polkadot.io/#list/Galital

Do not forget to change the name parameter (--name "A Node Name")

Video demonstrating all above steps:

Part 2 - Assign the node to an account

You can get some RTAL (Testnet token) with the discord bot

You need to create an controller account in order to do the next steps.

The stash account serve as you "cold wallet" with all your precious coin

The controller account serve as a manager to your stash account

Always keep in safe place your keystore file or your 12/24 words seed

To create an controller account, add account Controller

Save your mnemonic seed Controller

then name your account and add a password Controller

Then send some $RTAL (from your stash account) for covering network fees

You can proceed to the next steps

Create session key:

Go in you terminal where the node is installed and paste the current command, you will have a session key of your node.

curl -H "Content-Type: application/json" -d '{"id":1, "jsonrpc":"2.0", "method": "author_rotateKeys", "params":[]}' http://localhost:9933

Submitting the setKeys Transaction:

Go to the testnet you can now create a validator, use the key generated above to paste in the form. Validator

Select your stash account, controller account and so one Validator

Add you keys form the past command. Validator

You should now see your validator in the waiting tab Validator

Video demonstrating all above steps:

Part 3 - Set on-chain name of the validator

Short video guide demonstrating how to assign name to validator.

Voila, you are all set



Written by Masterdubs & WeHaveCookie