🔌 Installation

1️⃣ Installation packeges and dependencies

sudo apt update && sudo apt upgrade -y
sudo apt install curl git wget htop tmux build-essential jq make lz4 gcc unzip -y
sudo apt install snapd -y
sudo snap install just --classic

➡️ Go Installation

cd $HOME
VER="1.25.0"
wget "https://golang.org/dl/go$VER.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$VER.linux-amd64.tar.gz"
rm "go$VER.linux-amd64.tar.gz"
[ ! -f ~/.bash_profile ] && touch ~/.bash_profile
echo "export PATH=$PATH:/usr/local/go/bin:~/go/bin" >> ~/.bash_profile
source $HOME/.bash_profile
[ ! -d ~/go/bin ] && mkdir -p ~/go/bin

➡️ Set Vars

You can replace 119 with anything you want. Please write 3 digits.

echo "export W_PORT="119"" >> $HOME/.bash_profile
source $HOME/.bash_profile

2️⃣ Install node

cd $HOME
mkdir -p $HOME/.warden/cosmovisor/genesis/bin
rm -rf wardenprotocol
git clone https://github.com/warden-protocol/wardenprotocol
cd wardenprotocol
git checkout v0.7.0-rc3
just wardend build
mv ./build/wardend $HOME/.warden/cosmovisor/genesis/bin/wardend
chmod +x $HOME/.warden/cosmovisor/genesis/bin/wardend
cd $HOME
sudo ln -sfn $HOME/.warden/cosmovisor/genesis $HOME/.warden/cosmovisor/current
sudo ln -sfn $HOME/.warden/cosmovisor/current/bin/wardend /usr/local/bin/wardend
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.6.0

➡️ Create a service

sudo tee /etc/systemd/system/wardend.service > /dev/null << EOF
[Unit]
Description=Warden Node Service MictoNode
After=network-online.target

[Service]
User=$USER
ExecStart=$(which cosmovisor) run start
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
Environment="DAEMON_HOME=$HOME/.warden"
Environment="DAEMON_NAME=wardend"
Environment="UNSAFE_SKIP_BACKUP=true"
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:$HOME/.warden/cosmovisor/current/bin"

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable wardend

➡️ Initialize the node

wardend config set client chain-id barra_9191-1
wardend config set client keyring-backend test
wardend config set client node tcp://localhost:${W_PORT}57
wardend init "change-moniker" --chain-id barra_9191-1

➡️ Genesis

wget -O $HOME/.warden/config/genesis.json "https://raw.githubusercontent.com/warden-protocol/networks/main/testnets/barra/genesis.json"

➡️ Addrbook

wget -O $HOME/.warden/config/addrbook.json "https://raw.githubusercontent.com/MictoNode/warden-protocol/refs/heads/main/addrbook.json"

➡️ Gas Settings

sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "10award"|g' $HOME/.warden/config/app.toml

➡️ Port

sed -i.bak -e "s%:1317%:${W_PORT}17%g;
s%:8080%:${W_PORT}80%g;
s%:9090%:${W_PORT}90%g;
s%:9091%:${W_PORT}91%g;
s%:8545%:${W_PORT}45%g;
s%:8546%:${W_PORT}46%g;
s%:6065%:${W_PORT}65%g" $HOME/.warden/config/app.toml
sed -i.bak -e "s%:26658%:${W_PORT}58%g;
s%:26657%:${W_PORT}57%g;
s%:6060%:${W_PORT}60%g;
s%:26656%:${W_PORT}56%g;
s%^external_address = \"\"%external_address = \"$(wget -qO- eth0.me):${W_PORT}56\"%;
s%:26660%:${W_PORT}61%g" $HOME/.warden/config/config.toml

➡️ Peers and Seeds

