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.team/docs/
- Gnosis' Nimbus repo has sample Dockerfiles and configs
- https://github.com/gnosischain/gnosis-nimbus-eth2
Option 1: Run as System Process
We currently do not release Gnosis compatible binaries for Nimbus, nor do we intend to for the time being.
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/
└── validator_key/
2. Docker Compose
Modify your docker-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:
- ./consensus/data:/data
- ${Path_to_jwtsecret}:/jwt:ro
- ${Path_to_keystore}:/validators
ports:
- 9100:9100
- 9100:9100/udp
command: |
--data-dir=/data
--web3-url=http://localhost: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 address}
--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 competely. 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 docker-compose file:
cd /home/$USER/gnosis
docker-compose pull
docker-compose stop
docker-compose up -d