Initiation Validator Handbook

The Initia Validator Handbook offers an in-depth exploration of Initia, the network of interwoven rollups. It provides a thorough introduction to the Initia Public Testnet and includes a detailed walkthrough on how to run a validator or full node for active contribution. To improve your interaction with the network, we also provide a set of helpful CLI commands.


Explore the Initia network

Initia Network is a foundational blockchain platform built on the Cosmos SDK framework that comes with a Layer 2 infrastructure called Minitias. The base layer, Initia L1, regulates many parts of the network such as security, agreement rules, interoperability, rules governance, liquidity, and messaging between different chains.

Minitias, which are Layer 2 rollups, are EVM-, WasmVM or MoveVM compatible and are launched through the base chain of Initia. It's a system that tries to balance the needs and interests of all its users, from developers to Layer 2 app-chains, and even the Layer 1 chain itself.

Welcome to the Initiation

Initia's Public Testnet, known as The Initiation, has been recently launched. This testnet is a sandbox for users and validators to interact with and evaluate the myriad of features incorporated into the Initia network, including the high-performance ecosystem rollups that offer fresh perspectives on blockchain technology.

The Initiation is not just a Public Testnet; it's a planned, eight-week exploration window that concludes with the launch of the mainnet later this year. For those new to the platform, this period serves as an ideal time to gain practical experience with Initia's Core Apps, which have been methodically developed over the past year, hand in hand with the creation of its architectural and economic models.

These are the core apps that Initia has been developing
These are the core apps that Initia has been developing

Starting with Your Node

Before we proceed, it's essential to understand the two ways you can participate in the Initia network: as a full node or a validator node:

  • Operating a full node requires significant resources, but it's crucial for tasks such as developing dApps and establishing private blockchain interaction endpoints.

  • On the other hand, running a validator node is an ideal choice if your goal is to contribute to the network's decentralization and participate in validating network operations, assuming your node is part of the active set.

Prerequisite

Ensure your machine meets the recommended specifications outlined below:

  • CPU: 16 Cores

  • Memory: 16 GB RAM

  • Disk: 2 TB SSD

  • Machine: Ubuntu 22.04+

Script Execution

Use the following script to install the node:

wget -O initia.sh https://api.denodes.xyz/initia.sh && bash initia.sh

Synchronize Your Node

At this point, you should allow your node to synchronize with the network's height before proceeding. Feel free to use the command below to check the node's catching up status.

curl -s localhost:26657/status | jq .result.sync_info.catching_up

However, if you prefer a quicker synchronization process, we offer two options - Snapshot and StateSync.

Option 1: SnapShot

SnapShot is a functionality that allows you to access the data of the blockchain at a particular point in time. This can be useful for backup, recovery, or for starting a new node.

Our snapshot is updated every hour. You can see the latest block where the snapshot has been made here.

Use the following command to download and install our snapshot:

wget -O initia_latest.tar.lz4 http://initia-snap.denodes.xyz/initia_latest.tar.lz4
systemctl stop initiad
mv ~/.initia/data/priv_validator_state.json  ~/.initia/priv_validator_state.json
initiad tendermint unsafe-reset-all --home $HOME/.initia --keep-addr-book
lz4 -c -d initia_latest.tar.lz4  | tar -x -C $HOME/.initia
mv ~/.initia/priv_validator_state.json  ~/.initia/data/priv_validator_state.json
systemctl restart initiad
journalctl -fu initiad -o cat

However, feel free to explore other community-driven snapshots on discord. Here are a few examples for you:

Option 2: StateSync

Use the following command to utilize our StateSync:

SNAP_RPC="https://initia-testnet-rpc.denodes.xyz:443"

LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \
BLOCK_HEIGHT=$((LATEST_HEIGHT - 2000)); \
TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash)

sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$SNAP_RPC,$SNAP_RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.initia/config/config.toml

systemctl stop initiad
initiad tendermint unsafe-reset-all --home $HOME/.initia --keep-addr-book
systemctl start initiad

Note: If you're looking to run a full node, this is the final step for you. If you need additional commands, continue following the guide to the end.

Create a Wallet

Next, proceed to create a wallet and show its address:

source $HOME/.bash_profile

Create new wallet:

initiad keys add $WALLET

Note: Be sure to keep the mnemonic in a secure place.

Restore existing wallet:

initiad keys add $WALLET --recover

Save the wallet address:

WALLET_ADDRESS=$(initiad keys show $WALLET -a)
echo "export WALLET_ADDRESS="$WALLET_ADDRESS >> $HOME/.bash_profile
source $HOME/.bash_profile

Testnet Faucet

Request test tokens from the Faucet for this address. Then, check your balance:

