Symphony

Website: https://orchestralabs.org/ Twitter: https://x.com/orchestra_labs Discord: https://discord.gg/qp2mHg39Hb

1. Hardware requirement

4 Cores, 8G Ram, 200G SSD, Ubuntu 22.04

2. Server preparation

Copy

sudo apt update && sudo apt upgrade -y
sudo apt install make curl git wget htop tmux build-essential jq make lz4 gcc unzip -y

3. Install GO

Copy

#Install GO
ver="1.22.2"
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" >> $HOME/.bash_profile
source $HOME/.bash_profile
go version

4. Download and build binaries

Copy

cd $HOME
rm -rf symphony
git clone https://github.com/Orchestra-Labs/symphony
cd symphony
git checkout v0.2.1
make install

5. Initialize the node

Copy

cd $HOME
MONIKER=NodeName
echo "export MONIKER=$MONIKER" >> $HOME/.bash_profile
echo "export CHAIN_ID="symphony-testnet-2"" >> $HOME/.bash_profile
echo "export SYMPHONY_PORT="15"" >> $HOME/.bash_profile
source $HOME/.bash_profile

Copy

symphonyd init $MONIKER --chain-id $CHAIN_ID

Copy

wget -O $HOME/.symphonyd/config/genesis.json https://files.nodesync.top/Symphony/symphony-genesis.json
wget -O $HOME/.symphonyd/config/addrbook.json https://files.nodesync.top/Symphony/symphony-addrbook.json

Copy

#Configure Seeds and Peers
SEEDS=""
PEERS="[email protected]:24856,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:11347,[email protected]:24856,[email protected]:22656,[email protected]:26656,[email protected]:26656,[email protected]:23656,[email protected]:21656,[email protected]:25656,[email protected]:29156,[email protected]:22656,[email protected]:26656,[email protected]:24856,[email protected]:11856,[email protected]:24856,[email protected]:29656,[email protected]:13656,[email protected]:12656,[email protected]:10756,[email protected]:28656,[email protected]:26656,[email protected]:14556,[email protected]:16611,[email protected]:12656,[email protected]:26656,[email protected]:26656,[email protected]:29156,[email protected]:26656,[email protected]:51556,[email protected]:45656,[email protected]:25656,[email protected]:14656,[email protected]:26556,[email protected]:23656,[email protected]:45656,[email protected]:26656,[email protected]:45656,[email protected]:24856,[email protected]:24856,[email protected]:37656,[email protected]:45656,[email protected]:40656,[email protected]:51556,[email protected]:24856,[email protected]:38656,[email protected]:11856,[email protected]:26656,[email protected]:29256,[email protected]:29256,[email protected]:24856,[email protected]:24856,[email protected]:24856,[email protected]:16656,[email protected]:45656,[email protected]:38656,[email protected]:26656,[email protected]:45656,[email protected]:29256,[email protected]:26656,[email protected]:45656,[email protected]:45656,[email protected]:45656,[email protected]:25656,[email protected]:29156,[email protected]:29156
,247a415a06766df181c30328d30a89aeb8822afe@rpc.symphony-t.indonode.net:11856,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656"
sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.symphonyd/config/config.toml
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.025note\"/" $HOME/.symphonyd/config/app.toml
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.symphonyd/config/config.toml
sed -i 's|^prometheus *=.*|prometheus = true|' $HOME/.symphonyd/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/.symphonyd/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.symphonyd/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.symphonyd/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.symphonyd/config/app.toml


# Set Custom Port
sed -i.bak -e "s%:1317%:${SYMPHONY_PORT}317%g;
s%:8080%:${SYMPHONY_PORT}080%g;
s%:9090%:${SYMPHONY_PORT}090%g;
s%:9091%:${SYMPHONY_PORT}091%g;
s%:8545%:${SYMPHONY_PORT}545%g;
s%:8546%:${SYMPHONY_PORT}546%g;
s%:6065%:${SYMPHONY_PORT}065%g" $HOME/.symphonyd/config/app.toml
sed -i.bak -e "s%:26658%:${SYMPHONY_PORT}658%g;
s%:26657%:${SYMPHONY_PORT}657%g;
s%:6060%:${SYMPHONY_PORT}060%g;
s%:26656%:${SYMPHONY_PORT}656%g;
s%^external_address = \"\"%external_address = \"$(wget -qO- eth0.me):${SYMPHONY_PORT}656\"%;
s%:26660%:${SYMPHONY_PORT}660%g" $HOME/.symphonyd/config/config.toml
sed -i \
  -e 's|^chain-id *=.*|chain-id = "symphony-testnet-2"|' \
  -e 's|^keyring-backend *=.*|keyring-backend = "test"|' \
  -e 's|^node *=.*|node = "tcp://localhost:15657"|' \
  $HOME/.symphonyd/config/client.toml

