Testnet

Warden Protocol

Installation Guide
Validator CLI
Public Endpoint
Statesync
Snapshot
Explorers
Node Maps
Installation Guide
Installation Guide
Validator CLI
Public Endpoint
Statesync
Snapshot
Explorers
Node Maps

How To Install Full Node Warden Protocol Testnet

Setting up vars

Your Nodename (validator) that will shows in explorer

NODENAME=<Your_Nodename_Moniker>

Save variables to system

echo "export NODENAME=$NODENAME" >> $HOME/.bash_profile
if [ ! $WALLET ]; then
    echo "export WALLET=wallet" >> $HOME/.bash_profile
fi
echo "export WARDEN_CHAIN_ID=buenavista-1" >> $HOME/.bash_profile
source $HOME/.bash_profile

Update packages

sudo apt update && sudo apt upgrade -y

Install dependencies

sudo apt install curl build-essential git wget jq make gcc tmux net-tools ccze -y

Install go

if ! [ -x "$(command -v go)" ]; then
  ver="1.21.4"
  cd $HOME
  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"
  echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> ~/.bash_profile
  source ~/.bash_profile
fi

Download and build binaries

cd $HOME
rm -rf wardenprotocol
git clone --depth 1 --branch v0.3.0 https://github.com/warden-protocol/wardenprotocol/
cd wardenprotocol
make build-wardend
sudo mv build/wardend /root/go/bin

Config app

wardend config chain-id $WARDEN_CHAIN_ID

Init app

wardend init $NODENAME --chain-id $WARDEN_CHAIN_ID

Download configuration

wget -O $HOME/.warden/config/genesis.json https://snap1.konsortech.xyz/warden/genesis.json

Set seeds and peers

PEERS=ddb4d92ab6eba8363bab2f3a0d7fa7a970ae437f@sentry-1.buenavista.wardenprotocol.org:26656,c717995fd56dcf0056ed835e489788af4ffd8fe8@sentry-2.buenavista.wardenprotocol.org:26656,e1c61de5d437f35a715ac94b88ec62c482edc166@sentry-3.buenavista.wardenprotocol.org:26656
sed -i -e 's/^persistent_peers *=.*/persistent_peers = "'"$PEERS"'"/' $HOME/.warden/config/config.toml

Disable indexing

indexer="null"
sed -i -e "s/^indexer *=.*/indexer = \"$indexer\"/" $HOME/.warden/config/config.toml

Config pruning

pruning="custom"
pruning_keep_recent="100"
pruning_keep_every="0"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.warden/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.warden/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.warden/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.warden/config/app.toml

Set minimum gas price

sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0.005uward\"|" $HOME/.warden/config/app.toml

Create service

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

[Service]
User=$USER
ExecStart=$(which wardend) start --home $HOME/.warden
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

Register and start service

sudo systemctl daemon-reload
sudo systemctl enable wardend
sudo systemctl restart wardend && sudo journalctl -u wardend -f -o cat

Guidance for Validator

Create wallet

To create new wallet you can use command below. Don’t forget to save the mnemonic

wardend keys add $WALLET

To recover your wallet using seed phrase

wardend keys add $WALLET --recover

Show your wallet list

wardend keys list

Save wallet info

Add wallet and validator address into variables

WARDEN_WALLET_ADDRESS=$(wardend keys show $WALLET -a)
WARDEN_VALOPER_ADDRESS=$(wardend keys show $WALLET --bech val -a)
echo 'export WARDEN_WALLET_ADDRESS='${WARDEN_WALLET_ADDRESS} >> $HOME/.bash_profile
echo 'export WARDEN_VALOPER_ADDRESS='${WARDEN_VALOPER_ADDRESS} >> $HOME/.bash_profile
source $HOME/.bash_profile

Fund your wallet

In order to create validator first you need to fund your wallet with discord faucet.

curl -X POST -H "Content-Type: application/json" -d '{"address": "wardenxxxxx"}' https://faucet.alfama.wardenprotocol.org

Create validator

check your wallet balance:

wardend query bank balances $WARDEN_WALLET_ADDRESS

To create your validator run command below

wardend comet show-validator

The output will be similar to this (with a different key):

{"@type":"/cosmos.crypto.ed25519.PubKey","key":"lR1d7YBVK5jYijOfWVKRFoWCsS4dg3kagT7LB9GnG8I="}

Then, create a file named validator.json with the following content:

{    
    "pubkey": {"@type":"/cosmos.crypto.ed25519.PubKey","key":"lR1d7YBVK5jYijOfWVKRFoWCsS4dg3kagT7LB9GnG8I="},
    "amount": "1000000uward",
    "moniker": "your-node-moniker",
    "identity": "eqlab testnet validator",
    "website": "optional website for your validator",
    "security": "optional security contact for your validator",
    "details": "optional details for your validator",
    "commission-rate": "0.1",
    "commission-max-rate": "0.2",
    "commission-max-change-rate": "0.01",
    "min-self-delegation": "1"
}

Finally, we’re ready to submit the transaction to create the validator:

wardend tx staking create-validator validator.json \
    --from=$WALLET \
    --chain-id=$WARDEN_CHAIN_ID \
    --fees=500uward

