Introducción para crear y administrar nodos Proof of Stake [P.1]

in #blog2 years ago (edited)
¡Esta es una guía para todos los interesados en crypto! Ya sea si eres creativo, ingeniero, contador, financiero, trader, o geek, este post te interesa porque es un nuevo tipo de ahorro de dinero y de organización descentralizada.

40Ah3G7wdsc(1).jpg

Hardware para prueba de rendimiento PoS.

(Imágenes de autoría propia)


La prueba de participación (PoS) se refiere a un proceso mediante el cual una network de servidores de sellos de tiempo distribuido blockchain llega a un consenso mediante incentivos.

Se utiliza una selección aleatoria en la que los productores de cada tic blockchain (bloque) se determinan a partir de la duración de la participación de los activos (el "stake").
A diferencia de la prueba de trabajo utilizado en Bitcoin y Ethereum classic, la prueba de participación no requiere un trabajo criptográfico computacional intensivo, la recompensa de bloque se transporta a una criptoeconomía de interés en criptodivisa y delegaciones. Habilitando una mayor escalabilidad y mitigando riesgos de ataque computacional como el 51% attack.

Cada blockchain tiene su propia infraestructura de software y procesos criptoeconómicos que hacen de éste un tema basto, así que a continuación, indagaremos sobre el proceso de creación y administración de nodos desde una perspectiva general. Estaré tomando de ejemplo a Avax Avalanche porque es un blockchain que hace escalar Ethereum, su calidad de protocolo de consenso y de software están generando un nuevo estándar blockchain PoS, entre otras ventajas.

Hardware


3rs3wds (1).jpg



Primero, hay que elegir el hardware adecuado para nuestro nodo, elegiremos un hardware de gama media ya que es accesible para cualquiera que desee probar con seguridad un nodo estable y competitivo.

ComponenteDescripciónCantidad
Placa MadreASUS ROG STRIX MAXIMUS HERO socket LGA12001
ProcesadorIntel core i5-8600k Coffe Lake + disipador aluminio con ventilador para socket LGA1200.1
Fuente de poderPower supply unit Cylon Aerocool 750w certificación (80+) PLUS + cable de alimentación.1
Disco de almacenamientoNVMe 1TB PCI Express 3.01
Memoria RAMRam XPG DDR4, 3200MHz, 8GB2
Cable conexión LANcable ethernet utp rj451

Recomiendo el dispositivo de almacenamiento más veloz que podamos adquirir ya que en un validador hay escritura al disco constantemente.

Sistema operativo y Red


Elegí el sistema operativo Ubuntu server por su estabilidad, robustez y por ser un sistema ampliamente usado. El equipo de desarrollo está continuamente trabajando con Debian para vulnerabilidades de ciberseguridad actuales, es flexible para escalarlo a las necesidades del usuario, es fácil de manejar y hay mucho soporte para Ubuntu sobre software opensource. Puedes descargarlo aquí.
Anteriormente había usado Ubuntu desktop LTS pero a pesar de tener un dispositivo de almacenamiento veloz y buena memoria RAM, se congelaba mientras estaba usando la interfaz gráfica Postman, un cliente HTTP para testear requests al nodo.
Eventualmente, todas las llamadas al nodo pueden hacerse desde otra máquina con el entorno y configuración de red correcta, así que Ubuntu server resultó ser la opción más natural.



image.png

Instalación de paquetes populares para Ubuntu server



Los preparativos para el nodo dependen del usuario, aunque es aconsejable iniciar con un usuario con privilegios de administración de la máquina y acceso al Shell que ejecuta el nodo. Lo ideal es crear un usuario con permisos para la creación del nodo sin comprometer todo el entorno, pero es opcional.
El típico nodo RPC basado en la máquina virtual de Ethereum utiliza unos ~~41mbps de ancho de banda cuando se sincroniza a la altura de bloque actual, te recomiendo un Internet de ~200Mbps de fibra óptica simétrico con un módem grande para que tengas espacio para otros nodos y algo de gaming.

La conexión a Internet puede ser con ip fija o dinámica, sin embargo, el ancho de banda con ip fija es más caro. No se requiere instalar un firewall, Avalanche necesita aceptar conexiones desde Internet en puertos predeterminados, al igual que otras cadenas de bloque, es mejor administrar a detalle las conexiones, los puertos, y establecer el acceso remoto con técnicas como port forwarding.


456ygfv.jpg

Cripto Economía


Con estos preparativos listos, es importante ahora conocer el cripto-sistema financiero en el que vamos a participar. Normalmente, las acciones y operaciones fundamentales son el stake, las diferentes epochs y las llaves privadas que se deben administrar de tal forma que se pueda asegurar y restablecer el nodo.

Para la red Avalanche y otros sistemas PoS similares tenemos que conocer los siguientes puntos:

La cantidad mínima para hacer stake como validador global.
La cantidad mínima que se puede delegar de stake a otro nodo.
El tiempo mínimo que se puede hacer stake.
El tiempo máximo que se puede hacer stake.
El tiempo mínimo que se puede stakear con delegación.
El plazo máximo que se puede stakear con delegación.
La comisión mínima de delegación.
El máximo capital que un validador puede tener en delegaciones.
La cantidad de validadores en existencia.
Penalizaciones por fallo de respuesta del nodo.

Clave maestra de la cuenta


