Skip to main content

Instalación de un nodo regular en la red ISBE

Este documento describe el procedimiento estándar para desplegar un nodo regular Hyperledger Besu dentro de la red ISBE (entornos dev, pre o pro).
Los nodos regulares permiten a un caso de uso conectarse a la red, desplegar contratos y enviar transacciones.

El proceso consta de tres fases:

  1. Preparar la máquina y dependencias.
  2. Instalar y configurar el nodo Besu.
  3. Solicitar el permisionado para unir el nodo al P2P de ISBE.

1. Requisitos previos

Antes de iniciar la instalación, el participante debe disponer de:

Hardware recomendado

  • 2 vCPU
  • 4 GB RAM
  • 40 GB de disco SSD (mínimo; 80+ GB recomendado para entornos intensivos)

Sistema operativo

  • Linux 64-bit (Ubuntu 20.04+ o equivalente)

Dependencias

  • Docker ≥ 20.10
  • Docker Compose ≥ 2.x
  • Acceso root o permisos sudo

Red y puertos

Los nodos Besu requieren los siguientes puertos:

PuertoUso
30303/tcpP2P (entrada/salida)
30303/udpDiscovery (opcional según config)
8545/tcpRPC (si se expone)
8546/tcpWebSocket (si se expone)

IMPORTANTE:
Para un nodo regular que se una al P2P de ISBE, el puerto 30303/tcp debe estar accesible desde Internet.


2. Preparar la máquina

Actualizar paquetes:

sudo apt update && sudo apt upgrade -y

Instalar Docker:

curl -fsSL https://get.docker.com | sudo bash

Comprobar la instalación:

docker --version
docker compose version

Crear un usuario dedicado (opcional pero recomendado):

sudo useradd -m -s /bin/bash besu
sudo usermod -aG docker besu

3. Obtener el repositorio de despliegue

Clonar el repositorio oficial de despliegue de nodo (el que indique ISBE):

git clone https://github.com/<repositorio-de-infraestructuras-isbe>.git
cd <carpeta>

Aquí se incluye la estructura Docker Compose típica para nodos Besu:

docker-compose.yml
config/
|-- ibft/
|-- genesis.json
keys/

4. Generar claves del nodo

Cada nodo Besu necesita su propia clave de identidad. Generarla:

docker run --rm \
-v $(pwd)/keys:/keys \
hyperledger/besu:latest \
--data-path=/keys \
public-key export --to=/keys/node.pub

Esto generará:

  • La clave privada del nodo
  • La clave pública
  • El enode asociado

Obtener el enode del nodo:

docker run --rm \
-v $(pwd)/keys:/keys \
hyperledger/besu:latest \
--data-path=/keys \
rlp encode --from=/keys/node.pub

El equipo ISBE usará este enode para añadir tu nodo a la lista de nodos permitidos.

5. Configurar la red ISBE en el nodo

Editar genesis.json y asegurarse de que corresponde al entorno:

-ISBE-DEV -ISBE-PRE -ISBE-PRO

Este archivo define:

-ChainId -Parámetros de IBFT -Límites de gas -Configuración EVM

El equipo ISBE proporciona estos archivos para no cometer errores de configuración.

6. Configurar docker-compose.yml

Un ejemplo típico:

version: "3.8"

services:
besu:
image: hyperledger/besu:latest
container_name: 'Nombre_nodo'
volumes:
- ./config:/config
- ./keys:/keys
- ./data:/data
command: >
--data-path=/data
--genesis-file=/config/genesis.json
--node-private-key-file=/keys/key
--rpc-http-enabled=true
--rpc-http-host=0.0.0.0
--rpc-http-port=8545
--rpc-http-api=ETH,NET,WEB3,TXPOOL
--rpc-ws-enabled=true
--rpc-ws-host=0.0.0.0
--rpc-ws-port=8546
--p2p-port=30303
--host-whitelist="*"
--logging=INFO
ports:
- "30303:30303"
- "8545:8545"
- "8546:8546"
restart: unless-stopped

Parámetros a personalizar: -container_name: → poner 'Nombre_nodo' -Puertos → abrir solo si el caso de uso los necesita -Directorios → deben ser persistentes

7. Inicio del nodo

Arrancar el nodo:

docker compose up -d

Ver logs:

docker logs -f <Nombre_nodo>

El nodo no podrá sincronizar ni entrar en la red P2P hasta que ISBE autorice su enode.

8. Solicitar el permisionado

Enviar al equipo de ISBE (normalmente vía formulario o correo):

  • Nombre del nodo: 'Nombre_nodo'
  • Enode: enode://...
  • IP pública del servidor: 'IP_NODO'
  • Entorno destino: dev / pre / pro

Una vez aprobado, el nodo:

  1. Será incluido en la lista de nodos autorizados.
  2. Podrá conectarse a los permisionadores.
  3. Empezará a sincronizar la cadena.

9. Verificación después del permisionado

Comprobar estado del P2P:

curl http://localhost:8545 \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}'

Debe devolver un número mayor que cero cuando esté conectado a la red.

Comprobar altura de bloque:

curl http://localhost:8545 \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

El valor debe incrementarse.

10. Uso posterior del nodo

Una vez sincronizado, el nodo regular permite:

  • Desplegar contratos.
  • Leer el estado on-chain.
  • Enviar transacciones firmadas.
  • Escuchar eventos (vía WebSocket).

El nodo queda bajo la responsabilidad operativa del caso de uso:

  • Backups
  • Logs
  • Seguridad del host
  • Actualizaciones

La red ISBE únicamente controla el permisionado y la topología P2P.