Run Beacon Node + Validator: Nimbus
Nimbus is a client implementation that strives to be as lightweight as possible in terms of resources used. Nimbus has consensus layer clients for Ethereum and Gnosis Chain.
- Nimbus Repo: https://github.com/status-im/nimbus-eth2
- Nimbus Docs: https://nimbus.guide
- Gnosis' Nimbus repo has sample Dockerfiles and configs
- https://github.com/gnosischain/gnosis-nimbus-eth2
The Beacon Node requires an Execution client in order to operate. See Step 2: Run Execution Client for more information.
Option 1: Run as System Process
Nimbus publishes binaries for Linux, Windows, and macOS.
For Gnosis/Chiado, the recommended path is the Gnosis-maintained Nimbus Docker image below, which already includes network-specific configuration.
Option 2: Run using Docker
This tutorial runs Nimbus beacon node and validator on the same container, please make sure you have your generated validator key and jwtsecret before moving to the next step.
1. Folder Structure
Folder structure
/home/$USER/gnosis/
├── jwtsecret/
├── execution/
└── consensus/
├── data/
└── validators/
2. Docker Compose
Modify your Compose file with your favorite text editor and add the consensus container. The file should now look like:
Create docker-compose.yml and insert the configuration below.
version: "3"
services:
execution:
# From Step 2
# ...
consensus:
container_name: consensus
image: ghcr.io/gnosischain/gnosis-nimbus-eth2:latest
restart: unless-stopped
networks:
- gnosis_net
volumes:
- /home/$USER/gnosis/consensus/data:/data
- /home/$USER/gnosis/jwtsecret/jwt.hex:/jwt:ro
- /home/$USER/gnosis/consensus/validators:/validators
ports:
- 9100:9100/tcp
- 9100:9100/udp
command: |
--data-dir=/data
--web3-url=http://execution:8551
--jwt-secret=/jwt
--light-client-data-serve=true
--light-client-data-import-mode=full
--tcp-port=9100
--udp-port=9100
--validators-dir=/validators
--suggested-fee-recipient=${FEE_RECIPIENT}
--graffiti=${GRAFFITI}
--rest
--rest-address=0.0.0.0
--network=gnosis
--history=prune
logging:
driver: "local"
networks:
gnosis_net:
name: gnosis_net
Replace suggested-fee-recipient with your Gnosis address. This fee recipient address will receive tips from user transactions from the block the validator proposed. If not set, the tips will be sent to zero address, that is burnt completely. It is strongly recommended that you configure this value in your setup. Learn more about suggested fee recipient flag in Nimbus docs.
Replace graffiti with your own graffiti. It is an optional field that can be used to add a message to the block by the proposer.
3. Start Containers
Start the consensus layer client listed in the compose file:
cd /home/$USER/gnosis
docker compose up -d
4. Monitor Logs
Check your logs for each service (execution and consensus) with:
- execution
- consensus
docker logs -f --tail 500 execution
docker logs -f --tail 500 consensus
5. Updating your Node
To update, just pull the new images, then stop and restart your services:
cd /home/$USER/gnosis
docker compose pull
docker compose stop
docker compose up -d