Geth
Generar el archivo JWT
Primero necesitamos crear un JSON Web Token (JWT) que permitirá que el software de la capa de ejecución (Geth) 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
Más adelante apuntaremos los archivos de configuración de los clientes de ejecución y consenso a este archivo JWT.
Descarga Geth y configura el servicio.
Descargue la última versión de Geth y ejecute el proceso de checksum para asegurarse de que el archivo descargado no haya sido manipulado.
cd
curl -LO https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.14.3-ab48ba42.tar.gz
echo "734653ddbc3a6877cba40583dcaf26f5 geth-linux-amd64-1.14.3-ab48ba42.tar.gz" | md5sum --check

Resultado esperado: verificar el resultado del checksum.
geth-linux-amd64-1.14.3-ab48ba42.tar.gz: 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.
tar xvf geth-linux-amd64-1.14.3-ab48ba42.tar.gz
sudo cp geth-linux-amd64-1.14.3-ab48ba42/geth /usr/local/bin
rm -r geth-linux-amd64-1.14.3-ab48ba42 geth-linux-amd64-1.14.3-ab48ba42.tar.gz
Cree una cuenta ( geth
) sin acceso al servidor para que Geth 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 Geth 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 geth
Cree un directorio para que Geth almacene los datos de blockchain de la capa de ejecución. Luego configure el propietario de este directorio al usuario geth
para que este pueda leer y escribir en el directorio.
sudo mkdir -p /var/lib/geth
sudo chown -R geth:geth /var/lib/geth
Cree un archivo de configuración systemd para que el servicio Geth se ejecute en segundo plano.
sudo nano /etc/systemd/system/geth.service
Pegue los siguientes parámetros de configuración en el archivo:
[Unit]
Description=Geth Execution Client (Holesky)
After=network.target
Wants=network.target
[Service]
User=geth
Group=geth
Type=simple
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/geth \
--holesky \
--datadir=/var/lib/geth \
--authrpc.jwtsecret=/var/lib/jwtsecret/jwt.hex \
--state.scheme=path \
--port 30304 \
--http \
--http.addr <Internal_IP_address> \
--http.port 8547 \
--pprof \
--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 Geth:
--holesky
: Ejecute en la red de prueba Holesky--datadir
: El directorio para que Geth almacene los datos de blockchain de la capa de ejecución.--authrpc.jwtsecret
: El directorio que apunta al JWT que generamos anteriormente.--state.scheme=path
: Utilice la función de almacenamiento de estado basada en rutas de Geth, que es más rápida y se elimina continuamente. Más información aquí--port
: establece el puerto utilizado para la comunicación peer-to-peer. El valor predeterminado es 30303.--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.--http.addr
: establece la dirección IP para conectarse al servicio JSON RPC. Utilice aquí la dirección IP interna de su dispositivo (verifique ejecutandoip a
), por ejemplo192.168.x.x
. El valor predeterminado es127.0.0.1
lo contrario--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.--pprof
: Habilita el servidor pprof HTTP, proporcionando datos de perfilado sobre el proceso Geth. Incluye uso de CPU, asignación de memoria, perfiles de bloqueo, etc. Útil para depurar y optimizar el rendimiento.--metrics
: habilite las métricas de monitoreo en el servicio Geth.
Iniciar Geth
Recargar el systemd para registrar los cambios realizados, inicie Geth y verifique su estado para asegurarse de que se esté ejecutando.
sudo systemctl daemon-reload
sudo systemctl start geth.service
sudo systemctl status geth.service
Resultado esperado: el resultado debería decir que Geth está "active (running)". Presione CTRL-C
para salir y Geth continuará ejecutándose. Geth 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 Geth. Esté atento a cualquier advertencia o error.
sudo apt install ccze -y
sudo journalctl -fu geth -o cat | ccze -A
Resultado esperado:

Presione CTRL-C
para salir.
Si el servicio Geth funciona sin problemas, ahora podemos permitir que se inicie automáticamente al reiniciar el sistema.
sudo systemctl enable geth.service
Resultado esperado:
Created symlink /etc/systemd/system/default.target.wants/geth.service → /etc/systemd/system/geth.service.
Recursos:
Lanzamientos: https://geth.ethereum.org/downloads
Documentación: https://geth.ethereum.org/docs
Discord: https://discord.com/invite/nthXNEv
Last updated