Beginner's guide to installing and operating a Vite SBP.

plasmo
Beginner's guide to installing and operating a Vite SBP.

So you're interested in becoming or learning how to operate a Vite Snapshot Block Producer (earn heaps of Vite tokens daily from mining/vote rewards) but don't know how to do it? It seems very complicated and technical but in this article, we will help guide you from start to finish. We'll teach you stuff like how to use SSH, perform basic Linux commands, register a SBP node, earning strategy, wallet setup etc.

To start off, Gvite is the official Go (a programming language) implementation of the Vite protocol. This will be basically be the program you will be running on your server 24/7 in-order to launch a SBP.

A SBP node can be further be categorised as:

  • Top-25 SBP (the probability for a top-25 SBP to produce a block is 23/25).
  • SBP candidate (the probability for a SBP placed in the 26th - 100th range to produce a block is 2/75).

That means that someone being in the top-25 (rank position depends on number of votes), will be earning much more than say... someone being in rank 26. However, there are also vote rewards, so not all rewards come from just mining blocks. This alone makes it worth being a SBP, whether it be a top-25 or SBP candidate.

To run a SBP node, you will need to make sure you have the proper server requirements that can run Gvite.

The following are minimum recommended specs:

4 Core Processor, 8GB Memory, 100GB Hard Drive, 50Mbps connection.

The higher the specs, the better as lower latency, higher processing speed, faster read/write will mean less missed blocks and that results in more Vite earnings. Just make sure you choose something that suits your budget and is appropriate for your SBP rank position.

For example, it would be a financially poor decision to get the latest/fastest CPU, 64GB RAM, and 500Mbps if your SBP is ranked 40 (and you have no plans to become top-25), and you're only generating about $8USD of Vite tokens daily, but paying server costs of up to $250 a month.

Also you will need sufficient Vite tokens in-order to register your node.

Registration cost will be 500,000 Vite tokens during testnet phase and will be increased to 1,000,000 Vite tokens once mainnet has launched. You will also require some additional tokens (anywhere from 500-1000 Vite tokens) for staking, in-order to obtain quota (which is required if you want to register a SBP node).

Registering a SBP node can be a big financial hit but is really worth it once you calculate how much Vite tokens you can potentially earn daily.

We highly recommend using a online server service (instead of your own server from home) and choosing Linux (Gvite is more developed on Linux than on Windows) as the operating system.

Reasons for using an online server service instead of at home:

  • Electricity and cooling costs
  • Bandwidth and lower latency
  • Hardware/replacement costs
  • Redundancy
  • Service level agreement

