Besu

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 - JRE y Jemalloc

sudo apt-get update
sudo apt -y install openjdk-17-jre libjemalloc-dev

Descarga Besu y configura el servicio

Descargue la última versión de Besu y ejecute el proceso de checksum para asegurarse de que el archivo descargado no haya sido manipulado.

cd
curl -LO https://github.com/hyperledger/besu/releases/download/24.5.2/besu-24.5.2.tar.gz
echo "4049bf48022ae073065b46e27088399dfb22035e9134ed4ac2c86dd8c5b5fbe9 besu-24.5.2.tar.gz" | sha256sum --check

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úrese de verificar el checksum correcto según la versión descargada. Haga clic derecho en el texto vinculado y seleccione "copiar dirección del enlace" para obtener la URL del enlace de descarga curl.

Resultado esperado: verificar el resultado del checksum

besu-24.5.2.tar.gz: OK

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

tar xvf besu-24.5.2.tar.gz
sudo cp -a besu-24.5.2 /usr/local/bin/besu
sudo rm -r besu-24.5.2.tar.gz besu-24.5.2

Cree una cuenta ( besu) sin acceso al servidor para que Besu 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 Besu 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 besu

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

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

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

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

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

[Unit]
Description=Besu Execution Client (Holesky)
Wants=network-online.target
After=network-online.target

[Service]
User=besu
Group=besu
Type=simple
Restart=always
RestartSec=5
Environment="JAVA_OPTS=-Xmx6g"
ExecStart=/usr/local/bin/besu/bin/besu \
  --network=holesky \
  --sync-mode=X_SNAP \
  --data-path=/var/lib/besu \
  --data-storage-format=BONSAI \
  --engine-jwt-secret=/var/lib/jwtsecret/jwt.hex \
  --Xplugin-rocksdb-high-spec-enabled \
  --p2p-port=30304 \
  --rpc-ws-enabled \
  --rpc-ws-host=<internal_IP_address> \
  --rpc-ws-port=8547 \
  --rpc-http-enabled=true \
  --metrics-enabled=true
  
[Install]
WantedBy=multi-user.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 Besu:

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

  2. --sync-mode: Utiliza el modo Snap Sync recomendado para acelerar el tiempo de sincronización. Checkpoint Sync sigue siendo una función de acceso rápida.

  3. --data-path: El directorio donde Besu almacena los datos de blockchain de la capa de ejecución.

  4. --data-storage-format: Bonsai Tries es una política de diseño de almacenamiento de datos diseñada para reducir los requisitos de almacenamiento y aumentar el rendimiento de lectura.

  5. --engine-jwt-secret: El directorio que apunta al JWT que generamos anteriormente.

  6. --Xplugin-rocksdb-high-spec-enabled: Acelera el tiempo de sincronización y el rendimiento. Úselo solo si tiene 32 GB de RAM o más.

  7. --p2p-port:Establece el puerto utilizado para la comunicación peer-to-peer. El valor predeterminado es 30303.

  8. --rpc-ws-enabled: Habilita el servicio JSON-RPC en websocket. Esto es para que los clientes de DVT puedan conectarse a su cliente de ejecución.

  9. --rpc-ws-host: Establece la dirección IP para conectarse al servicio JSON-RPC que utilizará el cliente DVT. Utilice aquí la dirección IP interna de su dispositivo (verifique ejecutando ip a), por ejemplo 192.168.x.x. El valor predeterminado es 127.0.0.1

  10. --rpc-ws-port: Establece el puerto para conectarse al servicio JSON-RPC. 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 8546

  11. --rpc-http-enabled: Habilita el servicio JSON-RPC a través de HTTP. Esto le permite consultar el endpoint del cliente de ejecución directamente para probar el estado de sincronización y el estado general. Dirección IP predeterminada (host) = 127.0.0.1; Puerto predeterminado = 8545

  12. --metrics-enabled: Habilitar métricas de monitoreo en el servicio Besu

Iniciar Besu

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

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

Resultado esperado: El resultado debería decir que Besu está "active (running)". Presione CTRL-C para salir y Besu continuará ejecutándose. Besu debería tardar solo unos minutos en sincronizarse con Holesky.

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

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

Resultado esperado:

Presione CTRL-Cpara salir.

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

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

sudo systemctl enable besu.service

Resultado esperado:

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

Recursos:

  1. Discord: https://discord.gg/consensys (Seleccione el canal Besu)

Last updated