initiad q bank balances $WALLET_ADDRESS

Create a Validator

Initialize a validator using the following command:

initiad tx mstaking create-validator \
  --amount 1000000uinit \
  --pubkey $(initiad tendermint show-validator) \
  --moniker $MONIKER \
  --details "YOUR VALIDATOR DESCRIPTION (OPTIONAL)" \
  --website "YOUR WEBSITE (OPTIONAL)" \
  --chain-id initiation-1 \
  --commission-rate 0.07 \
  --commission-max-rate 0.20 \
  --commission-max-change-rate 0.05 \
  --from $WALLET \
  --fees 90000uinit \
  --gas auto \
  -y

Useful Commands

Check logs:

sudo journalctl -u initiad -f

Restart your node:

sudo systemctl restart initiad

Check a wallet balance:

initiad q bank balances $WALLET_ADDRESS

Check sync status:

curl -s localhost:26657/status | jq .result.sync_info.catching_up

Edit validator details:

initiad tx mstaking edit-validator \
  --commission-rate 0.08 \
  --new-moniker "$MONIKER" \
  --identity "NEW IDENTITY" \
  --details "NEW DESCRIPTION" \
  --from $WALLET \
  --chain-id initiation-1 \
  --fees 90000uinit \
  --gas auto \
  -y 

Unjail validator:

initiad tx slashing unjail --from $WALLET --chain-id initiation-1 --gas auto --fees 90000uinit -y

Vote proposal:

initiad tx gov vote 1 yes --from $WALLET --chain-id initiation-1  --gas auto --fees 90000uinit -y 

Withdraw all rewards:

initiad tx distribution withdraw-all-rewards --from $WALLET --chain-id initiation-1 --gas auto --fees 90000uinit -y

Withdraw rewards and commission from your validator:

initiad tx distribution withdraw-rewards $(initiad keys show $WALLET --bech val -a) --from $WALLET --commission --chain-id initiation-1 --gas auto --fees 90000uinit -y 

Delegate more tokens to yourself:

initiad tx mstaking delegate $(initiad keys show $WALLET --bech val -a) 1000000uinit --from $WALLET --chain-id initiation-1 --gas auto --fees 90000uinit -y 

Delegate tokens to another validator:

initiad tx mstaking delegate <TO_VALOPER_ADDRESS> 1000000uinit --from $WALLET --chain-id initiation-1 --gas auto --fees 90000uinit -y 	

Redelegate tokens from one validator to another:

initiad tx mstaking redelegate <FROM_VALOPER_ADDRESS> <TO_VALOPER_ADDRESS> 1000000uinit --from $WALLET --chain-id initiation-1 --gas auto --fees 90000uinit -y 

Transfer tokens to another address:

initiad tx bank send $(initiad keys show $WALLET -a) <TO_WALLET_ADDRESS> 1000000uinit --gas auto --fees 90000uinit -y 

Deleting an Initia Node

sudo systemctl stop initiad
sudo systemctl disable initiad
sudo rm -rf /etc/systemd/system/initiad.service
sudo systemctl stop slinkyd
sudo systemctl disable slinkyd
sudo rm -rf /etc/systemd/system/slinkyd.service
sudo rm $(which initiad)
sudo rm $(which slinky)
sudo rm -rf ~/.initia
sudo rm -rf ~/.slinky
sudo rm -rf ~/initia
sudo rm -rf ~/slinky

Initia's FAQ

What is Initia Network?

Initia is a Layer 1 blockchain platform with a unique Layer 2 infrastructure (Minitias).

What is the Initiation Public Testnet?

The Initiation is Initia's Public Testnet that allows users and validators to explore and evaluate the full range of features within the Initia network.

What's the difference between a full node and a validator node?

A full node requires significant resources and is crucial for tasks such as developing decentralized applications (dApps) and establishing private blockchain interaction endpoints. A validator node, however, is a great choice for those who want to contribute to the network's decentralization and participate in the validation of network operations.

What are the prerequisites for setting up an Initia node?

The recommended specifications for setting up a node include a CPU with 16 cores, 16GB of memory, a 2 TB SSD, and a machine running Ubuntu 22.04 or higher.

What is SnapShot?

SnapShot is a functionality that allows you to access the data of the blockchain at a particular point in time. This can be useful for backup, recovery, or for starting a new node.

What is StateSync?

StateSync is a faster synchronization process that can be used as an alternative to waiting for your node to synchronize with the network's height.

How can I join the Initia community?

You can join the Initia community by following them on Twitter, joining their Discord server, reading their Medium posts, or checking out their GitHub repositories.


Subscribe to deNodes
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.