[GUIDA][IT] Come partecipare a bitsong-testnet-3 (incentivata)

Come partecipare a bitsong-testnet-3 (incentivata)


Quest’articolo è rivolto a chi ha intenzione di partecipare alla terza testnet di BitSong. Questa guida sostituisce le precedenti e non è da confondere con altre versioni della blockchain.

Pre-requisiti

Prima di tutto, occorre effettuare alcuni preparativi sul tuo server (dedicato o cloud). Utilizzare un server dedicato, assicura elevate prestazioni (anche in situazioni di alto carico). La rete ultilizza il consenso di Tendermint, il quale eleggerà un leader per ogni blocco. Se il tuo validator è offline, il consenso ritarderà l’inclusione del blocco e potresti essere slashato!

Per questa guida abbiamo utilizzato le seguenti specifiche:

  • Ubuntu 18.04 OS
  • 2 vCPU
  • 4GB RAM
  • 40GB SSD
  • Sblocco connessioni in ingresso sulla porta 26656
  • Indirizzo ip statico (Elastic IP per AWS, floating IP per DigitalOcean)

Puoi trovare queste caratteristiche presso qualsiasi provider cloud (AWS, DigitalOcean, Google Cloud, Hetzner, Linode, etc.)

Installazione software necessario

  1. Per prima cosa occorre accedere via ssh all’interno del server ed installare gli aggiornamenti di sicurezza
sudo apt update && sudo apt upgrade -y
  1. Installare i pacchetti necessari al funzionamento di Golang
sudo apt install build-essential libleveldb1v5 git unzip -y
  1. Installare 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
  1. Aggiornare le variabili di sistema
cat <<EOF >> ~/.profile  
export GOPATH=$HOME/go  
export GO111MODULE=on  
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin  
EOF

source ~/.profile
  1. Verifichiamo che golang funzioni correttamente
go version

Se tutto è andato a buon fine, dovremmo avere un output di questo tipo

go version go1.13.6 linux/amd64

Installare Go-BitSong

Dopo aver installato go-lang ed i pacchetti necessari, possiamo procedere all’installazione di go-bitsong (la blockchain di bitsong)

  1. Cloniamo il repository di BitSong
git clone https://github.com/bitsongofficial/go-bitsong.git
  1. Selezioniamo il tag corretto
cd go-bitsong
git checkout v0.3.0
  1. Compiliamo i binari
make install
  1. Verifichiamo la versione di go-bitsong
bitsongd version --long

Se tutto è andato a buon fine, dovremmo avere un output tipo questo

name: go-bitsong
server_name: bitsongd
client_name: bitsongcli
version: 0.3.0
commit: 1dc65dbb84309435ab9e87c67202c071e0f0745c
build_tags: netgo,ledger
go: go version go1.13.6 linux/amd64

Configurare Go-BitSong

Procediamo alla configurazione di go-bitsong, sostituisci <your-moniker> con il nome pubblico che intendi assegnare al tuo validator, bitsong-testnet-3 è il nome della testnet che utilizzeremo

  1. Inizializziamo go-bitsong indicando il nome del tuo validator e la chain alla quale desideriamo conneterci
bitsongd init --chain-id bitsong-testnet-3 <your-moniker>

Nota: bitsongd init imposta il node-id del tuo validator. Puoi ottenere questo dato digitando il comando bitsongd tendermint show-node-id. Il valore di node-id sarà parte della transazione che creeremo per la genesi, quindi, se hai pianificato di inviare la genesis-transaction, non resettare il tuo node-id utilizzando il comando bitsong unsafe-reset-all o modificando il tuo indirizzo ip

  1. Crea un wallet per il tuo nodo

<your-wallet-name> va sostituito con il nome che intendi dare al wallet. Il nome può differire dal tuo moniker.

bitsongcli keys add <your-wallet-name>

PRIMA DI CONTINUARE, NON DIMENTICARE DI SALVARE E CUSTODIRE LA FRASE MNEMONICA!

Genesis transaction

QUESTA SEZIONE NON E’ PIU’ VALIDA, ED E’ NECESSARIA SOLO IN FASE DI GENERAZIONE GENESIS. PROSEGUIRE SU LAUNCH THE TESTNET

Se pensi di attivare il tuo validator già dal primo blocco, devi eseguire queste semplici istruzioni ed aprire una pull request. Assicurati che gli steps sono stati compiuti correttamente e che il tuo validator sia attivo prima che la rete venga avviata.
Se invece non è tua intenzione avviare il tuo nodo dal primo blocco, puoi saltare questa guida.

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

Non modificare l’importo, in questo modo avremo tutti una corretta distribuzione di btsg. Ti ricordiamo che 1btsg equivale a 1000000ubtsg ovvero 10^6

  1. Firma la gentx che sarà inclusa in genesi, volendo, puoi aggiungere il flag --ip per indicare il tuo indirizzo ip pubblico