Check your validator key

[[ $(wardend q staking validator $WARDEN_VALOPER_ADDRESS -oj | jq -r .consensus_pubkey.key) = $(wardend status | jq -r .ValidatorInfo.PubKey.value) ]] && echo -e "\n\e[1m\e[32mTrue\e[0m\n" || echo -e "\n\e[1m\e[31mFalse\e[0m\n"

Get list of validators

wardend q staking validators -oj --limit=3000 | jq '.validators[] | select(.status=="BOND_STATUS_BONDED")' | jq -r '(.tokens|tonumber/pow(10; 6)|floor|tostring) + " \t " + .description.moniker' | sort -gr | nl

Usefull commands

Service management

Check logs

journalctl -fu wardend -o cat

Start service

sudo systemctl start wardend

Stop service

sudo systemctl stop wardend

Restart service

sudo systemctl restart wardend

Node info

Synchronization info

wardend status 2>&1 | jq .SyncInfo

Validator info

wardend status 2>&1 | jq .ValidatorInfo

Node info

wardend status 2>&1 | jq .NodeInfo

Show node id

wardend tendermint show-node-id

Wallet operations

List of wallets

wardend keys list

Recover wallet

wardend keys add $WALLET --recover

Delete wallet

wardend keys delete $WALLET

Get wallet balance

wardend query bank balances $WARDEN_WALLET_ADDRESS

Transfer funds

wardend tx bank send $WARDEN_WALLET_ADDRESS <TO_WARDEN_WALLET_ADDRESS> 1000000uward

Voting

wardend tx gov vote 1 yes --from $WALLET --chain-id=$WARDEN_CHAIN_ID

Staking, Delegation and Rewards

Delegate stake

wardend tx staking delegate $WARDEN_VALOPER_ADDRESS 1000000uward --from=$WALLET --chain-id=$WARDEN_CHAIN_ID --gas=auto

Redelegate stake from validator to another validator

wardend tx staking redelegate <srcValidatorAddress> <destValidatorAddress> 1000000uward --from=$WALLET --chain-id=$WARDEN_CHAIN_ID --gas=auto

Withdraw all rewards

wardend tx distribution withdraw-all-rewards --from=$WALLET --chain-id=$WARDEN_CHAIN_ID --gas=auto

Withdraw rewards with commision

wardend tx distribution withdraw-rewards $WARDEN_VALOPER_ADDRESS --from=$WALLET --commission --chain-id=$WARDEN_CHAIN_ID

Validator management

Edit validator

wardend tx staking edit-validator \
  --moniker=$NODENAME \
  --identity=<your_keybase_id> \
  --website="<your_website>" \
  --details="<your_validator_description>" \
  --chain-id=$WARDEN_CHAIN_ID \
  --from=$WALLET

Unjail validator

wardend tx slashing unjail \
  --broadcast-mode=block \
  --from=$WALLET \
  --chain-id=$WARDEN_CHAIN_ID \
  --gas=auto

Public Endpoint

RPC

https://testnet-warden-rpc.konsortech.xyz

API

https://testnet-warden-api.konsortech.xyz

gRPC

testnet-warden.konsortech.xyz:19090

Peers and Seeds

Peers

00c0b45d650def885fcbcc0f86ca515eceede537@testnet-warden.konsortech.xyz:19656

Seeds

1e9e0b6f17050c931058f0fe316d6736c13abfa9@testnet-seed.konsortech.xyz:19165

Genesis & Address Book

Address Book

https://snap1.konsortech.xyz/warden/addrbook.json

Genesis

https://snap1.konsortech.xyz/warden/genesis.json

State Sync

sudo systemctl stop wardend

cp $HOME/.warden/data/priv_validator_state.json $HOME/.warden/priv_validator_state.json.backup
wardend tendermint unsafe-reset-all --home $HOME/.warden --keep-addr-book

SNAP_RPC="https://testnet-warden-rpc.konsortech.xyz:443"

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

echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH

PEERS="00c0b45d650def885fcbcc0f86ca515eceede537@testnet-warden.konsortech.xyz:19656"
sed -i -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.warden/config/config.toml

sed -i -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/.warden/config/config.toml

mv $HOME/.warden/priv_validator_state.json.backup $HOME/.warden/data/priv_validator_state.json

sudo systemctl restart wardend
sudo journalctl -u wardend -f --no-hostname -o cat

Snapshot

sudo systemctl stop wardend
cp $HOME/.warden/data/priv_validator_state.json $HOME/.warden/priv_validator_state.json.backup
rm -rf $HOME/.warden/data

SNAP_NAME=$(curl -s https://snap1.konsortech.xyz/warden/ | egrep -o ">warden-snapshot.*\.tar.lz4" | tr -d ">")
curl https://snap1.konsortech.xyz/warden/${SNAP_NAME} | lz4 -dc - | tar -xf - -C $HOME/.warden
mv $HOME/.warden/priv_validator_state.json.backup $HOME/.warden/data/priv_validator_state.json

sudo systemctl restart wardend && journalctl -u wardend -f --no-hostname -o cat
Embed Iframe

Warden Protocol Testnet | Node Decentralization Maps