Corriendo un Nodo en Fuel Network

Guía paso a paso para configurar y ejecutar un nodo local en la blockchain Fuel.

Cumulo
Cumulo.pro
6 min readJun 13, 2024

--

Indice de Contenidos

· Introducción
¿Qué es un Nodo de Fuel?
Mecanismo de Consenso
Requisitos de Hardware
· Instalación del nodo
Prepara el entorno
Instala Fuel toolchain
Obtener una clave API de Sepolia (Ethereum Testnet)
Generar una nueva P2P key
Configuración de la cadena
Iniciar el nodo
Crear un servicio con SystenD
Conecta tu nodo a la wallet de Fuel

Introducción

¿Qué es un Nodo de Fuel?

Un nodo en la blockchain Fuel, o “cliente”, es un software que descarga y mantiene una copia de la blockchain. Verifica la autenticidad de cada bloque y transacción, asegurando que su copia esté siempre actualizada y sincronizada con la red.

Mecanismo de Consenso

Fuel Network utiliza la Prueba de Autoridad (PoA) en sus testnets beta.

  • Validadores: Entidades seleccionadas por su reputación, responsables de crear bloques y validar transacciones.
  • Ventajas de PoA: Tiempos de transacción rápidos y eficiencia energética.

Requisitos de Hardware

Instalación del nodo

Prepara el entorno

  • Actualiza los paquetes.
sudo apt-get update && sudo apt-get upgrade –y
  • Instala wget y curl.
sudo apt install wget curl
  • Instala rustup.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs/ | sh
  • Configura tu shell actual, necesitas crear el archivo env correspondiente en HOME/.cargo.
. "$HOME/.cargo/env"
  • Comprueba la versión de rustup.
rustup --version

Instala Fuel toolchain

Puedes utilizar el script fuelup-init proporcionado por el equipo. Esto instalará forc, forc-client, forc-fmt, forc-lsp, forc-wallet así como fuel-core en la carpeta ~/.fuelup/bin.

curl https://install.fuel.network | sh
  • Para utilizar fuelup usa.
source /home/(user)/.bashrc
  • Chequea la versión de Fuel instalada.
fuelup --version

La red beta-5 es la última testnet de Fuel. Incluye infraestructuras públicas como beta-5 faucet Icon Link y beta-5 graphQL playgroundIcon.

Para interactuar correctamente con la red beta-5 es necesario utilizar la última toolchain que viene instalada por defecto.

  • Ejecuta el siguiente comando para verificar la instalación de la última toolchain.
fuelup show

Obtener una clave API de Sepolia (Ethereum Testnet)

El siguiente paso es obtener una clave API de cualquier proveedor RPC que soporte la red Sepolia. Los relayers ayudarán a escuchar los eventos de la red Ethereum. Algunos ejemplos de dónde obtener esta clave API son Infura o Alchemy.

  • Selecciona el plan Free.
  • Haz clic en el botón “Create new app”.
  • Prueba la API enviando la primera petición.
  • Copia el comando CLI y úsalo en tu servidor.
curl https://eth-mainnet.g.alchemy.com/v2/AvlIDj-8eJlcz2NfOK1iMbR5iK1MnAtO -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"alchemy_getAssetTransfers","params":[{"fromBlock": "0x0","category": ["external","erc20","erc721"],"fromAddress": "0x994b342dd87fc825f66e51ffa3ef71ad818b6893"}],"id":0}'

Una vez filanizado el proceso tendrás acceso a tu dapp en el dashboar y a la API generada.

ETH RPC API: Los endpoints deben tener el siguiente aspecto.

https://eth-sepolia.g.alchemy.com/v2/AvlIDj-8eJlcz2NfOK1iMbR5iK1MnAtO
{"message":"Method Not Allowed","logref":null,"path":null,"_embedded":{"errors":[{"message":"Method [GET] not allowed for URI [/v2/AvlIDj-8eJlcz2NfOK1iMbR5iK1MnAtO]. Allowed methods: [POST]","logref":null,"path":null,"_embedded":{},"_links":{}}]},"_links":{"self":{"href":"/v2/AvlIDj-8eJlcz2NfOK1iMbR5iK1MnAtO","templated":false,"profile":null,"deprecation":null,"title":null,"hreflang":null,"type":null,"name":null}}}