For this guide, we will be using Amazon Lightsail (as it's easy to setup and is a cheap virtual private server solution that even comes with a free trial) and choosing Ubuntu (one of the best and easiest Linux distribution out there to use).

We begin by signing up to Amazon Lightsail then "create an instance" (create a server), picking server location, select platform/operating system and choosing a plan (select the specs you require). In this guide, we will be using the lowest spec plan but note that this will not be powerful enough for a SBP node (you will require something beefier like the $40 plan at the minimum).

Once you've created the instance, click on networking, create a static IP (server address) and attach it to your instance (so you know where to connect to your server). After this is done, go back to networking, look at the firewall section and add in TCP 8483-8484. This is to allow internet connection on these ports, which is the default ports that Gvite uses.

So how do we connect to the server? Amazon Lightsail already provides an inbuilt browser terminal (program to connect to your server) but we won't be using this. Reason? We're going to be teaching you how to use PuTTY (terminal program) instead as almost all server services out there will not provide an inbuilt browser terminal. So it is a much better idea to learn how to use PuTTY so you'll be able to use any server service available out there.

Download PuTTY at www.putty.org if you haven't already. To be able to connect to the server, first you must download the SSH key pairs (you can find this in your Amazon Lightsail profile), save it to your computer (it will be a .pem file). To use this SSH key pair with PuTTY, you will need to convert it to PuTTY key format (.ppk).

To accomplish this, open up PuTTYgen, load the .pem file you saved from Amazon Lightsail, click save private key (no password needed) and name it guideserver-priv.ppk (or whatever name you want 😎) and click OK. Now you can close the PuTTYgen app and next, you will need to open up PuTTY.


Before you connect, you must add the SSH key to your session by going to Connection > SSH > Auth > Private key file > Browse and select guideserver-priv.ppk.

Next add in the server IP address by going to Session > Hostname. Enter in your instance static IP address and click Open. A terminal session will open up and will show a security warning about keys, click Yes, then enter your instance username to authenticate.

Once connected, you will be in your "home" directory.

Enter in the following command to download the Gvite program.

curl -L -O https://github.com/vitelabs/go-vite/releases/download/v1.1.1/gvite-v1.1.1-linux.tar.gz

We will then unpack/unzip it.

tar -xzvf gvite-v1.1.1-linux.tar.gz

After we have unpacked it, we will enter the directory. We can do this by typing CD (change directory) and the folder name (press tab to auto complete folder name).

cd gvite-v1.1.1-linux

Right now we are in the gvite-v1.1.1-linux folder. To see what is in this folder, simply type

dir

And the following files should show

bootstrap  gvite  node_config.json

Now we launch Gvite so we can then create a mining wallet for it.

./bootstrap

This will launch Gvite and make it run in the background, and output log to gvite.log. To see if it launched successfully, we type

cat gvite.log

And if you see the following below, it means that it has launched successfully.

Prepare the Node success!!!
Start the Node success!!!

We need to launch the Gvite JavaScript console to create a wallet for this SBP node. To do this, we type

./gvite attach ~/.gvite/testdata/gvite.ipc

and you should get

INFO[12-01|01:54:41] monitor-log=/home/ubuntu/go-vite/backend-log/backend.log.28491
this vite node`s git GO version is b2abbcfd095708c3c3c456967a2795eba879b0df
Welcome to the Gvite JavaScript console!
->

This is the Gvite JavaScript console and will accept a bunch of Vite commands. You shouldn't be getting any errors at all. Any errors will generally mean you have made a mistake in your config error.

To see all available commands, you can simply type in

vite.help

but what we will do is create a wallet by entering the following command and choosing a password

vite.wallet_newMnemonicAndEntropyStore("ursbpwalletpass")

The console will output the wallet mnemonic and Vite address.

Important: You will need to write this down and back it up. Don't forget the password as well.

Once you've written down the mnenomic and address, type

exit

to exit the JavaScript console.

Now you will need to edit the config file. To so do you will need to use a text editor such as "nano" (name of the text application).

nano node_config.json

Edit your node name. Must be within 40 characters, English letters (can use both upper and lower cases), numbers, '_', and '.'

"Identity": "Snap_Secure_Guide",

We go on to enable mining and enter in wallet details (the SBP wallet you just created). If your newly created SBP wallet was: Vite_1234567890 and your password was ursbpwalletpass, then you would enter

"Miner": true,
"CoinBase": "0:Vite_1234567890",
"EntropyStorePath": "Vite_1234567890",
"EntropyStorePassword": "ursbpwalletpass",

Once you're done with that, this means it's time to save the file. Press CTRL + O and hit ENTER to save.

For the settings to kick in, we need to restart Gvite. To do this, we will find the process, terminate it and then relaunch it. Start by typing

ps -ef|grep gvite

which will find out what is the process number of Gvite.

ubuntu   29005     1 99 08:22 pts/0    00:00:01 ./gvite -pprof

Terminate the application

kill -9 29005

and now we will relaunch it.

./bootstrap

Check to see if it has relaunched properly (you should see ./gvite -pprof in the list)

ps -ef

And that should do it. We will connect back to the Gvite JavaScript console

./gvite attach ~/.gvite/testdata/gvite.ipc

and type in

vite.ledger_getSnapshotChainHeight();

It will display the current chain height the server has synced to

"{\"id\":0,\"jsonrpc\":\"2.0\",\"result\":\"212755\"}"

which means server is not yet ready. To check the current block height, you will need to head over to testnet.vite.net to check what the current block height is at.

So for now, we keep typing in

vite.ledger_getSnapshotChainHeight();

every 10 or so minutes. The SBP node will be ready once the result number has reached to the current block height. Exit the JavaScript console when it is ready.

exit

and we can now close PuTTY as we are done setting the SBP node up. Everything should still be running on the server (even if we were to exit PuTTY).

So we're ready to register the SBP node now. Head over to Vite's Web Wallet and click on the SBP registration page.

Enter in your node name and your block creation address (your SBP wallet address).

Do take note:

  • Staking address and Block Creation Address should not be the same address
  • You will require quota in-order to submit the registration. To obtain quota, you will need to stake some tokens in your wallet. We suggest staking perhaps 500 Vite tokens and wait for the quota to build up (quota builds up every 1sec). You will require 62200 quota. More info on that can be found here.

Double check the details, and if it is all correct, hit Submit.

The registration will be sent to the network, and once successfully accepted, your 500,000 Vite tokens  will then be locked up in a smart contract for a duration of approximately 3 months. When the 3 months are up, you will be able to withdraw back 100% of your 500,000 Vite tokens.

Go to the Vite Block Explorer, enter in your SBP wallet address into the search bar, click search, and you will see a SBP logo on your address page (usually takes about 10 minutes).

Once you see recent blocks being mined in the Snapshot Block List, this means it's working. Your job ow as a SBP is to basically monitor the server/node and make sure it's online and mining blocks properly.

So that's about all there is to it. By following this guide, you will be able to successfully install Gvite on Linux, register and become a SBP.

For additional information, you may visit the official vite.wiki.

Protip: SBP reward payout occurs daily at 12:13:13PM (GMT+8) so it would be wise to login daily into your staking wallet around that time. The reason for this? Vite does not do offline transactions, and you will need to be online (open your wallet) in-order to receive your daily SBP rewards. So getting your rewards as soon as it comes will allow you to maximise your returns.

More Vite tokens = more votes = more rewards.

Any questions, feel free to ask away. Make sure you head over to the Official Vite Discord (all the developers hang out there) to discuss anything about this guide or any other Vite related topics.