Testnet

Side 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 Side 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 SIDE_CHAIN_ID=grimoria-testnet-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.9"
  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 side
git clone https://github.com/sideprotocol/side.git
cd side
git checkout v0.9.0
make install

Config app

sided config chain-id $SIDE_CHAIN_ID

Init app

sided init $NODENAME --chain-id $SIDE_CHAIN_ID

Download configuration

cd $HOME
wget -O $HOME/.side/config/genesis.json "https://snap1.konsortech.xyz/side-testnet/genesis.json"
wget -O $HOME/.side/config/addrbook.json "https://snap1.konsortech.xyz/side-testnet/addrbook.json"

Disable indexing

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

Config pruning

sed -i 's|pruning = "default"|pruning = "custom"|g' $HOME/.side/config/app.toml
sed -i 's|pruning-keep-recent = "0"|pruning-keep-recent = "100"|g' $HOME/.side/config/app.toml
sed -i 's|pruning-interval = "0"|pruning-interval = "19"|g' $HOME/.side/config/app.toml

Set minimum gas price

sed -i 's|^minimum-gas-prices *=.*|minimum-gas-prices = "0.005uside"|g' $HOME/.side/config/app.toml

Create service

sudo tee /etc/systemd/system/sided.service > /dev/null << EOF
[Unit]
Description=Side Node
After=network-online.target
[Service]
User=$USER
ExecStart=$(which sided) start
Restart=on-failure
RestartSec=10
LimitNOFILE=10000
[Install]
WantedBy=multi-user.target
EOF

Register and start service

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

Guidance for Validator

Create wallet

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

sided keys add $WALLET --key-type="segwit"

To recover your wallet using seed phrase

sided keys add $WALLET --recover --key-type="segwit"

Show your wallet list

sided keys list

Save wallet info

Add wallet and validator address into variables

SIDE_WALLET_ADDRESS=$(sided keys show $WALLET -a)
SIDE_VALOPER_ADDRESS=$(sided keys show $WALLET --bech val -a)
echo 'export SIDE_WALLET_ADDRESS='${SIDE_WALLET_ADDRESS} >> $HOME/.bash_profile
echo 'export SIDE_VALOPER_ADDRESS='${SIDE_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.

go to https://station-test.side.one/faucet
type your segwit wallet address

Create validator

check your wallet balance:

sided query bank balances $SIDE_WALLET_ADDRESS

To create your validator run command below

sided tx staking create-validator \
--amount 1000000uside \
--pubkey $(sided tendermint show-validator) \
--moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id $SIDE_CHAIN_ID \
--commission-rate 0.05 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.05 \
--min-self-delegation 1 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.005uside \
-y

Check your validator key

[[ $(sided q staking validator $SIDE_VALOPER_ADDRESS -oj | jq -r .consensus_pubkey.key) = $(sided 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

sided 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 sided -o cat

Start service

sudo systemctl start sided

Stop service

sudo systemctl stop sided

Restart service

sudo systemctl restart sided

Node info

Synchronization info

sided status 2>&1 | jq .SyncInfo

Validator info

sided status 2>&1 | jq .ValidatorInfo

Node info

sided status 2>&1 | jq .NodeInfo

Show node id

sided tendermint show-node-id

Wallet operations

List of wallets

sided keys list

Recover wallet

sided keys add $WALLET --recover

Delete wallet

sided keys delete $WALLET

Get wallet balance

sided query bank balances $SIDE_WALLET_ADDRESS

Transfer funds

sided tx bank send $SIDE_WALLET_ADDRESS <TO_SIDE_WALLET_ADDRESS> 1000000uside

Voting

sided tx gov vote 1 yes --from $WALLET --chain-id=$SIDE_CHAIN_ID

Staking, Delegation and Rewards

Delegate stake

sided tx staking delegate $SIDE_VALOPER_ADDRESS 1000000uside --from=$WALLET --chain-id=$SIDE_CHAIN_ID --gas=auto

Redelegate stake from validator to another validator

sided tx staking redelegate <srcValidatorAddress> <destValidatorAddress> 1000000uside --from=$WALLET --chain-id=$SIDE_CHAIN_ID --gas=auto

Withdraw all rewards

sided tx distribution withdraw-all-rewards --from=$WALLET --chain-id=$SIDE_CHAIN_ID --gas=auto

Withdraw rewards with commision

sided tx distribution withdraw-rewards $SIDE_VALOPER_ADDRESS --from=$WALLET --commission --chain-id=$SIDE_CHAIN_ID

Validator management

Edit validator

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

Unjail validator

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

Public Endpoint

RPC

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

API

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

gRPC

testnet-side.konsortech.xyz:22090

Peers and Seeds

Peers

3fa9ca28502629d0949cf331a23b870f83080dda@testnet-side.konsortech.xyz:22656

Seeds

4d0b542a43ab4368c9cb63fc00b5f5098eb255ef@testnet-seed.konsortech.xyz:35165

Genesis & Address Book

Address Book

https://snap1.konsortech.xyz/side-testnet/addrbook.json

Genesis

https://snap1.konsortech.xyz/side-testnet/genesis.json

State Sync

sudo systemctl stop sided

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

SNAP_RPC="https://testnet-side-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="3fa9ca28502629d0949cf331a23b870f83080dda@testnet-side.konsortech.xyz:22656"
sed -i 's|^persistent_peers *=.*|persistent_peers = "'$peers'"|' $HOME/.side/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/.side/config/config.toml

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

rm -rf ~/.side/wasm
curl -L https://snap1.konsortech.xyz/side-testnet/wasm.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.side

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

Snapshots

sudo systemctl stop sided
cp $HOME/.side/data/priv_validator_state.json $HOME/.side/priv_validator_state.json.backup
rm -rf $HOME/.side/data

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

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

Side Protocol Testnet | Node Decentralization Maps