Running the Node
Instructions to start the node and productionize it are provided below.
After completing the installation steps , it is time to run the node. The first step is to obtain the genesis file. It can be downloaded from Imua's testnets repository.
wget -O $HOMEDIR/config/genesis.json https://raw.githubusercontent.com/imua-xyz/testnets/main/genesis/$CHAIN_ID.json
It is also recommended to verify that the genesis file generated from the bootstrap contract matches the one above; however, that is out of scope for this document.
Starting the Node
Start your node and test it out. Validators must also set up and run the oracle price feeder tool as described on the previous page.
# As a validator using the embedded oracle price feeder
imuad --home $HOMEDIR start --oracle
# Other cases
imuad --home $HOMEDIR start
If you get any errors while starting the node, refer to the Common Issues & Solutions section.
To speed up syncing, see the Snapshot page.
Checking Node Status
Before the Network Launches
Imua's bootstrap contract provides an offset duration (of 24 hours) before the network’s spawn time to provide enough time for the initial validator set to come online. If you’re one of them and you’re on time, you should see something like this in the logs.
4:29AM INF Genesis time is in the future. Sleeping until then... genTime=2024-08-31T22:58:52Z module=server server=node
You should also be able to see if you’re in the initial validator set.
4:29AM INF This node is a validator addr=38A21AA8D3386568C4FC0B041F16B77A9D7F06AB module=consensus pubKey=PubKeyEd25519{F0F6919E522C5B97DB2C8255BFF743F9DFDDD7AD9FC37CB0C1670B480D0F9914} server=node
If you have both of those lines, it means that everything is working and you simply need to launch Imua as a systemd service.
After the Network has Launched
It may take some time for the node to establish connection with the seeds and obtain peers; however, once that is done, you will see multiple lines containing executed block
4:02AM INF executed block height=6447467 module=state num_invalid_txs=0 num_valid_txs=0 server=node
You can query the block height and see it increasing.
imuad query block | jq .block.header.height
To check if the node is fully synced, use the following. If true
is reported, it means that the node is behind the network
imuad status | jq .SyncInfo.catching_up
Next, terminate the process (Ctrl + C) before productionizing it.
Systemd service
First, create a user for added security and give it ownership of the home directory. This walk-through uses imuauser
to demonstrate.
adduser --shell /usr/sbin/nologin imuauser
chown -R imuauser:imuauser $HOMEDIR
Then, create the service file in /etc/systemd/system/cosmovisor-imuad.service
.
[Unit]
Description=Imuachain node via Cosmovisor
After=network.target
[Service]
Type=simple
# This is set to HOME=/root on most systems which causes Cosmos SDK to complain
Environment="HOME=/home/imuauser"
# Change to your HOMEDIR value
Environment="HOMEDIR=/home/imuauser/.imuad"
User=imuauser
Group=imuauser
# If you are a validator using the embedded price feeder, include `--oracle`.
# Otherwise, exclude it.
ExecStart=/usr/bin/cosmovisor --cosmovisor-config ${HOMEDIR}/cosmovisor/config.toml run start --oracle --home ${HOMEDIR}
[Install]
WantedBy=default.target
Finally, run the service
systemctl daemon-reload
systemctl enable --now cosmovisor-imuad
Then again check that the block height is increasing.
imuad query block | jq .block.header.height
Last updated