Añade un nodo relay

Hasta ahora hemos creado y ejecutado la instancia de un solo nodo. Para registrar y ejecutar la stake pool es necesario, por lo menos, tener un nodo relay además del nodo productor de bloques. Tener el nodo relay y el productor de bloques en la misma máquina no es lo recomendando, es mejor que actúen desde máquina distintas. Aun así, por simplificar la guía, levantaremos ambos nodos desde la misma máquina, aunque cada nodo partirá de su propia configuración y base de datos, con lo que nos acercamos a una infraestructura mas parecida al primer caso.

Tenga en cuenta que de esta forma estarás sincronizando la blockchain dos veces, una por cada nodo. Si quieres evitar que esto ocurra, haz que el socket del nodo relay apunte al del productor de bloques (edita las rutas en relay.sh).

Vamos a crear una nueva estructura de directorios para la configuración del relay.

cd 
mkdir -p cnode-relay
cd cnode-relay
mkdir -p config db sockets logs scripts  
cd config-relay

Dentro del directorio config, nos descargamos los archivos de configuración, puedes descargarlos desde la web de iohk.

https://hydra.iohk.io/build/5102327/download/1/allegra-config.json
https://hydra.iohk.io/build/5102327/download/1/allegra-byron-genesis.json
https://hydra.iohk.io/build/5102327/download/1/allegra-topology.json
https://hydra.iohk.io/build/5102327/download/1/allegra-db-sync-config.json
https://hydra.iohk.io/build/5102327/download/1/rest-config.json

Vamos a hacer los cambios en el archivo de configuración.

  1. Cambiar la línea "TraceBlockFetchDecisions": "true" por"TraceBlockFetchDecisions": "false"

vim mainnet-config.json

Ahora es necesario agregar un nuevo objeto con la ip de tu nodo productor y el puerto en el que se lanzará, editamos el archivo mainnet-topology.json.

vim mainnet-topology.json

{
  "Producers": [
    {
      "addr": "relays-new.cardano-mainnet.iohk.io",
      "port": 3001,
      "valency": 2
    },
    {
      "addr": "<ip-bproducer>",
      "port": <port>,
      "valency": 1
    }
  ]
}

En este caso, tanto el nodo productor como el nodo relay actúan bajo la misma ip, lo único que cambiará es el puerto donde están corriendo.

Antes de lanzarlo, necesitamos abrir el puerto 3001 por el cual otros nodos se van conectar.

Si estás corriendo el nodo en local, necesitarás abrir los puertos manualmente a través de la web de configuración de tu proveedor de internet. Si no lo haces, tu nodo solo podrá leer bloques de otros peers, pero estos en cambio no podrán leer los tuyos.

sudo ufw allow proto tcp from any to any port 3001

Ahora tenemos que configurar el topology del productor de bloques para que solo se comunique con el nodo relay. Hacemos esto para no exponer en la red al nodo productor de bloques.

cd 
cd cnode/config
vim mainnet-topology.json

{
  "Producers": [
    {
      "addr": "<ip-relay-node",
      "port": <port>,
      "valency": 2
    }
  ]
}

Finalmente, desde dos sesiones de terminal diferentes lanzamos el nodo productor de bloques y el nodo relay:

  • ~/cnode/scripts/start.sh

  • ~/cnode-relay/scripts/start.sh

Última actualización

¿Te fue útil?