Mainnet

Quicksilver

Installation Guide
Tendermint CLI
State Sync
Public Endpoint
Snapshot
Custom Explorers
Decentralization Maps
Installation Guide
Installation Guide
Tendermint CLI
State Sync
Public Endpoint
Snapshot
Custom Explorers
Decentralization Maps

How To Install Full Node Quicksilver Mainnet

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 QUICKSILVER_CHAIN_ID=quicksilver-2" >> $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.20.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 quicksilver
git clone https://github.com/ingenuity-build/quicksilver.git
cd quicksilver
git checkout v1.2.17
make install

Config app

quicksilverd config chain-id $QUICKSILVER_CHAIN_ID

Init app

quicksilverd init $NODENAME --chain-id $QUICKSILVER_CHAIN_ID

Download configuration

cd $HOME
curl -Ls https://snapshot3.konsortech.xyz/quicksilver/genesis.json > $HOME/.quicksilverd/config/genesis.json
curl -Ls https://snapshot3.konsortech.xyz/quicksilver/addrbook.json > $HOME/.quicksilverd/config/addrbook.json

Set seeds and peers

sed -i -e "s|^seeds *=.*|seeds = \"61e601946a69bf667f41d67a3515da0cf8950516@mainnet-seed.konsortech.xyz:46165\"|" $HOME/.quicksilverd/config/config.toml

Disable indexing

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

Config pruning

pruning="custom"
pruning_keep_recent="100"
pruning_keep_every="0"
pruning_interval="19"
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

Set minimum gas price

sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0.0001uqck\"|" $HOME/.quicksilverd/config/app.toml

Create service

sudo tee /etc/systemd/system/quicksilverd.service > /dev/null <<EOF
[Unit]
Description=Quicksilver Node
After=network-online.target

[Service]
User=$USER
ExecStart=$(which quicksilverd) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

Register and start service

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

Guidence for Create Validator

Create wallet

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

quicksilverd keys add $WALLET

To recover your wallet using seed phrase

quicksilverd keys add $WALLET --recover

Show your wallet list

quicksilverd keys list

Save wallet info

Add wallet and validator address into variables

QUICKSILVER_WALLET_ADDRESS=$(quicksilverd keys show $WALLET -a)
QUICKSILVER_VALOPER_ADDRESS=$(quicksilverd keys show $WALLET --bech val -a)
echo 'export QUICKSILVER_WALLET_ADDRESS='${QUICKSILVER_WALLET_ADDRESS} >> $HOME/.bash_profile
echo 'export QUICKSILVER_VALOPER_ADDRESS='${QUICKSILVER_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.

Buy on Osmosis

Create validator

check your wallet balance:

quicksilverd query bank balances $QUICKSILVER_WALLET_ADDRESS

To create your validator run command below

quicksilverd tx staking create-validator \
  --amount 1000000uqck \
  --from $WALLET \
  --commission-max-change-rate "0.01" \
  --commission-max-rate "0.2" \
  --commission-rate "0.07" \
  --min-self-delegation "1" \
  --pubkey  $(quicksilverd tendermint show-validator) \
  --moniker $NODENAME \
  --chain-id $QUICKSILVER_CHAIN_ID
  --gas-adjustment 1.4 \
  --gas auto \
  --gas-prices 0.0001uqck \
  -y

Check your validator key

[[ $(quicksilverd q staking validator $QUICKSILVER_VALOPER_ADDRESS -oj | jq -r .consensus_pubkey.key) = $(quicksilverd 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

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

Start service

sudo systemctl start quicksilverd

Stop service

sudo systemctl stop quicksilverd

Restart service

sudo systemctl restart quicksilverd

Node info

Synchronization info

quicksilverd status 2>&1 | jq .SyncInfo

Validator info

quicksilverd status 2>&1 | jq .ValidatorInfo

Node info

quicksilverd status 2>&1 | jq .NodeInfo

Show node id

quicksilverd tendermint show-node-id

Wallet operations

List of wallets

quicksilverd keys list

Recover wallet

quicksilverd keys add $WALLET --recover

Delete wallet

quicksilverd keys delete $WALLET

Get wallet balance

quicksilverd query bank balances $QUICKSILVER_WALLET_ADDRESS

Transfer funds

quicksilverd tx bank send $QUICKSILVER_WALLET_ADDRESS <TO_QUICKSILVER_WALLET_ADDRESS> 1000000uqck

Voting

quicksilverd tx gov vote 1 yes --from $WALLET --chain-id=$QUICKSILVER_CHAIN_ID

Staking, Delegation and Rewards

Delegate stake

quicksilverd tx staking delegate $QUICKSILVER_VALOPER_ADDRESS 1000000uqck --from=$WALLET --chain-id=$QUICKSILVER_CHAIN_ID --gas=auto

Redelegate stake from validator to another validator

quicksilverd tx staking redelegate <srcValidatorAddress> <destValidatorAddress> 1000000uqck --from=$WALLET --chain-id=$QUICKSILVER_CHAIN_ID --gas=auto

Withdraw all rewards

quicksilverd tx distribution withdraw-all-rewards --from=$WALLET --chain-id=$QUICKSILVER_CHAIN_ID --gas=auto

Withdraw rewards with commision

quicksilverd tx distribution withdraw-rewards $QUICKSILVER_VALOPER_ADDRESS --from=$WALLET --commission --chain-id=$QUICKSILVER_CHAIN_ID

Validator management

Edit validator

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

Unjail validator

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

Public Endpoint

RPC

https://mainnet-quicksilver-rpc.konsortech.xyz 

API

https://mainnet-quicksilver-api.konsortech.xyz 

gRPC

mainnet-quicksilver.konsortech.xyz:46090

Peers and Seeds

Peers

66a0cd5eff87ec7b1ea2e3b41032c1c2d22aa284@mainnet-quicksilver.konsortech.xyz:46657

Seeds

61e601946a69bf667f41d67a3515da0cf8950516@mainnet-seed.konsortech.xyz:46165

Genesis and Addrbook

curl -Ls https://snapshot3.konsortech.xyz/quicksilver/genesis.json > $HOME/.quicksilverd/config/genesis.json
curl -Ls https://snapshot3.konsortech.xyz/quicksilver/addrbook.json > $HOME/.quicksilverd/config/addrbook.json

State Sync

sudo systemctl stop quicksilverd

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

SNAP_RPC="https://mainnet-quicksilver-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

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/.quicksilverd/config/config.toml

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

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

Snapshot

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

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

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

Quicksilver Decentralization Maps