January 20, 2022

How to Rizon 🚀 Mainnet Guide

1. Node installation

# Update system packages, if needed
$ sudo apt update && sudo apt upgrade -y
# Install go 1.17.2 (anything greater than 1.15 fits well)
$ version="1.17.2" \
&& cd $HOME \
&& wget "https://golang.org/dl/go$version.linux-amd64.tar.gz" \
&& sudo rm -rf /usr/local/go \
&& sudo tar -C /usr/local -xzf "go$version.linux-amd64.tar.gz" \
&& rm "go$version.linux-amd64.tar.gz" \
&& echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile \
&& source $HOME/.bash_profile
$ go version
go version go1.16.7 linux/amd64
# Install make/gcc/jq
$ sudo apt install -y make gcc jq
# Install rizon binaries
$ cd $HOME
$ git clone https://github.com/rizon-world/rizon.git
$ cd rizon/
$ git checkout v0.2.8
$ make install

Check the version of the binaries, at the time of the post 20 Jan 2022 mainnet is on v0.2.8

$ rizond version
v0.2.8

2. Node initialization and configuration

!!! replace YOUR_NODE_NAME with your own moniker name

# Init system variables
$ RIZON_CHAIN=titan-1
$ RIZON_NODENAME="YOUR_NODE_NAME"
$ RIZON_WALLET="wallet"

$ echo 'export RIZON_CHAIN='$RIZON_CHAIN >> $HOME/.bash_profile
$ echo 'export RIZON_NODENAME='${RIZON_NODENAME} >> $HOME/.bash_profile
$ echo 'export RIZON_WALLET='${RIZON_WALLET} >> $HOME/.bash_profile
$ source $HOME/.bash_profile
# Initialize the node
$ rizond init $RIZON_NODENAME --chain-id $RIZON_CHAIN
# Setting up genesis.json and verify it's checksum
$ wget https://raw.githubusercontent.com/rizon-world/mainnet/master/genesis.json
$ cp -f genesis.json ~/.rizon/config/genesis.json
$ jq -S -c -M '' ~/.rizon/config/genesis.json | shasum -a 256
5f00af49e86f5388203b8681f4482673e96acf028a449c0894aa08b69ef58bcb  -
# Set minimum gas prices to prevent spamming 
$ sed -i 's/minimum-gas-prices = ""/minimum-gas-prices = "0.0001uatolo"/g' \
 $HOME/.rizon/config/app.toml
 
# Set production seeds
$ seeds="83c9cdc2db2b4eff4acc9cd7d664ad5ae6191080@seed-1.mainnet.rizon.world:26656,ae1476777536e2be26507c4fbcf86b67540adb64@seed-2.mainnet.rizon.world:26656,8abf316257a264dc8744dee6be4981cfbbcaf4e4@seed-3.mainnet.rizon.world:26656"
$ sed -i.bak -e "s/^seeds *=.*/seeds = \"$seeds\"/" $HOME/.rizon/config/config.toml

Blockchain database tends to grow over time, depending e.g. on block speed and transaction amount.

There are few configurations that can be done to reduce the required disk usage quite significantly.

By default every 500th state, and the last 100 states are kept. This consumes a lot of disk space on long run, and can be optimized with following custom configuration.

# Update pruning to save disk space
$ sed -i 's/pruning = "default"/pruning = "custom"/g' \
  $HOME/.rizon/config/app.toml
$ sed -i 's/pruning-keep-recent = "0"/pruning-keep-recent = "100"/g' \
  $HOME/.rizon/config/app.toml
$ sed -i 's/pruning-interval = "0"/pruning-interval = "10"/g' \
  $HOME/.rizon/config/app.toml

If you do not need to query transactions from the specific node, you can disable indexing.

# Disable indexing, if you don't need query transactions
$ sed -i 's/indexer = "kv"/indexer = "null"/g' \
  $HOME/.rizon/config/config.toml

Adding new service file.

# Create a service file
$ sudo tee <<EOF >/dev/null /etc/systemd/system/rizond.service
[Unit]
Description=Rizon Node
After=network-online.target
[Service]
User=$USER
ExecStart=$HOME/go/bin/rizond start
Restart=on-failure
RestartSec=10
LimitNOFILE=10000
[Install]
WantedBy=multi-user.target
EOF
# Enable the service and tail its logs
$ sudo systemctl daemon-reload
$ sudo systemctl enable rizond
$ sudo systemctl restart rizond
$ sudo journalctl -u rizond -f --no-hostname -o cat

