Montaje de nodo validador de Tgrade

Requerimientos de hardware

Los requerimientos mínimos que se necesitan para correr Tgrade son:

  • 2 vcpu

  • 4 GB RAM

  • 60 GB de almacenamiento (SSD)

  • SO: Ubuntu 20.04 LTS

Instalación y configuración del binario tgrade

Sistema Operativo

El sistema operativo que nosotros elegimos fue ubuntu 20.04 LTS pero este puede funcionar en la mayoría de distribuciones Linux modernas o con soporte actual, y en las versiones más recientes de macOS.

Instalación de requisitos necesarios

#Actualizar paquetes
sudo apt update && sudo apt upgrade -y 

#Instalar herramientas necesarias para continuar la instalación
sudo apt-get install make build-essential gcc git jq chrony -y

Instalación de Go

Descargue e instale la última versión de Go desde su página oficial https://go.dev/doc/install en nuestro caso sería la versión 1.18.4. NOTA: Juno necesita la version de Go 1.18 o superior

#Descargar Go
wget https://go.dev/dl/go1.18.4.linux-amd64.tar.gz

#Eliminar Paquetes anteriores de Go (en caso de existir)
rm -rf /usr/local/go 

# extraer archivos en /usr/local
tar -C /usr/local -xzf go1.18.4.linux-amd64.tar.gz

Configuramos las variables en el archivo ~/.profile

export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export GO111MODULE=on
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin

Actualizamos el archivo ~/.profile y verificamos la versión de Go

source ~/.profile
#validar la versión de Go
go version

Construir el binario de Tgrade

Para conocer la versión más actual del binario revisa el repositorio oficial de Tgrade:

https://github.com/confio/tgrade

git clone https://github.com/confio/tgrade
cd tgrade
git fetch
git checkout <version-tag>

En nuestro caso la versión más actual del binario es la v1.0.1 (Como las blockchain se van actualizando constantemente por mejoras ó fallas, la versión va cambiando).

#cambia de versión
git checkout v1.0.1
#revisar versión actual
git status
#Se realiza la compilación del binario
make build
#Se valida que la versión instalada coincida con la que necesitamos
tgrade version
# salida debe mostrar en este caso v1.0.1

Iniciar y Crear un nodo de validación en MainNet

Variables de entorno

Una forma más sencilla de configurar el entorno es creando variables, esto nos ayudará a agilizar un poco ya que no tendremos que estar buscando siempre el ID de la cadena, o los peers, entre otras, si no que los dejaremos definidos en variables que sean más sencillas de recordar, estas las definiremos dentro del archivo ~/.profile.

En el archivo pondremos el ID de la cadena y el nombre como se va a reconocer este validador.

# "Decry" es solo un ejemplo de apodo, usted debe poner el de su preferencia.
CHAIN_ID=tgrade-mainnet-1
MONIKER_NAME="Decry"

Configuración de Persistent peers

Los peer son los compañeros que necesitamos para poder obtener información de ellos y mantener nuestro nodo en sincronía con los demás. Para obtenerlos podemos crear otras variables de entorno así:

#Singapure
export PEERS="24c587b6c533e391ca5e4b78334ddac4a339d371@139.59.250.37:26656"
#USA
export PEERS="5d40836ad95efe9a9671265949141f4ef896f1de@5.161.99.107:26656"
#Comprobar que la variable si quedo con los valores
echo $PEERS

Si no está seguro, puede preguntar por el discord oficial de Tgrade en el discord https://discord.gg/3MD59ZcN para obtener más peers o nodos semilla para sincronizar su nodo.

Inicializar la cadena de bloques

Para iniciar una cadena debemos ejecutar el binario compilado con el comando init y argumentos nombre del validador y el id de la cadena

tgrade init "$MONIKER_NAME" --chain-id $CHAIN_ID
#Si desea modificar el --home 
tgrade init "$MONIKER_NAME" --chain-id $CHAIN_ID --home /dir/.tgrade

Si quiere cambiar la carpeta por defecto de .tgrade para usarla en otra partición con más espacio o en otro lado del sistema puedes anexar --home seguido de la dirección deseada. Por defecto utilizará la carpeta del usuario que corre el comando.

