Lodestar BN

IMPORTANTE: Para el uso de la red principal, el equipo de Lodestar (Chainsafe) solo recomienda la instalación a través de Docker para evitar ataques a la cadena de suministro en el administrador de paquetes npm. Más detalles aquí: https://chainsafe.github.io/lodestar/install/npm/ Por lo tanto, utilizaremos el método Docker para instalar Lodestar incluso para la versión testnet para que pueda familiarizarse con este método.

sh¡No se sienta aprensivo incluso si es la primera vez que oye hablar de Docker!

Recomendamos encarecidamente el uso de todos los clientes minoritarios, por lo que la forma en que se diseña esta configuración resultará muy familiar para el método systemd utilizado en este plan de estudios.

Instalación de dependencias - Docker

El siguiente script realiza lo siguiente:

  1. Descarga y ejecuta el script de instalación oficial de Docker

  2. Crea un nuevo grupo de usuarios llamado "docker"

  3. Agrega su cuenta de usuario actual de Linux a este nuevo grupo de Docker

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

sudo groupadd docker
sudo usermod -aG docker $USER

Cierre sesión y vuelva a iniciarla para que la configuración del nuevo grupo de usuarios surta efecto.

exit
ssh <user>@<IP_address> -p <port_no.> -i <SSH_key> -v

Cree una nueva cuenta de usuario de Lodestar

sudo useradd --no-create-home --shell /bin/false lodestar

Preparando el directorio del cliente de consenso Lodestar

  1. Cree una nueva carpeta para almacenar los datos del cliente de consenso Lodestar

  2. Cambie el propietario de esta nueva carpeta al usuario lodestar.

  3. Restringir los permisos en esta nueva carpeta de modo que solo el propietario pueda leer, escribir y ejecutar archivos en esta carpeta.

  4. Recupere el UID y el GID de la lodestarcuenta de usuario que se utilizará en el archivo docker-compose.yml del siguiente paso

sudo mkdir -p /var/lib/lodestar_beacon
sudo chown -R lodestar:lodestar /var/lib/lodestar_beacon
sudo chmod 700 /var/lib/lodestar_beacon
id lodestar

Rendimiento esperado:

uid=1004(lodestar) gid=1005(lodestar) groups=1005(lodestar)

  • Nota: sus identificaciones reales pueden ser diferentes aquí.

Descargando Lodestar

Cree una nueva carpeta para el cliente de consenso Lodestar.

cd
sudo mkdir lodestar_beacon

Cree un archivo docker-compose.yml en la carpeta Lodestar.

cd ~/lodestar_beacon
sudo nano docker-compose.yml

Pegue la siguiente configuración en el archivo docker-compose.yml. Nota: Esto es similar al archivo de configuración systemd utilizado en la configuración de otros clientes en este plan de estudios.

services:
  beacon_node:
    image: chainsafe/lodestar:latest
    container_name: lodestar_beacon
    user: <UID>:<GID>
    restart: unless-stopped
    volumes:
      - /var/lib/lodestar_beacon:/var/lib/lodestar_beacon
      - /var/lib/jwtsecret:/var/lib/jwtsecret
    command:
      - beacon
      - --dataDir
      - /var/lib/lodestar_beacon
      - --network
      - holesky
      - --checkpointSyncUrl
      - https://checkpoint-sync.holesky.ethpandaops.io
      - --jwt-secret
      - /var/lib/jwtsecret/jwt.hex
      - --execution.urls
      - http://host.docker.internal:8551
      - --builder
      - --builder.urls
      - http://host.docker.internal:18550
      - --port
      - "9001"
      - --rest
      - --rest.address
      - 0.0.0.0
      - --rest.port
      - "5051"
      - --metrics
      - --metrics.port
      - "8009"
    environment:
      NODE_OPTIONS: --max-old-space-size=8192
    ports:
      - "5051:5051"
      - "9001:9001"
      - "8009:8009"
    extra_hosts:
      - "host.docker.internal:host-gateway"

Una vez que haya terminado, guarde con Ctrl+Oy Enter, luego salga con Ctrl+X.

