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.
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.
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.
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.
Ensure your machine meets the recommended specifications outlined below:
CPU: 16 Cores
Memory: 16 GB RAM
Disk: 2 TB SSD
Machine: Ubuntu 22.04+
Use the following script to install the node:
wget -O initia.sh https://api.denodes.xyz/initia.sh && bash initia.sh
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.
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:
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.
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
Request test tokens from the Faucet for this address. Then, check your balance:
initiad q bank balances $WALLET_ADDRESS
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
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
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 is a Layer 1 blockchain platform with a unique Layer 2 infrastructure (Minitias).
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.
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.
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.
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.
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.
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.