Skip to content

Installing und & Using Cosmovisor

Note

This guide is for fresh full node installations. For existing nodes migrating to cosmovisor, please see the Migrations documentation.

Installing and configuring cosmovisor makes managing and maintaining und updates & upgrades much simpler.

This guide will cover installing and configuring und to run with Cosmovisor, and a full sync from genesis allowing you to run a full node.

Contents

1. Download the genesis version of und, initialise & configure

First, download the und version for genesis:

bash
mkdir -p $HOME/tmp && cd $HOME/tmp
wget https://github.com/unification-com/mainchain/releases/download/1.5.1/und_v1.5.1_linux_x86_64.tar.gz
tar -zxvf und_v1.5.1_linux_x86_64.tar.gz

Initialise the node

bash
./und init [NODE_MONIKER]

Download genesis.json

IMPORTANT

Please ensure you download the correct genesis for the network you would like to join! Remember to change the output directory in the command below if you are using something other than the default $HOME/.und_mainchain directory!

To spin up your new node, download the latest genesis.json for the network you would like to join:

MainNet

bash
curl https://raw.githubusercontent.com/unification-com/mainnet/master/latest/genesis.json > $HOME/.und_mainchain/config/genesis.json

Get the seed nodes

IMPORTANT

Please ensure you get the correct seed node information for the network you would like to join! Remember to change the directory if you are using something other than the default $HOME/.und_mainchain directory! For this guide, we are using /mnt/disks/data/.und_mainchain for the node's home directory.

Your node will need to know at least one seed node in order to join the network and begin P2P communication with other nodes in the network. The latest seed information will always be available at each network's respective Github repo:

Go to the repo for the network you are connecting to and copy one or more of the seed nodes (you only need the id@address:port)

Edit your node configuration file using nano:

bash
nano /path/to/.und_mainchain/config/config.toml

Hit Ctrl+W, type [p2p] (including the square brackets) and hit return - this will take you to the [p2p] section of the config file, which begins with:

##### peer to peer configuration options #####
[p2p]

Find the seeds = "" variable about 12 lines below, and add the seed node information between the double quotes (comma separated, no spaces if more than one). For example:

toml
seeds = "node_id@ip:port"

Set gas-prices

It is good practice to set the minimum-gas-prices value in $HOME/.und_mainchain/config/app.toml, in order to protect your full node from spam transactions. This should be set as a decimal value in nund, and the recommended value is currently 25.0nund. This means your node will ignore any Txs with a gas price below this value. To do so, open up $HOME/.und_mainchain/config/app.toml in a text editor, and set minimum-gas-prices

bash
nano $HOME/.und_mainchain/config/app.toml

Change:

toml
minimum-gas-prices = ""

To, for example:

toml
minimum-gas-prices = "25.0nund"

Hit Ctrl+X followed by y and then return to save the file and exit nano.

2. Install & Configure Cosmovisor

Next, install cosmovisor

bash
mkdir $HOME/tmp && cd $HOME/tmp
wget https://github.com/cosmos/cosmos-sdk/releases/download/cosmovisor%2Fv1.5.0/cosmovisor-v1.5.0-linux-amd64.tar.gz
tar -zxvf cosmovisor-v1.5.0-linux-amd64.tar.gz
sudo mv cosmovisor /usr/local/bin/cosmovisor

The latest version of cosmovisor is v1.5.0

2.1 Set up cosmovisor directory structure

Create the directory structure for the und binaries and updates

2.1.1 und v1.5.1: genesis:

mkdir -p $HOME/tmp && cd $HOME/tmp
  wget https://github.com/unification-com/mainchain/releases/download/1.5.1/und_v1.5.1_linux_x86_64.tar.gz
  tar -zxvf und_v1.5.1_linux_x86_64.tar.gz
  mkdir -p $HOME/.und_mainchain/cosmovisor/genesis/bin
  mv und $HOME/.und_mainchain/cosmovisor/genesis/bin
  $HOME/.und_mainchain/cosmovisor/genesis/bin/und version --log_level=""

Check the version output is 1.5.1.

2.1.2 und v1.6.x: 1-init_ibc update

Important

Upgrade plan names for und v1.6.x:
MainNet: 1-init_ibc
TestNet: 1-ibc

The upgrade plan name determines the directory path that und v1.6.x will be installed in!

Install the 1-init_ibc update:

MainNet

mkdir -p $HOME/tmp && cd $HOME/tmp
  wget https://github.com/unification-com/mainchain/releases/download/v1.6.3/und_v1.6.3_linux_x86_64.tar.gz
  tar -zxvf und_v1.6.3_linux_x86_64.tar.gz
  mkdir -p $HOME/.und_mainchain/cosmovisor/upgrades/1-init_ibc/bin
  mv und $HOME/.und_mainchain/cosmovisor/upgrades/1-init_ibc/bin
  $HOME/.und_mainchain/cosmovisor/upgrades/1-init_ibc/bin/und version --log_level=""

