Testnet

Symphony

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

How To Install Full Node Symphony 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 SYMPHONY_CHAIN_ID=symphony-testnet-4" >> $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.22.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 symphony
git clone https://github.com/Orchestra-Labs/symphony symphony
cd symphony
git checkout v0.4.1
make install

Init app

symphonyd init $NODENAME --chain-id $SYMPHONY_CHAIN_ID

Download configuration

cd $HOME
wget -O $HOME/.symphonyd/config/genesis.json https://snap2.konsortech.xyz/symphony/genesis.json
wget -O $HOME/.symphonyd/config/addrbook.json https://snap2.konsortech.xyz/symphony/addrbook.json

Disable indexing

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

Config pruning

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

Set minimum gas price

sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "0.25note"|g' $HOME/.symphonyd/config/app.toml

Create service

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

Register and start service

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

Guide for Validator CLI

Create wallet

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

symphonyd keys add $WALLET

To recover your wallet using seed phrase

symphonyd keys add $WALLET --recover

Show your wallet list

symphonyd keys list

Save wallet info

Add wallet and validator address into variables

SYMPHONY_WALLET_ADDRESS=$(symphonyd keys show $WALLET -a)
SYMPHONY_VALOPER_ADDRESS=$(symphonyd keys show $WALLET --bech val -a)
echo 'export SYMPHONY_WALLET_ADDRESS='${SYMPHONY_WALLET_ADDRESS} >> $HOME/.bash_profile
echo 'export SYMPHONY_VALOPER_ADDRESS='${SYMPHONY_VALOPER_ADDRESS} >> $HOME/.bash_profile
source $HOME/.bash_profile

Create validator

check your wallet balance:

symphonyd query bank balances $SYMPHONY_WALLET_ADDRESS

To create your validator run command below

symphonyd tx staking create-validator \
  --amount 1000000note \
  --from $WALLET \
  --commission-max-change-rate "0.01" \
  --commission-max-rate "0.2" \
  --commission-rate "0.1" \
  --min-self-delegation "1" \
  --pubkey  $(symphonyd tendermint show-validator) \
  --moniker $NODENAME \
  --chain-id $SYMPHONY_CHAIN_ID
  --gas-adjustment 1.4 \
  --gas auto \
  --fees 800note

Check your validator key

[[ $(symphonyd q staking validator $SYMPHONY_VALOPER_ADDRESS -oj | jq -r .consensus_pubkey.key) = $(symphonyd status | jq -r .validator_info.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

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

Start service

sudo systemctl start symphonyd

Stop service

sudo systemctl stop symphonyd

Restart service

sudo systemctl restart symphonyd

Node info

Synchronization info

symphonyd status 2>&1 | jq .sync_info

Validator info

symphonyd status 2>&1 | jq .validator_info

Node info

symphonyd status 2>&1 | jq .node_info

Show node id

symphonyd tendermint show-node-id

Wallet operations

List of wallets

symphonyd keys list

Recover wallet

symphonyd keys add $WALLET --recover

Delete wallet

symphonyd keys delete $WALLET

Get wallet balance

symphonyd query bank balances $SYMPHONY_WALLET_ADDRESS

Transfer funds

symphonyd tx bank send $SYMPHONY_WALLET_ADDRESS <TO_SYMPHONY_WALLET_ADDRESS> 1000000note

Voting

symphonyd tx gov vote 1 yes --from $WALLET --chain-id=$SYMPHONY_CHAIN_ID

Staking, Delegation and Rewards

Delegate stake

symphonyd tx staking delegate $SYMPHONY_VALOPER_ADDRESS 1000000note --from=$WALLET --chain-id=$SYMPHONY_CHAIN_ID --gas=auto

Redelegate stake from validator to another validator

symphonyd tx staking redelegate <srcValidatorAddress> <destValidatorAddress> 1000000note --from=$WALLET --chain-id=$SYMPHONY_CHAIN_ID --gas=auto

Withdraw all rewards

symphonyd tx distribution withdraw-all-rewards --from=$WALLET --chain-id=$SYMPHONY_CHAIN_ID --gas=auto

Withdraw rewards with commision

symphonyd tx distribution withdraw-rewards $SYMPHONY_VALOPER_ADDRESS --from=$WALLET --commission --chain-id=$SYMPHONY_CHAIN_ID

Validator management

Edit validator

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

Unjail validator

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

Public Endpoints

RPC

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

API

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

gRPC

testnet-symphony.konsortech.xyz:14090

Persistence Peers

8e5d8b822c67b9e60f884857c2b58af95e1c67be@testnet-symphony.konsortech.xyz:14656

Seeds

e1226a94284458871eeece1631061b97209151bf@testnet-seed.konsortech.xyz:22165

Mirroring Genesis

https://snap2.konsortech.xyz/symphony/genesis.json

Address Book

https://snap2.konsortech.xyz/symphony/addrbook.json

State Sync

sudo systemctl stop symphonyd

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

SNAP_RPC="https://testnet-symphony-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="8e5d8b822c67b9e60f884857c2b58af95e1c67be@testnet-symphony.konsortech.xyz:14656"
sed -i 's|^persistent_peers *=.*|persistent_peers = "'$peers'"|' $HOME/.symphonyd/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/.symphonyd/config/config.toml

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

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

Snapshot

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

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

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

Symphony Testnet Decentralization Maps