Debe existir una clave maestra (o semilla), que pueda ser utilizada para generar toda la información de gestión de la cuenta, la que tendrá el capital para stake.

Seguridad de la información


Ninguna información sobre las llaves de la wallet, el nodo o alguna cuenta beneficiaria debe guardarse sin respaldo y en la nube digital.
La información sensible se puede escribir en una libreta y respaldarse en una usb, y en dado caso de que los datos sean guardados digitalmente en a nube, la cuenta de acceso se recomienda que tenga 2FA. Hay que tener cuidado de respaldar nuestras llaves digitales de forma segura, pero también hay que tener cuidado de no dificultarnos el acceso escondiéndonos a nosotros la propiedad de los activos de la cuenta.

Construir el validador


Hecho los pasos anteriores, es momento de hacer funcionar el entorno y la red en el que se ejecutará tu nodo. El validador normalmente se construye de dos formas diferentes:
  • Descargando los binarios preconstruidos
    La descarga del binario pre-construido se recomienda si sólo quieres ejecutar tu propio nodo y hacer stake en él.
    Se requiere descargar el repositorio con la versión más reciente con:
wget https://github.com/ava-labs/avalanchego/releases/download/v1.7.3/avalanchego-linux-amd64-v1.7.3.tar.gz</i> 
tar -xvf avalanchego-linux-amd64-<VERSION>.tar.gz

Al descomprimir el archivo, posiciónate en el el repositorio y ejecuta los binarios apuntando correctamente el tipo de ip.
./avalanchego --http-host [ip-tipo]


  • Descargando el código fuente
    Construir el nodo desde el código fuente se recomienda si eres un geek, y quieres probar cómo es el construir sobre Avax.
    Primero se necesita instalar Go 1.16.8 o posterior de forma general en el sistema. Luego, descarga el repositorio de AvalancheGo:
go get -v -d github.com/ava-labs/avalanchego/...

#Posiciónate en directorio de avalanchego:

git clone [email protected]:ava-labs/avalanchego.git

#Cambia al directorio de avalanchego:

cd avalanchego

#Construir binarios:

./scripts/build.sh

El binario, llamado avalanchego, está en avalanchego/build. Puede que necesites otorgar permisos de ejecución al programa.

Obtención los bloques / sincronización


Es importante que inicies el nodo con los parámetros correctos de tipo de ip para que el nodo esté bien conectado con otros, es decir, el nodo tiene que ser capaz de crear conexiones de salida a otros nodos, así como aceptar conexiones de entrada.
Una vez que ejecutas el binario correctamente, el output debe ser el estado de sincronización, una medida de recepción de bloques como en la siguiente imagen.
El tiempo de sincronización con la altura actual del bloque varía en cada blockchain debido a que tienen diferentes tamaños de almacenamiento digital.

qedc.jpg

La sincronización tarda aproximadamente ~4 días en Avax.


Creación de servicio


En esta ocasión solamente recomiendo crear un servicio controlados por systemd, en Linux nos ayudará a configurar servicios que pueden ser gestionados para actualizar el software del validador teniendo poco tiempo de inactividad y asegurar un poco más que seguridad que la ejecución del nodo se mantenga activa.

Crea un archivo llamado tuservicio.service e incluya lo siguiente posicionándose:

cd /etc/systemd/system

sudo nano /etc/systemd/system/ejecPoS.service

#sustituye el nombre del servicio por el nombre del servicio de la cadena que estés adminsitrando

[Unit]
Description=Node service
After=network.target
[Service]
User=blockgeek
Group=blockgeek
WorkingDirectory=/home/blockgeek/<ejecPoS>ExcecStart/=/home/blockgeek/repo/<ejecPoS>
Restart=always
PrivateTmp=true
TimeoutStartSec=60s
TimeoutStopSec=10s
StartLimitInterval=120s
StartLimitBurst=5

[Install]
WantedBy=multi-user.target

sudo chmod 664 /etc/systemd/system/ejecPoS.service

sudo systemctl start ejecPoS

sudo systemctl enable ejecPoS
sudo systemctl status ejecPoS

Procesamiento correcto de bloques y estado del validador


Una vez que estés construyendo el mismo número de bloque que aparece en los exploradores de la cadena que estés trabajando, estarás sincronizado exitosamente y el validador estará listo para vincular el capital de participación al nodo.

post0x0.png

En este punto, recomiendo verificar que está funcionando con el comando ss el cual se utiliza para mostrar información TCP, puertos y de estado de conexión a través de los puertos.

Finalmente, usando htop, vamos a verificar que se estén procesando los bloques de transacciones. En la siguiente imagen podemos observar el porcentaje que ocupa de CPU utilizado por procesos de baja prioridad, el CPU utilizado por procesos del usuario, el porcentaje de CPU utilizado por los procesos del sistema y la cantidad de memoria RAM usada. Estos porcentajes pueden aumentar dependiendo de la demanda de la cadena de bloques. En la siguiente imagen estamos observando un procesamiento normal del nodo:


pst0x2.png

Comportamiento normal de un nodo visto con htop.

¿Te animas?

En la siguiente parte vamos a explorar la vinculación de tokens, configurar la infraestructura para supervisar la instancia del blockchain, ajustes de rendimiento para el sistema operativo, verificar links de validación en mainnet, llamadas al nodo, entre otros aspectos.


¡Descentraliza el planeta!


proof_of_stake_in_space (1).png

Referencias