Check the version output is 1.6.3.

2.1.3 und v1.7.x: 2-grog update

Install the 2-grog update:

mkdir -p $HOME/tmp && cd $HOME/tmp
  wget https://github.com/unification-com/mainchain/releases/download/v1.7.0/und_v1.7.0_linux_x86_64.tar.gz
  tar -zxvf und_v1.7.0_linux_x86_64.tar.gz
  mkdir -p $HOME/.und_mainchain/cosmovisor/upgrades/2-grog/bin
  mv und $HOME/.und_mainchain/cosmovisor/upgrades/2-grog/bin
  $HOME/.und_mainchain/cosmovisor/upgrades/2-grog/bin/und version --log_level=""

Check the version output is 1.7.0.

2.1.4 und v1.8.x: 3-keyleth update

Install the 3-keyleth update:

mkdir -p $HOME/tmp && cd $HOME/tmp
  wget https://github.com/unification-com/mainchain/releases/download/v1.8.2/und_v1.8.2_linux_x86_64.tar.gz
  tar -zxvf und_v1.8.2_linux_x86_64.tar.gz
  mkdir -p $HOME/.und_mainchain/cosmovisor/upgrades/3-keyleth/bin
  mv und $HOME/.und_mainchain/cosmovisor/upgrades/3-keyleth/bin
  $HOME/.und_mainchain/cosmovisor/upgrades/3-keyleth/bin/und version --log_level=""

Check the version output is 1.8.2.

2.1.5 und v1.9.x: 4-percival update

Install the 4-percival update:

mkdir -p $HOME/tmp && cd $HOME/tmp
  wget https://github.com/unification-com/mainchain/releases/download/v1.9.0/und_v1.9.0_linux_x86_64.tar.gz
  tar -zxvf und_v1.9.0_linux_x86_64.tar.gz
  mkdir -p $HOME/.und_mainchain/cosmovisor/upgrades/4-percival/bin
  mv und $HOME/.und_mainchain/cosmovisor/upgrades/4-percival/bin
  $HOME/.und_mainchain/cosmovisor/upgrades/4-percival/bin/und version --log_level=""

Check the version output is 1.9.0.

2.1.6 und v1.10.x: 5-pike update

Install the 5-pike update:

mkdir -p $HOME/tmp && cd $HOME/tmp
  wget https://github.com/unification-com/mainchain/releases/download/v1.10.1/und_v1.10.1_linux_x86_64.tar.gz
  tar -zxvf und_v1.10.1_linux_x86_64.tar.gz
  mkdir -p $HOME/.und_mainchain/cosmovisor/upgrades/5-pike/bin
  mv und $HOME/.und_mainchain/cosmovisor/upgrades/5-pike/bin
  $HOME/.und_mainchain/cosmovisor/upgrades/5-pike/bin/und version --log_level=""

Check the version output is 1.10.1.

2.1.7 und v1.11.x: 6-scanlan update

Install the 6-scanlan update:

mkdir -p $HOME/tmp && cd $HOME/tmp
  wget https://github.com/unification-com/mainchain/releases/download/v1.11.0/und_v1.11.0_linux_x86_64.tar.gz
  tar -zxvf und_v1.11.0_linux_x86_64.tar.gz
  mkdir -p $HOME/.und_mainchain/cosmovisor/upgrades/6-scanlan/bin
  mv und $HOME/.und_mainchain/cosmovisor/upgrades/6-scanlan/bin
  $HOME/.und_mainchain/cosmovisor/upgrades/6-scanlan/bin/und version --log_level=""

Check the version output is 1.11.0.

2.2 Create cosmovisor environment file

Create an environment variable file which will load into the systemd service, modifying /FULL/PATH/TO/ as required:

bash
tee $HOME/.und_mainchain/cosmovisor/UND_COSMOVISOR_ENV > /dev/null <<EOF
DAEMON_NAME=und
DAEMON_HOME=/FULL/PATH/TO/.und_mainchain
DAEMON_RESTART_AFTER_UPGRADE=true
DAEMON_RESTART_DELAY=5s
EOF

3. Set up the systemd service

Create a systemd service file, replacing USERNAME as required:

bash
sudo tee /etc/systemd/system/und.service > /dev/null <<EOF
[Unit] 
Description=Unification Mainchain Node 
 
[Service] 
User=USERNAME 
Group=USERNAME 
WorkingDirectory=/home/USERNAME 
EnvironmentFile=/home/USERNAME/.und_mainchain/cosmovisor/UND_COSMOVISOR_ENV
ExecStart=/usr/local/bin/cosmovisor run start
Restart=on-failure
RestartSec=10s
LimitNOFILE=4096 
 
[Install] 
WantedBy=default.target
EOF

Reload systemd:

bash
sudo systemctl daemon-reload

4. Start the systemd service

Start the und as a background service:

bash
sudo systemctl start und
sudo journalctl -u und -f

5. Become a Validator

Should you wish, and once your node is fully synced, you can become a validator