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

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 besu
para 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+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 Besu:
--network
: Ejecute en la red de prueba Holesky--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.--data-path
: El directorio donde Besu almacena los datos de blockchain de la capa de ejecución.--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.--engine-jwt-secret
: El directorio que apunta al JWT que generamos anteriormente.--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.--p2p-port:
Establece el puerto utilizado para la comunicación peer-to-peer. El valor predeterminado es 30303.--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.--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 ejecutandoip a
), por ejemplo192.168.x.x
. El valor predeterminado es127.0.0.1
--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--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--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-C
para salir.
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:
Lanzamientos: https://github.com/hyperledger/besu/releases
Documentación: https://besu.hyperledger.org/public-networks
Discord: https://discord.gg/consensys (Seleccione el canal Besu)
Last updated