LogoLogo
  • Imua
    • About
  • Manifesto
    • The Problems
    • The Principles
  • Architecture
    • Imua Design Principles
    • Imua Network
    • Imua Modules
    • Client Chain Bridges
      • Trustless Verification of Client Chain State
      • Handling Race Conditions between Imua and Client Chains
    • Client Chain Contracts
  • Concepts
    • Ecosystem
      • Re/stakers
      • Operators
      • Services (AVS)
        • Service Integration with Imua
        • Service Committee
        • Service Integration Details
    • restaked Proof-of-Stake (rPOS)
    • Multi-Token Restaking
    • Multi-Chain Restaking with Trustless Bridging
    • Voting Power
    • Price Oracle
    • Flexible Integration with AVS
    • Tribe Staking
  • Governance
  • Risk Management
    • Risk Analysis
      • Risk Modeling
      • Risk Parameters
      • Crypto-Economic Risk
      • Unintended Slashing
      • Black Swan Events
    • Risk Mitigation
      • Smart Contract Simplicity
      • Audits
      • Slashing Prevention
      • Slashing Vetos
      • Insurance Pools
      • Circuit Breakers
  • Components
    • Testnet
    • Oracle Module
      • Reaching Consensus on Asset Prices
      • Penalty
      • Implementation Detail
    • Smart Contracts
    • Explorer
    • Registry
  • Validator Setup
    • Prerequisites
    • Node Install
    • Compiling Binary from Source
    • Oracle Price Feeder
    • Running the Node
    • Snapshot
    • Register Option 1 (Bootstrap)
    • Register Option 2 (Post Network Launch)
    • Deposit Tokens
    • Delegating Tokens
    • Confirm Election Status
    • Faucets
    • Managing The Validator
    • Security Best Practices
    • Risks & Mitigation
    • Participation in Governance
    • FAQs & Resources
  • Testnet Upgrade to v1.1.1
  • AVS Setup
    • AVS Overview
    • Prerequisites
    • Building the AVS in Imua
    • Hello-World-AVS Example
    • Becoming AVS Operator
    • AVS Register and Deploy
    • AVS Task Example
    • Enhanced and Automated Edition of hello-avs integration guide&example
  • Whitepaper (2023)
    • .pdf
  • FAQ
    • What problems is Imua solving?
    • What are the main design trade-offs that had to be made with an omnichain design?
    • Does the omnichain design imply added trust assumptions (relative to a single-chain design)?
    • What concurrency-related challenges would you face with a different design?
    • How does Imua integrate with new chains?
    • Do specific chains prove unique challenges w.r.t. integration?
    • How is the cross-chain communication is achieved?
    • What are the known attack / censorship vectors here, if any?
    • Are the restaked tokens being pooled in a centralized account?
    • Who will run the validators in the Imua network?
    • Is Imua an AVS?
    • How does Imua address the risks of overloading L1 social consensus?
    • Does the Imua queuing system raise concerns around latency?
    • What are the main benefits of an omnichain design?
Powered by GitBook
On this page
  • Starting the Node
  • Checking Node Status
  • Systemd service
  1. Validator Setup

Running the Node

Instructions to start the node and productionize it are provided below.

PreviousOracle Price FeederNextSnapshot

Last updated 2 days ago

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 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 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 .

# 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 section.

To speed up syncing, see the page.

Checking Node Status

You can check the status of your node at anytime. However, the output you should expect will change depending on whether your node is started before the network launch or after it.

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.

/etc/systemd/system/imua.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
testnets
generated
previous page
Snapshot
Common Issues & Solutions