May 27, 2022

How to set up the Quicksilver Node

Hello everyone! Let's install the Quicksilver node and participate The Rhapsody testnet. Don't forget to play the "Bohemian Rhapsody" for inspiration.

Requirements for the node according to the documentation: 4 Cores (modern CPU's), 8GB RAM, 40GB of storage. Quicksilver is using statesync, so disk requirements will be low.

Always update your server first

sudo apt update && sudo apt upgrade -y

Install additional packages

sudo apt install make clang pkg-config libssl-dev build-essential git gcc chrony curl jq ncdu bsdmainutils htop net-tools lsof fail2ban wget -y

Go lang installation. Please check the version at the end.

cd $HOME wget -O go1.18.1.linux-amd64.tar.gz https://golang.org/dl/go1.18.1.linux-amd64.tar.gz rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.18.1.linux-amd64.tar.gz && rm go1.18.1.linux-amd64.tar.gz echo 'export GOROOT=/usr/local/go' >> $HOME/.bash_profile echo 'export GOPATH=$HOME/go' >> $HOME/.bash_profile echo 'export GO111MODULE=on' >> $HOME/.bash_profile echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> $HOME/.bash_profile && . $HOME/.bash_profile go version

Download and install the binary

git clone https://github.com/ingenuity-build/quicksilver.git --branch v0.3.0 cd quicksilver make build

Move the binary to the correct folder

chmod +x ./build/quicksilverd && sudo mv ./build/quicksilverd /usr/local/bin/quicksilverd cd $HOME

Set variables. Change MONICKER to your name and set the WALLET NAME as well. Do not change the CHAIN name.

MONIKER="your_name" CHAIN="rhapsody-5" WALLET_NAME="your_name"

Save all variables in the .bash_profile

echo 'export MONIKER='${MONIKER} >> $HOME/.bash_profile echo 'export CHAIN='${CHAIN} >> $HOME/.bash_profile echo 'export WALLET_NAME='${WALLET_NAME} >> $HOME/.bash_profile source $HOME/.bash_profile

Initialize the node

quicksilverd init $MONIKER --chain-id $CHAIN

Save the name of network, keyring backend and broadcast mode to the config file.

quicksilverd config chain-id $CHAIN quicksilverd config keyring-backend test quicksilver config broadcast-mode block

Download the genesis file

wget -qO $HOME/.quicksilverd/config/genesis.json "https://raw.githubusercontent.com/ingenuity-build/testnets/main/rhapsody/genesis.json"

Setting up pruning

pruning="custom" pruning_keep_recent="100" pruning_keep_every="0" pruning_interval="10" sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.quicksilverd/config/app.toml sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.quicksilverd/config/app.toml sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.quicksilverd/config/app.toml sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.quicksilverd/config/app.toml

Add seeds

seeds="dd3460ec11f78b4a7c4336f22a356fe00805ab64@seed.rhapsody-5.quicksilver.zone:26656" sed -i.bak -e "s/^seeds *=.*/seeds = \"$seeds\"/" $HOME/.quicksilverd/config/config.toml

Create a service file

tee /etc/systemd/system/quicksilverd.service > /dev/null <<EOF [unit] Description=Quicksilver After=network.target [service] Type=simple User=$USER ExecStart=$(which quicksilverd) start Restart=on-failure RestartSec=10 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF

And start the service

sudo systemctl daemon-reload sudo systemctl enable quicksilverd sudo systemctl restart quicksilverd

Let's check logs and wait for the node to start synchronizing

journalctl -u quicksilverd -f -o cat

Also, you can check synchronization status . If catching_up": false, your node is synchronized.

quicksilver status 2>&1 | jq .SyncInfo

After the synchronization, create your wallet. You will need to set a password. Do not change the name, we set it up earlier. Don't forget to save your mnemonic, password and wallet address.

quicksilverd keys add $WALLET_NAME

Link the variable with the wallet address

WALLET_ADDRESS=$(quicksilverd keys show $WALLET_NAME -a)

Add save this variable to the .bash_profile

echo 'export WALLET_ADDRESS='${WALLET_ADDRESS} >> $HOME/.bash_profile source $HOME/.bash_profile

Now you need to receive funds from the faucet. Go to the discord channel #qck-tap and request tokens: $request wallet_number rhapsody

Check your balance:

quicksilverd query bank balances $WALLET_ADDRESS

If you already have tokens in your wallet, next step is creating validator. You can change amount for delegation.

quicksilverd tx staking create-validator \ --from=$WALLET_NAME \ --amount=5000000uqck \ --moniker=$MONIKER \ --chain-id=$CHAIN ​​\ --commission-rate=0.1 \ --commission-max-rate=0.2 \ --commission-max-change-rate=0.1 \ --min-self-delegation=1 \ --pubkey=$(quicksilverd tendermint show-validator)

Link validator variable with the address.

VALOPER=$(quicksilverd keys show $WALLET_ADDRESS --bech val -a)

Аdd this variable to the .bash_profile

echo 'export VALOPER='${VALOPER} >> $HOME/.bash_profile source $HOME/.bash_profile

Check the status

quicksilverd query staking validator $VALOPER

Delegate more to your validator. Check your balance and change the amount if needed.

quicksilverd tx staking delegate $VALOPER 1000000uqck --from $WALLET_NAME --chain-id $CHAIN

If you are JAILED, don't worry. This is the way back:

quicksilverd tx slashing unjail --from $WALLET_NAME --chain-id $CHAIN

Post in the discord proofs that you set up a validator and request the special role. Wait for announcements and participate in community discussions.

Thank you! Have a great day ahead!

Sincerely, MMS_Team