Reth

Generar el archivo JWT

Primero necesitamos crear un JSON Web Token (JWT) que permitirá que el software de la capa de ejecución (Reth) y el software de la capa de consenso se comuniquen entre sí.

Ejecute los siguientes comandos (una línea a la vez) para crear una carpeta en el servidor y generar el archivo JWT en ella:

sudo mkdir -p /var/lib/jwtsecret
openssl rand -hex 32 | sudo tee /var/lib/jwtsecret/jwt.hex > /dev/null

Luego apuntaremos los archivos de configuración de los clientes de ejecución y consenso a este archivo JWT.

Descarga Reth y configura el servicio.

Descargue la última versión de Reth y su archivo de firma digital (.asc) para verificar el checksum y garantizar que el archivo descargado no haya sido manipulado.

cd
curl -LO https://github.com/paradigmxyz/reth/releases/download/v0.1.0-alpha.23/reth-v0.1.0-alpha.23-x86_64-unknown-linux-gnu.tar.gz
curl -LO https://github.com/paradigmxyz/reth/releases/download/v0.1.0-alpha.23/reth-v0.1.0-alpha.23-x86_64-unknown-linux-gnu.tar.gz.asc

Ejecute el proceso de checksum.

gpg --keyserver keyserver.ubuntu.com --recv-keys A3AE097C89093A124049DF1F5391A3C4100530B4
gpg --verify reth-v0.1.0-alpha.23-x86_64-unknown-linux-gnu.tar.gz.asc reth-v0.1.0-alpha.23-x86_64-unknown-linux-gnu.tar.gz

Verifique la clave de la versión ( --recv-keys) en el primer comando aquí.

Cada archivo descargable viene con su propio checksum (ver imagen más abajo). Reemplace el checksum real y la URL de descarga en el código anterior.

Asegúrate de elegir la versión AMD64. Haga clic derecho en el texto vinculado y seleccione "copiar dirección del enlace" para obtener la URL de descarga curl.

Resultado esperado: verificar el resultado de la verificación de la suma de control

linux-gnu.tar.gz.asc reth-v0.1.0-alpha.23-x86_64-unknown-linux-gnu.tar.gz
gpg: Signature made Mon Apr 22 16:57:36 2024 UTC
gpg: using EDDSA key A3AE097C89093A124049DF1F5391A3C4100530B4
gpg: Good signature from "Georgios Konstantopoulos (This is the key used by gakonst to sign Reth releases) <[email protected]>" [expired]
gpg: Note: This key has expired!
Primary key fingerprint: A3AE 097C 8909 3A12 4049 DF1F 5391 A3C4 1005 30B4

Parece que la clave de versión A3AE097C89093A124049DF1F5391A3C4100530B4utilizada por los desarrolladores ha caducado, por lo que debería utilizarse una nueva clave para futuras versiones.

Si se verifica el checksum, extraiga los archivos y muévalos al directorio (/usr/local/bin) para mayor claridad y mejores prácticas. Luego, limpie las copias duplicadas.

tar xvf reth-v0.1.0-alpha.23-x86_64-unknown-linux-gnu.tar.gz
sudo cp reth /usr/local/bin
rm -r reth reth-v0.1.0-alpha.23-x86_64-unknown-linux-gnu.tar.gz.asc reth-v0.1.0-alpha.23-x86_64-unknown-linux-gnu.tar.gz

Cree una cuenta ( reth) sin acceso al servidor para que Reth se ejecute como un servicio en segundo plano. Este tipo de cuenta de usuario no tendrá acceso de root, por lo que restringe a los atacantes potenciales únicamente al servicio Reth en el improbable caso de que logren infiltrarse a través de una actualización de cliente comprometida.

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

Cree un directorio para que Reth almacene los datos de blockchain de la capa de ejecución. Luego configure el propietario de este directorio rethpara que este usuario pueda leer y escribir en el directorio.

sudo mkdir -p /var/lib/reth
sudo chown -R reth:reth /var/lib/reth

Cree un archivo de configuración systemd para que el servicio Reth se ejecute en segundo plano.

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

