Nethermind
Nethermind is an Execution layer client developed by the Nethermind team.
Nethermind currently holds the supermajority client position on Gnosis Chain. We suggest considering a switch to Erigon.
Nethermind reference:
There are 2 main options for running Nethermind:
- Option 1: Using Docker
- Option 2: As a system process
Nethermind can be configured to run different types of nodes:
- Full Node (Recommended)
- Archival Node
Ensure the prerequisite steps have been completed in Step 1: Configure Server.
Option 1: Using Docker
1. Folder Structure
Create your folder structure:
mkdir -p /home/$USER/gnosis/execution
mkdir /home/$USER/gnosis/jwtsecret
/home/$USER/gnosis/
├── jwtsecret/
└── execution/
2. Docker Compose
Create a Compose file with your favorite text editor in /home/$USER/gnosis/docker-compose.yml:
Example Docker Compose file
version: "3"
services:
execution:
container_name: execution
image: nethermind/nethermind:latest
restart: always
stop_grace_period: 1m
networks:
- gnosis_net
ports:
- 30303:30303/tcp # p2p
- 30303:30303/udp # p2p
expose:
- 8545 # rpc
- 8551 # engine api
volumes:
- /home/$USER/gnosis/execution:/data
- /home/$USER/gnosis/jwtsecret/jwt.hex:/jwt.hex
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
command: |
--config gnosis
--datadir /data
--log INFO
--JsonRpc.Enabled true
--JsonRpc.Host 0.0.0.0
--JsonRpc.Port 8545
--JsonRpc.EnabledModules [web3,eth,subscribe,net]
--JsonRpc.JwtSecretFile /jwt.hex
--JsonRpc.EngineHost 0.0.0.0
--JsonRpc.EnginePort 8551
--Network.DiscoveryPort 30303
--HealthChecks.Enabled false
--Pruning.CacheMb 2048
logging:
driver: "local"
networks:
gnosis_net:
name: gnosis_net
3. JWT Secret
The JWT secret is a token that allows the EL client to communicate with the CL client, and is required for Nethermind to operate post-merge. We use rand to create a random string, and store the jwt.hex file in /home/$USER/gnosis/jwtsecret/.
Check create JWT section in Step 1: Configure Server.
4. Start Container
Start the Execution layer client listed in the compose file:
cd /home/$USER/gnosis
docker compose up -d
5. Monitor Logs
Check your logs with:
- execution
- consensus
- validator
docker logs -f --tail 500 execution
docker logs -f --tail 500 consensus
docker logs -f --tail 500 validator
6. Updating your Node
To update, just pull the new image, then stop and restart your services:
cd /home/$USER/gnosis
docker compose pull
docker compose stop
docker compose up -d
Option 2: Running as System Process
Installing Nethermind
github.com/nethermindeth/nethermind/releases/latest
Running Nethermind
docs.nethermind.io/get-started/running-node
Windows
# Gnosis Mainnet
./nethermind --config gnosis --JsonRpc.JwtSecretFile path/to/jwt.hex
# Chiado Testnet
./nethermind --config chiado --JsonRpc.JwtSecretFile path/to/jwt.hex
Linux and macOS
# Gnosis Mainnet
nethermind --config gnosis --JsonRpc.JwtSecretFile path/to/jwt.hex
# Chiado Testnet
nethermind --config chiado --JsonRpc.JwtSecretFile path/to/jwt.hex
Nethermind Archival Node
An archival node executes a heavy historical sync verifying all the transactions and keeping all of the historical data. Archive sync is the 'heaviest' and slowest sync mode, and can take 2 - 6 weeks depending on the speed of your IO.
Make sure you have sufficient disk space and IOPS for archive mode. Requirements change frequently by release and network growth.
Edit your /home/$USER/gnosis/docker-compose.yml and change the --config from gnosis to gnosis_archive.
command: |
--config gnosis_archive