Generar una nueva P2P key

  • Ejecuta.
fuel-core-keygen new --key-type peering

Configuración de la cadena

Para ejecutar un nodo local con persistencia, debes tener una carpeta con los siguientes archivos de configuración de la cadena.

  • Crea la carpeta y descarga el repositorio.
git clone https://github.com/FuelLabs/chain-configuration chain-configuration
mkdir .fuel-sepolia-testnet
cp -r chain-configuration/ignition/* ~/.fuel-sepolia-testnet/

Iniciar el nodo

  • Arranca el nodo.
fuel-core run \
--service-name=<TU NODO>-sepolia-testnet-node \
--keypair <P2P key> \
--relayer ETH RPC API \
--ip=0.0.0.0 --port=4000 --peering-port=30333 \
--db-path ~/.fuel-sepolia-testnet \
--snapshot ~/.fuel-sepolia-testnet \
--utxo-validation --poa-instant false --enable-p2p \
--reserved-nodes /dns4/p2p-testnet.fuel.network/tcp/30333/p2p/16Uiu2HAmDxoChB7AheKNvCVpD4PHJwuDGn8rifMBEHmEynGHvHrf \
--sync-header-batch-size 100 \
--enable-relayer \
--relayer-v2-listening-contracts=0x01855B78C1f8868DE70e84507ec735983bf262dA \
--relayer-da-deploy-height=5827607 \
--relayer-log-page-size=500 \
--sync-block-stream-buffer-size 30

Enhorabuena tu nodo de Fuel está en marcha!!

Crear un servicio con SystenD

SystemD facilita la gestión automática y fiable del nodo de Fuel, mejorando la estabilidad y eficiencia operativa.

  • Automatización: SystemD permite iniciar automáticamente el nodo de Fuel al arrancar el sistema, asegurando que esté siempre en funcionamiento.
  • Supervisión: Monitoriza el estado del nodo y reinicia el servicio si falla, garantizando una operación continua y confiable.
  • Crea el servicio.
sudo tee /etc/systemd/system/fueld.service > /dev/null << EOF
[Unit]
Description=Fuel Node Beta-5
After=network.target

[Service]
User=$USER
Type=simple
ExecStart=$(which fuel-core run) \
--service-name cumulofuel-sepolia-testnet \
--keypair <P2P key> \
--relayer https://eth-sepolia.g.alchemy.com/v2/<ETH RPC API> \
--ip=0.0.0.0 --port=5000 --peering-port=40444 \
--db-path $HOME/.fuel-sepolia-testnet \
--snapshot $HOME/.fuel-sepolia-testnet \
--utxo-validation --poa-instant false --enable-p2p \
--reserved-nodes /dns4/p2p-testnet.fuel.network/tcp/30333/p2p/16Uiu2HAmDxoChB7AheKNvCVpD4PHJwuDGn8rifMBEHmEynGHvHrf \
--sync-header-batch-size 100 \
--enable-relayer \
--relayer-v2-listening-contracts=0x01855B78C1f8868DE70e84507ec735983bf262dA \
--relayer-da-deploy-height=5827607 \
--relayer-log-page-size=500 \
--sync-block-stream-buffer-size 30

Restart=on-failure
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
  • Recarga la configuración de SystemD, habilita el nodo de Fuel para inicio automático, arranca el servicio y muestra su estado actual.
sudo systemctl daemon-reload
sudo systemctl enable fueld
sudo systemctl start fueld
sudo systemctl status fueld.service

Finalmente para visualizar los logs ejecuta.

sudo journalctl -u fueld -f -o cat

Conecta tu nodo a la wallet de Fuel

Accede a tu cuenta de Fuel wallet y pulsa en la parte superior donde indica la red, pulsa en +Add new network y escribe la dirección de tu nodo:

http://ip_nodo:4000/v1/graphql

Pulsa en +Add

Fuentes:

--

--