How to participate in bitsong-testnet-4 (incentivized)

BitSongOfficial
6 min readOct 6, 2020

Ladies and gentlemen,

The wait is over!!

The guide to joining bitsong-testnet-4 is out now!
The penultimate step before the Mainnet 1.0 is about to be completed.

We remind you that the goal of this testnet-4 is testing the sdk 0.39.1 the official release that we will use for Mainnet 1.0.

Prepare your node and start validating from the first block, ensuring a minimum reward of 5000btsg (max 64 validators).

Send your gentx no later than Tuesday October 13th at 15:00 UTC.

How to participate in bitsong-testnet-4 (incentivized)

This article is aimed at those validators who intend to participate in the third BitSong testnet. This guide replaces the previous ones and is not to be confused with other versions of the blockchain.

Awards & Conditions

This is a contest dedicated to validators who will take part in BitSong Testnet 4 and who will continue their participation also in Mainnet.

  • Total Max Prize: 320,000btsg
  • Max Partecipants: 64 validators

Conditions & further rewards:

  • To be able to get the 5,000btsg prize, the validator must sign at least 90% of the blocks and be online no later than the first 100 blocks.

Disclaimer

Registration to the form does not imply automatic approval by BitSong Group Ltd. The contest program is in testing phase, it may change at any time and it may be necessary to perform a KYC/AML procedure. All approval requirements will be announced before the endline. The participants in this phase are aware that they may not receive the rewards if the KYC/AML procedures are not approved.

Pre-requisites

First of all, some preparations need to be made on your server (dedicated or cloud). Using a dedicated server ensures high performance (even in high load situations). The network uses the Tendermint consensus, which will elect a leader for each block. If your validator is offline, consensus will delay the inclusion of the block and you may be slashed!

For this guide we used the following specifications:

  • Ubuntu 18.04 OS
  • 2 vCPUs
  • 4GB RAM
  • 40GB SSD
  • Release of incoming connections on port 26656
  • Static ip address (Elastic IP for AWS, floating IP for DigitalOcean)

You can find these features at any cloud provider (AWS, DigitalOcean, Google Cloud, Hetzner, Linode, etc.)

Installing the necessary software

First you need to log into the server via ssh and install the security updates

sudo apt update && sudo apt upgrade -y
  1. Install the packages necessary for Golang to work
sudo apt install build-essential libleveldb1v5 git unzip -y

2. Install Golang (1.13.x)

wget https://dl.google.com/go/go1.13.6.linux-amd64.tar.gz
sudo tar -xvzf go1.13.6.linux-amd64.tar.gz
sudo mv go /usr/local

3. Update system variables

cat <<EOF >> ~/.profile  
export GOPATH=$HOME/go
export GO111MODULE=on
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin
EOF
source ~/.profile

4. We verify that golang is properly working

go version

5. If everything went well, we should get this type of output

go version go1.13.6 linux/amd64

Install Go-BitSong

After installing go-lang and the necessary packages, we can proceed to installgo-bitsong (the bitsong blockchain)

  1. Clone the BitSong repository
git clone https://github.com/bitsongofficial/go-bitsong.git

2. Select the correct tag

cd go-bitsong
git checkout v0.6.0-beta1

3. Fill the binaries

make install

4. Check go-bitsong version

bitsongd version --long

5. If everything went well, we should get this type of output

name: go-bitsong
server_name: bitsongd
client_name: bitsongcli
version: 0.6.0-beta1
commit: ed1332e344a28984e5bce8e4b87ea6597aa6384c
build_tags: netgo,ledger
go: go version go1.13.6 linux/amd64

Configure Go-BitSong

Let’s proceed with the configuration of go-bitsong, replace <your-moniker> with the public name you want to assign to your validator, bitsong-testnet-4 is the name of the testnet we will use

  1. Initialize go-bitsong indicating the name of your validator and the chain we wish to connect to
bitsongd init --chain-id bitsong-testnet-4 <your-moniker>

Note: bitsongd init sets the node-id of your validator. You can get this by typing the command bitsongd tendermint show-node-id. The value of node-id will be part of the transaction we will create for the genesis, so if you plan to send the genesis-transaction, don’t reset your node-id using the bitsong unsafe-reset-all or by changing your ip address

2. Create a wallet for your node

<your-wallet-name> should be replaced with the name you want to give to the wallet. The name may differ from your moniker.

bitsongcli keys add <your-wallet-name>

BEFORE CONTINUING, DON’T FORGET TO SAVE AND KEEP SAFE THE MNEMONIC PHRASE!

Genesis transaction

If you plan to activate your validator from the first block, you need to execute these simple instructions and open a pull request. Make sure that the steps have been properly completed and your validator is active before the network is launched.
If you don’t intend to start your node from the first block, you can skip this guide.

  1. Create a genesis account with 1000000000ubtsg (1000btsg)
bitsongd add-genesis-account $(bitsongcli keys show <your-wallet-name> -a) 1000000000ubtsg

Do not change the amount, in this way we will all have a correct distribution of btsg. We remind you that 1btsg is equivalent to 1000000ubtsg or 10 ^ 6

2. Sign the gentx that will be included in genesis, if you want, you can add the --ip flag to indicate your public ip address

bitsongd gentx --name <your-wallet-name> --amount 1000000000ubtsg --ip <your-public-ip>

By running the command, a genesis transaction will be created and saved on the path $HOME/.bitsongd/config/gentx/gentx-<gen-tx-hash>.json. This should also be the only file inside the gentx directory. If you find other files inside, we suggest you delete them and reissue the command for the gentx (as described above).

3. Fork the repository dedicated to networks

Make sure you haven’t fork the repository previously, otherwise we recommend deleting it before continuing.

Make sure you fork the correct repository (https://github.com/bitsongofficial/networks) under your username.

cd $HOME && git clone https://github.com/<YOUR-USERNAME>/networks.git && cd $HOME/networks

4. Create the branch dedicated to sending the tx

git checkout -b genesis-<your-moniker>

5. Check that there are no other TXs inside

ls $HOME/.bitsongd/config/gentx

6. Copy the gentx

cp $HOME/.bitsongd/config/gentx/* $HOME/networks/bitsong-testnet-4/

7. If this is your first time using git, you need to do some configuration (optional)
Remember to change the data with those of your github account+

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

8. Add files and commit changes

git add bitsong-testnet-4/*
git commit -m 'feat: gentx for <your-moniker>'

9. Push the local branch to the remote repository

git push -u origin genesis-<your-moniker>

Great! If you have performed all the steps listed above, all you have to do now is opening a Pull Request

Create a Pull Request

  1. Click on this link https://github.com/bitsongofficial/networks/pulls
  2. Click on New Pull Requst

3. Click on compare across forks

4. Change the following parameters

base repository: bitsongofficial/networks
base: master
head repository: <YOUR-USERNAME>/networks
compare: genesis-<your-moniker

5. Continue by clicking on “Create pull request”

6. Confirm by clicking on “Create pull request”

Make sure you double check the previous steps before opening a PR.

Note: all gentx must be sent no later than Tuesday October 13th at 15:00 UTC.

In case you don’t have time to send the gentx, don’t worry, you can run your validator after the network has been launched.

Launching the testnet 🚀

[Wait for further instructions.]

Fill out the form

In order to coordinate and/or send notifications to the validators, we invite you to fill in the form available here

Website | Discord | Telegram | Github

--

--