Copy

# Download latest chain snapshot
symphonyd tendermint unsafe-reset-all --home ~/.symphonyd/ --keep-addr-book
curl https://files.nodesync.top/Symphony/symphony.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.symphonyd

5. Create Service and Start node

Copy

# Set Service File
sudo tee /etc/systemd/system/symphonyd.service > /dev/null <<EOF
[Unit]
Description=symphony-testnet
After=network-online.target

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

[Install]
WantedBy=multi-user.target
EOF

Copy

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

6. Wallet

Add New Wallet Key - Save seed

Copy

symphonyd keys add wallet

Recover existing key

Copy

symphonyd keys add wallet --recover

List All Keys

Copy

symphonyd keys list

6.1 Query Wallet Balance

Copy

symphonyd q bank balances $(symphonyd keys show wallet -a)

6.2 Check sync status

False is synced

Copy

symphonyd status 2>&1 | jq .SyncInfo.catching_up

6.3 Create Validator

Change your info

Copy

symphonyd tx staking create-validator \
--amount=1000000note \
--pubkey=$(symphonyd tendermint show-validator) \
--moniker=$MONIKER \
--identity="YOUR_KEYBASE_ID" \
--details="YOUR_DETAILS" \
--website="YOUR_WEBSITE_URL" \
--chain-id=symphony-testnet-2 \
--commission-rate=0.10 \
--commission-max-rate=0.20 \
--commission-max-change-rate=0.01 \
--min-self-delegation=1000 \
--from=wallet \
--gas-adjustment=1.5 \
--gas="auto" \
--gas-prices=1note \
-y

6.4 Edit Existing Validator

Change your info

Copy

symphonyd tx staking edit-validator \
--new-moniker="YOUR MONIKER" \
--identity="IDENTITY KEYBASE" \
--details="DETAILS VALIDATOR" \
--website="LINK WEBSITE" \
--chain-id=symphony-testnet-2 \
--from=wallet \
--gas-adjustment=1.5 \
--gas="auto" \
--gas-prices=1note \
-y

6.5 Delegate Token to your own validator

Copy

symphonyd tx staking delegate $(symphonyd keys show wallet --bech val -a) 100000note --from wallet --chain-id symphony-testnet-2 --gas-adjustment 1.5 --gas auto --gas-prices 1note 

6.6 Withdraw rewards and commission from your validator

Copy

symphonyd tx distribution withdraw-all-rewards --from wallet --chain-id symphony-testnet-2 --gas-adjustment 1.5 --gas auto --gas-prices 1note 

6.7 Unjail validator

Copy

symphonyd tx slashing unjail --from wallet --chain-id symphony-testnet-2 --gas-adjustment 1.5 --gas auto --gas-prices 1note 

6.8 Send Token to another wallet

Copy

symphonyd tx bank send wallet <TO_WALLET_ADDRESS> 10000note --from wallet --chain-id  symphony-testnet-2 --gas-adjustment 1.5 --gas auto --gas-prices 1note 

6.9 Services Management

Copy

# Reload Service
sudo systemctl daemon-reload

# Enable Service
sudo systemctl enable symphonyd

# Disable Service
sudo systemctl disable symphonyd

# Start Service
sudo systemctl start symphonyd

# Stop Service
sudo systemctl stop symphonyd

# Restart Service
sudo systemctl restart symphonyd

# Check Service Status
sudo systemctl status symphonyd

# Check Service Logs
sudo journalctl -u symphonyd -f --no-hostname -o cat

7. Backup Validator

Important

Copy

cat $HOME/.symphonyd/config/priv_validator_key.json

8. Snapshot

Copy

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 ~/.symphonyd/ --keep-addr-book

curl https://files.nodesync.top/Symphony/symphony.tar.lz4 | 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 && sudo journalctl -fu symphonyd -o cat

9. Remove node

Copy

cd $HOME
sudo systemctl stop symphonyd.service
sudo systemctl disable symphonyd.service
sudo rm /etc/systemd/system/symphonyd.service
sudo systemctl daemon-reload
rm -f $(which symphonyd)
rm -rf $HOME/.symphonyd
rm -rf $HOME/symphonyd

Last updated