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
Custom Explorers
https://testnet-explorer.konsortech.xyz/side
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