Ahora, analicemos lo que estamos configurando en este archivo yml.

  1. image: chainsafe/lodestar:latest: Extraiga y ejecute la última versión estable de Lodestar

  2. container_name: lodestar_beacon: Nombre dado al contenedor Docker. Modificable.

  3. restart: unless-stopped: Reinicia automáticamente este contenedor cuando se reinicia su dispositivo, a menos que el usuario lo detenga explícitamente.

  4. volumes:: Vincula las carpetas de su máquina host a las carpetas del contenedor Docker para que pueda acceder a ellas. Aquí, estamos vinculando las carpetas utilizadas por los parámetros --dataDir y --jwt-secret

  5. network_mode: host: Permite que el contenedor Docker comparta el espacio de nombres de la red con el host.

    • Ejemplo: localhost, se refiere tanto al host como a Docker y los puertos se comparten entre el host y el contenedor.

  6. command:: Los parámetros con los que se ejecuta Lodestar. Similar a los parámetros utilizados en el método de configuración systemd.

    • Cada - indica un salto de línea.

    • Las variables con un prefijo -- son parámetros y lo otro son los valores para esos parámetros.

    • El primer valor ( beacon) indica a Lodestar que ejecute solo el cliente de consenso y sin el cliente validador.

    • --dataDir: Especifica el directorio para que Lodestar almacene datos relacionados con el cliente de consenso.

    • --network: Ejecuta el servicio del cliente de consenso en la red de prueba ETH Holesky

    • --checkpointSyncUrl: Permite la sincronización casi instantánea del Cliente de consenso apuntando a una de las URL de sincronización del checkpoint aquí: https://eth-clients.github.io/checkpoint-sync-endpoints/

    • --jwt-secret: Ruta del archivo para localizar el JWT que generamos anteriormente

    • --execution.urls: URL para conectarse al cliente de la capa de ejecución

    • --builder: Habilita la conexión a constructores de bloques externos (por ejemplo, a través de relays MEV)

    • --builder.urls: URL para conectarse a constructores de bloques externos (por ejemplo, a través de relays MEV)

    • --port:Establece el puerto para la comunicación de peer-to-peer. El valor predeterminado es 9000.

    • --rest: Permite que el cliente validador se conecte a este cliente de consenso. También permite monitorear endopoints para extraer métricas de este servicio.

    • --rest.address: establece la dirección IP para conectarse a la API REST del cliente de consenso que utilizarán los clientes DVT. Utilice aquí la dirección IP interna de su dispositivo (verifique ejecutando ip a), por ejemplo 192.168.x.x. De lo contrario, el valor predeterminado es 127.0.0.1

    • --rest.port: Establece el puerto para conectarse al cliente de consenso

    • --metrics: Habilitar el monitoreo del cliente de consenso.

    • --metrics.port: Establece el puerto para extraer las métricas de monitoreo.

  7. environment: Le indica a Node.js que permita utilizar una mayor cantidad de memoria antes de iniciar los procesos de recolección de basura para liberar memoria.

  8. ports:Asigna los puertos utilizados por el contenedor Docker a los puertos del dispositivo host para que sean accesibles a través de 127.0.0.1 o localhost.

  9. extra_hosts:Asigna 127.0.0.1 o localhost del dispositivo host a host.docker.internal

Inicie el cliente de consenso Lodestar

  1. Asegúrese de estar en la misma carpeta que el archivo docker-compose.yml que creó anteriormente.

    cd ~/lodestar_beacon
  2. Inicie el contenedor Docker.

    docker compose up -d

    Resultado esperado:

  3. Asegúrese de que no haya mensajes de error monitoreando los logs durante unos minutos.

    docker logs lodestar_beacon -f
  1. Una vez que vea que las info: Syncinglíneas comienzan a aparecer, puede probar el endpoint de la API de la beaconchain directamente para asegurarse de que el contenedor Docker se esté ejecutando correctamente.

curl "http://127.0.0.1:5052/eth/v1/node/identity" | jq

Resultado esperado:

Verificar las raíces del estado inicial (Checkpoint Sync)

Recursos

Last updated