SEEDS="c489c003b7c72298840bd4411ffc98ce13e07c27@54.194.136.183:26656,4564c91423a923eaba7982e69e33aec6185d362f@54.72.5.234:26656"
PEERS="43848deb8584befc4b07d72d3ad80818962069ae@123.17.118.218:18656,0f5133bc1b50edc13b7ddc850e39507bc220f559@157.180.52.245:31656,30b1384f9f4ae8a1644dabb92ad4715a8b155404@51.79.78.121:26656,c0b2b0e7a5e2b7787856f22908b16eeb69f14e77@89.233.108.37:18656,f8fd5c186c01f568b3620d3554d0235b81770339@185.233.107.75:18656,ff37394693e96769342c1710c46704293c109c61@46.4.91.76:32056,da8ea8a131db1c9ade0b9e1089adfd9330e3246f@65.109.78.246:22656,da55db59030869772dc439ffe9daf04a3a279b03@185.232.70.33:21656,77b1370e4c14496f44d9893e5b74ba5efba14d6b@162.55.224.194:27656,3184c3a25d51a249bebd1b837e05a223c90b65b7@65.109.117.219:18656,9ced90025b0f4c47373c677bce12d96116b49355@65.108.111.225:60856,7b4a217429f859deacdbe725f4fd6bdf989db5e0@193.203.15.135:26656,a796f2982d26ea5d91bc6eabd8762834ac8cdca5@38.242.154.120:18656,fb3c995373c0feee597dd3ed32e56cb5e0f0d1c2@65.108.120.161:26726,0d3f078c6bdf2c4791a844df2fa5b932cd83c1c7@65.109.69.119:18656,837d8748b4d5f6bd21f58a87fb5c5bcf9d60d0c7@65.108.121.227:13556,5c24c2c77416fb96753f32de07dc98a69562b5ad@149.86.227.233:29656,6f1ba284e755d26ba3a28631ec6fb1d0c2e44847@152.53.138.77:18656,142aa404c688ae2b8bf745d82ca6782d7ec6c35e@65.21.221.110:19656,dad0ee83e8040133e1b08b89385f36ac7a67fc58@185.218.125.146:18656,5bae3d352b52a83fde25f04bccb0d4d937a32e23@62.210.101.39:30856,baf98d88fdb1f6e8df1455fa04179aecdef7223a@23.88.5.169:10056,c489c003b7c72298840bd4411ffc98ce13e07c27@54.194.136.183:26656,67d40ecbbeb648afb411ef440bc0634de2cdfa4f@156.67.216.175:37656,6ac41e45f21c43edc92f836be96cae60438f6960@136.243.74.81:18656,b64af8e179c391423fff2b3596ab34ecbe21921e@152.53.151.154:18656,85807889c06713452d5a330f7660bbf3106aa598@152.53.136.97:18656,9dd2caead4b41af780256da0c2282a0c84c8d7fa@193.26.157.178:18656,f5ad99d783c52501ee6ff8ca4713c8564c72ecf4@37.27.132.57:26656,84376de171068c766d55f4cbc6dc9c5ddbfbd367@45.9.63.55:18656,2ecf876a84658e29f86707ef3fce8e980a090a3f@156.67.29.226:37656,abd2849ba845fa044bf4756e6f03c55699f41e13@65.109.111.234:18656,919bd063474a7f2e8d2ac6c08ca8e232610f0b06@65.108.198.145:57656,130ecc3bd7dcd99d0daa9216f760c5f804872ffc@167.235.178.134:27356,4f0c7c817e1a964a04b8bb490050669909fd2153@135.181.232.241:64656,2852653cacde1c1235967c8efb5b8a134ac0178d@167.86.90.163:18656,879983e2505beb7a7de601b0cd83218e12b6ed31@144.76.112.58:38656,957ffac6023cee86adacbae225896a2221c28d0d@195.26.252.175:37656,b5fa185e73936f8cf8adeed7c81e78348056ef82@152.53.151.237:18656,698dba7dfae4495b2f0ddc552451c0654e679dda@95.216.13.161:18656,cc5cee5fb9629072a7ef1127f16d87124adc1e34@207.244.239.234:31656,9c7564f341a9ac63217b7bc8f1de65cbecb09f55@188.40.66.173:27356,2c3f9d279c8eb20b1206a8bf5435050d6f82fa77@152.53.37.103:18656,acfdadaa26e0d31448df70c1f35792f00081b3bf@144.76.70.103:13656,8663a786148a713e380b8b352cf050a581d6b322@195.3.221.75:38656,80213d13021c2b55d1efae520065473e8b51199a@142.132.194.124:17104,a073ca67b879785714fbced8d91c254aa475c1f7@149.86.227.232:29656,03e44b6bae7a186ee8a3ae4a7efc07bfbc457967@117.1.96.41:18656"
sed -i -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*seeds *=.*/seeds = \"$SEEDS\"/}" \
       -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*persistent_peers *=.*/persistent_peers = \"$PEERS\"/}" $HOME/.warden/config/config.toml

➡️ Pruning

sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.warden/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.warden/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"10\"/" $HOME/.warden/config/app.toml
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.warden/config/config.toml

➡️ Other settings

cd $HOME/.warden/config
sed -i.bak 's|^\s*evm-chain-id\s*=.*|evm-chain-id = 9191|' app.toml
sed -i.bak 's|^\s*timeout_propose\s*=.*|timeout_propose = "1s"|' config.toml
sed -i.bak 's|^\s*timeout_propose_delta\s*=.*|timeout_propose_delta = "200ms"|' config.toml
sed -i.bak 's|^\s*timeout_prevote\s*=.*|timeout_prevote = "500ms"|' config.toml
sed -i.bak 's|^\s*timeout_prevote_delta\s*=.*|timeout_prevote_delta = "200ms"|' config.toml
sed -i.bak 's|^\s*timeout_precommit\s*=.*|timeout_precommit = "500ms"|' config.toml
sed -i.bak 's|^\s*timeout_precommit_delta\s*=.*|timeout_precommit_delta = "200ms"|' config.toml
sed -i.bak 's|^\s*timeout_commit\s*=.*|timeout_commit = "2s"|' config.toml
sed -i.bak 's|^\s*create_empty_blocks\s*=.*|create_empty_blocks = true|' config.toml
cd $HOME

➡️ Starter Snap (Thx Itrocket)

wardend tendermint unsafe-reset-all --home $HOME/.warden --keep-addr-book

SNAPSHOT_URL="https://server-3.itrocket.net/testnet/warden/"
LATEST_SNAPSHOT=$(curl -s $SNAPSHOT_URL | grep -oP 'warden_\d{4}-\d{2}-\d{2}_\d+_snap\.tar\.lz4' | sort | tail -n 1)

if [ -n "$LATEST_SNAPSHOT" ]; then
  FULL_URL="${SNAPSHOT_URL}${LATEST_SNAPSHOT}"
  if curl -s --head "$FULL_URL" | head -n 1 | grep "200" > /dev/null; then
    curl "$FULL_URL" | lz4 -dc - | tar -xf - -C $HOME/.warden
  else
    echo "Snapshot URL not accessible"
  fi
else
  echo "No snapshot found"
fi

➡️ Let’s get started

sudo systemctl restart wardend
journalctl -fu wardend -o cat

➡️ Create wallet

wardend keys add wallet-name

➡️ Import wallet

wardend keys add wallet-name --recover

➡️ Faucet

Faucet

➡️ Create Validator

wardend comet show-validator

Create validator.json

nano /root/validator.json
{
        "pubkey": paste-your-pubkey,
        "amount": "1000000000000000000award",
        "moniker": "MictoNodeGuide",
        "identity": "optional identity signature (ex. UPort or Keybase)",
        "website": "validator's (optional) website",
        "security": "validator's (optional) security contact email",
        "details": "validator's (optional) details",
        "commission-rate": "0.1",
        "commission-max-rate": "0.2",
        "commission-max-change-rate": "0.01",
        "min-self-delegation": "1"
}

send tx for create validator

wardend tx staking create-validator /root/validator.json \
    --from=wallet-name \
    --chain-id=barra_9191-1 \
    --gas auto --gas-adjustment 1.3 --fees 250000000000000award \
    -y

➡️ Delegation

wardend tx staking delegate $(wardend keys show wallet-name --bech val -a) amount000000000000000000award \
--chain-id barra_9191-1 \
--from "wallet-name" \
--gas auto --gas-adjustment 1.6 --fees 250000000000000award \
-y

➡️ Complete deletion

cd $HOME
sudo systemctl stop wardend
sudo systemctl disable wardend
sudo rm -rf /etc/systemd/system/wardend.service
sudo systemctl daemon-reload
sudo rm -f /usr/local/bin/wardend
sudo rm -f $(which wardend)
sudo rm -rf $HOME/.warden
sed -i "/W_PORT_/d" $HOME/.bash_profile

➡️ Block check

local_height=$(wardend status | jq -r .sync_info.latest_block_height); network_height=$(curl -s https://warden-testnet-rpc.mictonode.com/status | jq -r .result.sync_info.latest_block_height); blocks_left=$((network_height - local_height)); echo "Your node height: $local_height"; echo "MictoNode height: $network_height"; echo "Blocks left: $blocks_left"
  • Your node height - the current block of your node
  • MictoNode height - the last block of the network
  • Blocks left - how many blocks your node has left to sync.