Este comando genera 3 archivos necesarios para el funcionamiento del nodo:

  • genesis.json

  • node_key.json (Necesario para recuperar el nodo, Guardarlo muy bien y no compartirlo)

  • priv_validator_key.json (Necesario para recuperar el nodo, Guardarlo muy bien y no compartirlo)

Los dos archivos necesarios para recuperar el validador, se deben guardar muy bien y en lugares seguros igual como cuando almacenamos las semillas de nuestras wallets, ya que esta será nuestra única garantía para poder recuperar el validador en caso de pérdida, o de migración a otra máquina.

Archivo génesis

Se debe reemplazar el archivo génesis.json por el correspondiente, para esto recurrimos al archivo que tiene alojado blockcpane

wget https://raw.githubusercontent.com/confio/tgrade-networks/main/mainnet-1/config/genesis.json -O ~/.tgrade/config/genesis.json

Este comando reemplazará el archivo genesis.json tenga en cuenta que esta direccionado a la ruta por defecto de .tgrade, usted debe modificarlo para que coincida con el suyo, si es el caso que modificó su dirección.

Establecer peers

La configuración de peers, se encuentra en el archivo ~/.tgrade/config/config.toml y para añadir los peers solo debemos

sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" ~/.tgrade/config/config.toml
#Modifique la ubicación del archivo de acuerdo a la ubicación del home, aquí esta por defecto.

Establecer el costo del gas

Esto es recomendable para los validadores, ya que esto ayudará a proteger de spam y otros posibles ataques, esta configuración se encuentra por defecto en ~/.tgrade/config/app.toml

sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.05utgd\"/" ~/.tgrade/config/app.toml

Creación o Restauración de wallet

El validador necesita tener una billetera asociada para funcionar, aquí llegaran las comisiones, las recompensas de stacking que el nodo propio realice.

# Crear una nueva wallet,
# si desea cambiar la ubicación use --home dir/.tgrade
tgrade keys add <nombre de la billetera> 
#Recuperar wallet ya existente, debe tener su frase nemotecnica para poder recuperarla, solo copiela
tgrade keys add <nombre de la billetera> --recover

Importante, al crear una nueva wallet, esta mostrará una frase nemotécnica, esta debe conservarse en algún lugar seguro ya que en caso de perder la wallet será la única forma de recuperarla, es de vital importancia no perder esta frase.

Sincronizar el nodo

Para ejecutar el binario se tienen dos métodos en el ecosistema de cosmos. Simplemente empezar a correr el binario como cualquier otro ejecutable o usar cosmovisor, nosotros recomendamos usar cosmovisor, ya que es una forma de tener el proceso de inicio, sincronización y actualización mucha más automatizado, para configurarlo con cosmovisor simplemente revise el apartado Cosmovisor de esta guía, en caso de querer hacerlo manualmente puede iniciar de la siguiente forma. Este proceso de sincronización puede tardar bastante, todo depende del tamaño de la blockchain.

tgrade start --home dir/.tgrade
#Revisar estado de sincronización 
#true: aún está en proceso de sincronización
#Revisar estado de sincronización 
#true: aún está en proceso de sincronización
#false: ya está sincronizado y puede continuar
curl http://localhost:26657/status | jq .result.sync_info.catching_up
#Revisar altura de la cadena alcanzada 
curl http://localhost:26657/status | jq .result.sync_info.latest_block_height

Crear el validador en la red

Para realizar este paso, debe estar seguro de que su cadena ya esta sincronizada y tener una cantidad mínima de tokens Tgrade en la wallet creada anteriormente.

tgrade tx poe create-validator \
  --amount 0utgd \
  --vesting-amount 285000000000utgd \
  --from <validator-address> \
  --pubkey $(sudo tgrade tendermint show-validator --home dir/.tgrade) \
  --chain-id tgrade-mainnet-1 \
  --moniker "<your-validator-name>" \
  --fees 200000utgd \
  --gas auto \
  --gas-adjustment 1.4 \
  --node https://rpc.mainnet-1.tgrade.confio.run:443 \
  --home dir/.tgrade

Al finalizar con éxito este paso, debería poder ver después de unos segundos su validador dentro del scan de la red https://www.mintscan.io/tgrade/validators

Realizado por:

Mauricio Gil - maurog@decry.io

fabian - vfabian@decry.io

Last updated