Pegue los siguientes parámetros de configuración en el archivo:

[Unit]
Description=Reth Execution Client (Holesky)
After=network.target
Wants=network.target

[Service]
User=reth
Group=reth
Type=simple
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/reth node \
  --chain holesky \
  --datadir=/var/lib/reth \
  --log.file.directory=/var/lib/reth/logs \
  --authrpc.jwtsecret=/var/lib/jwtsecret/jwt.hex \
  --full \
  --port 30304 \
  --http \
  --http.api eth,web3,net,txpool,debug,trace \
  --http.addr <Internal_IP_address> \
  --http.port 8547 \
  --ws \
  --ws.addr <Internal_IP_address> \
  --ws.port 8548 \
  --metrics 127.0.0.1:6060
  
[Install]
WantedBy=default.target

Una vez que haya terminado, guarde con Ctrl+Oy Enter, luego salga con Ctrl+X. Comprenda y revise el resumen de configuración que aparece a continuación y modifíquelo si es necesario.

Resumen de configuración de Reth:

  1. --chain: Ejecute en la red de prueba Holesky

  2. --datadir: El directorio para que Reth almacene los datos de blockchain de la capa de ejecución

  3. --log.file.directory: La ruta para colocar los logs.

  4. --authrpc.jwtsecret: El directorio que apunta al JWT que generamos anteriormente.

  5. --full:Ejecute el nodo completo.

  6. --port: establece el puerto utilizado para la comunicación peer-to-peer. El valor predeterminado es 30303.

  7. --http: Habilita el servicio HTTP-RPC en HTTP y WebSocket. Esto es para que los clientes de DVT, como el servicio Diva, puedan conectarse a su cliente de ejecución.

  8. --http.api: Módulos RPC que se configurarán para el servidor HTTP.

  9. --http.addr: Utilice aquí la dirección IP interna de su dispositivo (verifique ejecutando ip a) para conectarse al servicio JSON RPC, por ejemplo 192.168.x.x. De lo contrario, el valor predeterminado es 127.0.0.1

  10. --http.port: Establece el puerto para conectarse al servicio JSON RPC que utilizarán los clientes DVT. Puede elegir cualquier número de puerto no utilizado, pero recuerde permitir conexiones entrantes al puerto elegido en las reglas de su firewall (ufw). El valor predeterminado es 8545

  11. --ws: ws=Websocket. Habilite el servidor WS-RPC. Esto es para que los clientes de DVT puedan conectarse a su cliente de ejecución.

  12. --ws.addr: Dirección del servidor WebSocket para escuchar. Utilizado por clientes de DVT.

  13. --ws.port: Puerto del servidor WebSocket para escuchar. Utilizado por clientes de DVT.

  14. --metrics: habilite las métricas de monitoreo en el servicio Reth.

Iniciar Reth

Recargar el systemd para registrar los cambios realizados, inicie Reth y verifique su estado para asegurarse de que se esté ejecutando.

sudo systemctl daemon-reload
sudo systemctl start reth.service
sudo systemctl status reth.service

Resultado esperado: el resultado debería decir que Reth está "active (running)". Presione CTRL-C para salir y Reth continuará ejecutándose. Reth debería tardar alrededor de 6 horas en sincronizarse en la red de prueba de Holesky.

Utilice el siguiente comando para verificar los logs del proceso de sincronización de Reth. Esté atento a cualquier advertencia o error.

sudo apt install ccze -y
sudo journalctl -fu reth -o cat | ccze -A

Resultado esperado:

Presione CTRL-Cpara salir.

Para obtener más detalles sobre la interpretación de los logs de Reth, diríjase aquí.

Si el servicio Reth funciona sin problemas, ahora podemos permitir que se inicie automáticamente al reiniciar el sistema.

sudo systemctl enable reth.service

Rendimiento esperado:

Created symlink /etc/systemd/system/default.target.wants/reth.service → /etc/systemd/system/reth.service.

Recursos:

  1. Documentación: https://reth.rs/

Last updated