Wait until node is completely synced, for me it took about day an a half, in order to check that node is completely synced use the following commands.

# Check synced status
$ $HOME/go/bin/rizond status 2>&1 | jq ."SyncInfo"."catching_up"

'true'  - node is NOT synced
'false' - node is synced

3. Create wallet

!!! save mnemonic from the output

# Create new key
$ rizond keys add $RIZON_WALLET

# Save valoper address to env variables
$ RIZON_VALOPER=$(rizond keys show $RIZON_WALLET --bech val -a)
$ echo $RIZON_VALOPER
$ echo 'export RIZON_VALOPER='${RIZON_VALOPER} >> $HOME/.bash_profile
$ source $HOME/.bash_profile

4. Request tokens

Node should be completely synced up to this point

You can ask community to help you with the initial batch of tokens. Write me directly hdmiimdh#7913 or ask for the help in #titan-validator discord channel.

Alternatively you can buy the tokens on one of the exchanges listing it. In order to start your validator 10 ATOLO is enough.

Once you get them, verify the balance.

# Get wallet address
$ rizond keys list

# Check balance
$ rizond query bank balances WALLET_ADDRESS

5. Create validator

1 ATOLO = 1000000uatolo

# Create validator, providing your balance is not empty
rizond tx staking create-validator \
--amount="9000000uatolo" \
--pubkey=$(rizond tendermint show-validator) \
--moniker="$RIZON_NODENAME" \
--details="Hello world!" \
--commission-rate="0.10" \
--commission-max-rate="0.20" \
--commission-max-change-rate="0.01" \
--min-self-delegation="1" \
--from=$RIZON_WALLET \
--chain-id=$RIZON_CHAIN \
--fees="1000uatolo"

Once the create-validator transaction has completed, you can check whether your validator has been properly added via explorer. Search your node by name (moniker) in both Active and Inactive sections.

6. Upload validator image

In order to upload validator image you need to use cosmostation_token_resource repository, there's detailed description of the steps, but overall flow should look like :

1. Fork cosmostation token resource repo to your own GitHub account.

Fork the repository

2. Clone the repo.

git clone git@github.com:YOUR_ACCOUNT/cosmostation_token_resource.git
cd cosmostation_token_resource
git checkout -b YOUR_BRANCH_NAME

3. Upload you image to cosmostation_token_resource/moniker/rizon, rename the image to the format of your_valoper_address.png to get your valoper address use the below command.

# Get valoper address
rizond keys show $RIZON_WALLET --bech val -a

4. Commit and push the changes.

git add -A 
git commit -m "Add YOUR_VALIDATOR_NAME"
git push origin YOUR_BRANCH_NAME

5. Create pull request, make sure that on the left hand side is original cosmos project and on the right hand side your project with the recently created branch.

When it's merged you'll should be able to see the logo of the validator in explorer.

7. Useful commands

# Get rizond logs
$ journalctl -u rizond -f

# Check validator status 
$ rizond q staking validator $RIZON_VALOPER

# Get list of active validators
$ rizond query staking validators --limit 2000 -oj | jq -r '.validators[] | select(.status=="BOND_STATUS_BONDED") | [(.tokens|tonumber), .description.moniker] | @csv' | column -t -s"," | sort -k1 -n -r | nl

# Delegate 1 token
$ rizond tx staking delegate $RIZON_VALOPER 10000000uatolo \
--chain-id $RIZON_CHAIN --from $RIZON_WALLET --gas auto --fees 1000uatolo

# Unjail validator
$ rizond tx slashing unjail --chain-id $RIZON_CHAIN \
--from $RIZON_WALLET  --fees="1000uatolo"

# Get commission
$ rizond tx distribution withdraw-rewards $RIZON_VALOPER \
--from $RIZON_WALLET --commission

# Get rewards
$ rizond tx distribution withdraw-all-rewards --from $RIZON_WALLET

# Trasfer 1 token from your wallet to rizon1py.... address
$ rizond tx bank send $RIZON_WALLET rizon1py.... 10000000uatolo

Official community links

Discord https://discord.gg/DvZFA7mpuX

English telegram news channel https://t.me/rizon_atolo_news_en

English telegram community channel https://t.me/rizon_atolo_en

Any help is very much appreciated.

my rizon wallet
rizon1py7dgk8tdx09jevad6rfpraurctuykmawwjr0n

my rizon validator address 
rizonvaloper1py7dgk8tdx09jevad6rfpraurctuykmaa2szdr