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