Nethermind
Generar el archivo JWT
Primero necesitamos crear un JSON Web Token (JWT) que permitirá que el software de la capa de ejecución (Nethermind) 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.
Instalar dependencias: Unzip, Snappy y la biblioteca GNU C
sudo apt-get update
sudo apt-get install unzip libsnappy-dev libc6-dev libc6 -y
Descarga Nethermind y configura el servicio
Descargue la última versión de Nethermind y ejecute el proceso de checksum para asegurarse de que el archivo descargado no haya sido manipulado.
cd
curl -LO https://github.com/NethermindEth/nethermind/releases/download/1.25.4/nethermind-1.25.4-20b10b35-linux-x64.zip
echo "05848eaab4b1b621054ff507e8592d17 nethermind-1.25.4-20b10b35-linux-x64.zip" | md5sum --check

Resultado esperado: verificar el resultado del checksum.
nethermind-1.25.4-20b10b35-linux-x64.zip: OK
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.
unzip nethermind-1.25.4-20b10b35-linux-x64.zip -d nethermind
sudo cp -a nethermind /usr/local/bin/nethermind
rm -r nethermind-1.25.4-20b10b35-linux-x64.zip nethermind
Cree una cuenta nethermind
sin acceso al servidor para que Nethermind 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 Nethermind 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 nethermind
Cree un directorio para que Nethermind almacene los datos de blockchain de la capa de ejecución. Luego configure el propietario de este directorio al usuario nethermind
para que este pueda leer y escribir en el directorio.
sudo mkdir -p /var/lib/nethermind
sudo chown -R nethermind:nethermind /var/lib/nethermind
Cree un archivo de configuración systemd para que el servicio Nethermind se ejecute en segundo plano.
sudo nano /etc/systemd/system/nethermind.service
Pegue los siguientes parámetros de configuración en el archivo:
[Unit]
Description=Nethermind Execution Client (Holesky)
After=network.target
Wants=network.target
[Service]
User=nethermind
Group=nethermind
Type=simple
Restart=always
RestartSec=5
WorkingDirectory=/var/lib/nethermind
Environment="DOTNET_BUNDLE_EXTRACT_BASE_DIR=/var/lib/nethermind"
ExecStart=/usr/local/bin/nethermind/nethermind \
--config holesky \
--datadir /var/lib/nethermind \
--JsonRpc.JwtSecretFile /var/lib/jwtsecret/jwt.hex \
--Sync.SnapSync true \
--Network.P2PPort 30304 \
--Network.DiscoveryPort 30304 \
--JsonRpc.Enabled true \
--JsonRpc.Host <Internal_IP_address> \
--JsonRpc.Port 8547 \
--HealthChecks.Enabled true \
--Metrics.Enabled true \
--Metrics.PushGatewayUrl http://localhost:9091/metrics
[Install]
WantedBy=default.target
Una vez que haya terminado, guarde con Ctrl+O
y 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 Nethermind:
--
config
: Ejecute en la red de prueba Holesky--
datadir
: El directorio para que Nethermind almacene los datos de blockchain de la capa de ejecución--JsonRpc.JwtSecretFile
: El directorio que apunta al JWT que generamos anteriormente.--Sync.SnapSync
: Utilice la función de sincronización instantánea de Nethermind. Más información aquí.--Network.P2PPort/--Network.DiscoveryPort
: Establece el puerto utilizado para la comunicación peer-to-peer. El valor predeterminado es 30303.--JsonRpc.Enabled
: Habilita el servicio JSON-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.--JsonRpc.Host
: Utilice aquí la dirección IP interna de su dispositivo (verifique ejecutandoip a
) para conectarse al servicio JSON RPC, por ejemplo192.168.x.x
. De lo contrario, el valor predeterminado es127.0.0.1
--JsonRpc.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--HealthChecks.Enabled
:Le permite probar la conexión y el estado de su servicio Nethermind usando el comando curl. Por ejemplocurl http://<Internal_IP_address>:8545/health
--Metrics.Enabled
: Habilite las métricas de monitoreo en el servicio Nethermind--Metrics.PushGatewayUrl
: Envía métricas a su suite de monitoreo
Iniciar Nethermind
Recargar el systemd para registrar los cambios realizados, inicie Nethermind y verifique su estado para asegurarse de que se esté ejecutando.
sudo systemctl daemon-reload
sudo systemctl start nethermind.service
sudo systemctl status nethermind.service
Resultado esperado: El resultado debería decir Nethermind está "active (running)". Presione CTRL-C
para salir y Nethermind continuará ejecutándose. Nethermind debería tardar alrededor de 12 horas en sincronizarse en la red de prueba de Holesky.

Utilice el siguiente comando para verificar los logs del proceso de sincronización de Nethermind. Esté atento a cualquier advertencia o error.
sudo apt install ccze -y
sudo journalctl -fu nethermind -o cat | ccze -A
Resultado esperado:

Presione CTRL-C
para salir.
Nota: También verá el siguiente error relacionado con Pushgateway. Esto es de esperarse porque no hemos instalado ni configurado el servicio Pushgateway utilizado para el monitoreo en este momento.

Si el servicio Nethermind funciona sin problemas, ahora podemos habilitar para que se inicie automáticamente al reiniciar el sistema.
sudo systemctl enable nethermind.service
Resultado esperado:
Created symlink /etc/systemd/system/default.target.wants/nethermind.service → /etc/systemd/system/nethermind.service.
Recursos:
Lanzamientos: https://github.com/NethermindEth/nethermind/releases
Documentación: https://docs.nethermind.io/
Discord: https://discord.gg/MFBrZrGM32
Last updated