bitsongd gentx --name <your-wallet-name> --amount 1000000000ubtsg --ip <your-public-ip>

Eseguendo il comando, verrà creata una transazione genesi e sarà salvata sul path $HOME/.bitsongd/config/gentx/gentx-<gen-tx-hash>.json. Questo dovrebbe anche essere l’unico file presente all’interno della directory gentx. Se invece all’interno trovi altri files, ti consigliamo di eliminarli e rieseguire il comando per la gentx (come descritto sopra).

  1. Forkare il repository dedicato alle reti

Assicurati di forkare il repository corretto (https://github.com/bitsongofficial/networks) sotto il tuo username.

cd $HOME && git clone https://github.com/<YOUR-USERNAME>/networks.git && cd $HOME/networks
  1. Creare il branch dedicato all’invio della tx
git checkout -b genesis-<your-moniker>
  1. Controlla che all’interno non ci siano altre tx
ls $HOME/.bitsongd/config/gentx
  1. Copiare la gentx
cp $HOME/.bitsongd/config/gentx/* $HOME/networks/bitsong-testnet-3/
  1. Se è la prima volta che usi git, devi effettuare qualche configurazione (opzionale)
    *Ricorda di modificare i dati con quelli del tuo account github+
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
  1. Aggiungere i files e committare i cambiamenti
git add bitsong-testnet-3/*
git commit -m 'feat: gentx for <your-moniker>'
  1. Pushare il branch locale sul repository remoto
git push -u origin genesis-<your-moniker>

Ottimo! Se hai eseguito tutti gli steps elencati precedentemente, ti rimane solamente di aprire una Pull Request

Creare una Pull Request

  1. Cliccare su questo link https://github.com/bitsongofficial/networks/pulls

  2. Cliccare su New Pull Requst

  3. Cliccare su compare across forks

  4. Modificare i seguenti parametri

base repository: bitsongofficial/networks
base: master

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

  1. Continua cliccando su "Create pull request"

  2. Conferma cliccando su "Create pull request"

Assicurati di ricontrollare gli step precedenti prima di aprire una PR.

Nota: tutte le gentx dovranno essere inviati entro e non oltre Giovedì 23 Gennaio ore 15:00 UTC.

Nel caso in cui non farai in tempo ad inviare la gentx, non preoccuparti, protrai lanciare il tuo validator dopo che la rete è stata avviata.

Launching the testnet :rocket:

[Attendere nuove istruzioni.]

Help bitsong’s growth, translate this document

:uk: @bitglad
:es:
:ukraine:
:romania:
:ru:
:de:
:cn:
:kr:
:netherlands:
:india:

La genesis è stata rilasciata poco fà. I parametri di configurazione sono elencati nel repository

I Validators possono scaricare il file genesi e far partire il proprio nodo. Il network sarà lanciato in data January 27, 2020 at 15:00 UTC

Gli ultimi step necessari, sono i seguenti:

Assicurati che il tuo nodo sia aggiornato

rm -rf ~/go-bitsong
git clone https://github.com/bitsongofficial/go-bitsong
cd go-bitsong
git checkout v0.3.0
make install
bitsongd version --long

dovresti avere un output simile a questo

$ bitsongd version --long
name: go-bitsong
server_name: bitsongd
client_name: bitsongcli
version: 0.3.0
commit: 1dc65dbb84309435ab9e87c67202c071e0f0745c
build_tags: netgo,ledger
go: go version go1.13.6 linux/amd64

1. Eliminare la vecchia genesi

rm -f ~/.bitsongd/config/genesis.json

2. Scaricare la nuova genesi, e copiarla nella directory corretta

wget https://raw.githubusercontent.com/bitsongofficial/networks/master/bitsong-testnet-3/genesis.json -P ~/.bitsongd/config

3. Eseguire il nodo

bitsongd start

Opzionale, se lo si vuole, puoi creare un file systemd (modificare <your_user> dove necessario)

sudo tee /etc/systemd/system/bitsongd.service > /dev/null <<EOF  
[Unit]  
Description=BitSong Network Daemon  
After=network-online.target

[Service]  
User=<your_user>  
ExecStart=/home/<your_user>/go/bin/bitsongd start  
Restart=always  
RestartSec=3  
LimitNOFILE=4096

[Install]  
WantedBy=multi-user.target  
EOF

Adesso, dobbiamo attendere il lancio del network che avverrà il January 27, 2020 at 15:00 UTC

sudo systemctl enable bitsongd  
sudo systemctl start bitsongd

Per controllare lo stato del nodo, puoi usare i seguenti comandi

bitsongcli status  
sudo journalctl -u bitsongd -f

Dopo che la rete avrà raggiunto il quorum, la testnet si avvierà automaticamente!

Se il quorum non sarà raggiunto, daremo future comunicazioni sulla chat dedicata ai validators

1 Like